freeCodeCamp/guide/russian/python/functions/index.md

139 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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