139 lines
6.4 KiB
Markdown
139 lines
6.4 KiB
Markdown
---
|
||
title: Functions
|
||
localeTitle: функции
|
||
---
|
||
## функции
|
||
|
||
Функция позволяет вам определить многоразовый блок кода, который может выполняться многократно в вашей программе.
|
||
|
||
Функции позволяют создавать более сложные и [сухие](https://en.wikipedia.org/wiki/Don%27t_repeat_yourself) решения сложных проблем.
|
||
|
||
Хотя Python уже предоставляет множество встроенных функций, таких как `print()` и `len()` , вы также можете определить свои собственные функции для использования в ваших проектах.
|
||
|
||
Одним из больших преимуществ использования функций в вашем коде является то, что он уменьшает общее количество строк кода в вашем проекте.
|
||
|
||
### Синтаксис
|
||
|
||
В Python определение функции имеет следующие функции:
|
||
|
||
1. Ключевое слово `def`
|
||
2. имя функции
|
||
3. paranthesis '()' и внутри входных параметров paranthesis, хотя входные параметры являются необязательными.
|
||
4. двоеточие ':'
|
||
5. некоторый блок кода для выполнения
|
||
6. оператор возврата (необязательно)
|
||
|
||
```python
|
||
# a function with no parameters or returned values
|
||
def sayHello():
|
||
print("Hello!")
|
||
|
||
sayHello() # calls the function, 'Hello!' is printed to the console
|
||
|
||
# a function with a parameter
|
||
def helloWithName(name):
|
||
print("Hello " + name + "!")
|
||
|
||
helloWithName("Ada") # calls the function, 'Hello Ada!' is printed to the console
|
||
|
||
# a function with multiple parameters with a return statement
|
||
def multiply(val1, val2):
|
||
return val1 * val2
|
||
|
||
multiply(3, 5) # prints 15 to the console
|
||
```
|
||
|
||
Функции - это блоки кода, которые можно повторно использовать, вызывая функцию. Это позволяет простое и элегантное повторное использование кода без явного переписывания разделов кода. Это делает код более читаемым, упрощает отладку и ограничивает ошибки ввода.
|
||
|
||
Функции в Python создаются с использованием ключевого слова `def` , за которым следуют имя функции и параметры функции в круглых скобках.
|
||
|
||
Функция всегда возвращает значение. Ключевое слово `return` используется функцией для возврата значения, если вы не хотите возвращать какое-либо значение, значение по умолчанию `None` будет возвращено.
|
||
|
||
Имя функции используется для вызова функции, передающей необходимые параметры в круглых скобках.
|
||
|
||
```python
|
||
# this is a basic sum function
|
||
def sum(a, b):
|
||
return a + b
|
||
|
||
result = sum(1, 2)
|
||
# result = 3
|
||
```
|
||
|
||
Вы можете определить значения по умолчанию для параметров, таким образом Python будет интерпретировать, что значение этого параметра является значением по умолчанию, если ни один не указан.
|
||
|
||
```python
|
||
def sum(a, b=3):
|
||
return a + b
|
||
|
||
result = sum(1)
|
||
# result = 4
|
||
```
|
||
|
||
Вы можете передать параметры в том порядке, который вы хотите, используя имя параметра.
|
||
|
||
```python
|
||
result = sum(b=2, a=2)
|
||
# result = 4
|
||
```
|
||
|
||
Тем не менее, невозможно передать аргумент ключевого слова перед не ключевым словом
|
||
|
||
```Python
|
||
result = sum(3, b=2)
|
||
#result = 5
|
||
result2 = sum(b=2, 3)
|
||
#Will raise SyntaxError
|
||
```
|
||
|
||
Функции также являются объектами, поэтому вы можете назначить их переменной и использовать эту переменную как функцию.
|
||
|
||
```python
|
||
s = sum
|
||
result = s(1, 2)
|
||
# result = 3
|
||
```
|
||
|
||
### Заметки
|
||
|
||
* Если определение функции включает параметры, вы должны указать одинаковое количество параметров при вызове функции.
|
||
|
||
```python
|
||
print(multiply(3)) # TypeError: multiply() takes exactly 2 arguments (0 given)
|
||
|
||
print(multiply('a', 5)) # 'aaaaa' printed to the console
|
||
|
||
print(multiply('a', 'b')) # TypeError: Python can't multiply two strings
|
||
|
||
```
|
||
|
||
* Блок кода, который будет выполнять эта функция, включает все инструкции, отступы внутри функции.
|
||
|
||
```python
|
||
def myFunc():
|
||
print('this will print')
|
||
print('so will this')
|
||
|
||
x = 7
|
||
# the assignment of x is not a part of the function since it is not indented
|
||
|
||
```
|
||
|
||
* Переменные, определенные внутри функции, существуют только в пределах этой функции.
|
||
|
||
```python
|
||
def double(num):
|
||
x = num * 2
|
||
return x
|
||
|
||
print(x) # error - x is not defined
|
||
print(double(4)) # prints 8
|
||
|
||
```
|
||
|
||
\-Python интерпретирует функциональный блок только при вызове функции, а не когда функция определена. Даже если блок определения функции содержит какую-то ошибку, интерпретатор python укажет на это только тогда, когда вызывается функция.
|
||
|
||
|
||
### Дополнительная информация:
|
||
|
||
* [Python 3 Docs: определение функций](https://docs.python.org/3/tutorial/controlflow.html#defining-functions) |