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) |