Files
freeCodeCamp/guide/russian/python/functions/index.md
gmal1 5a535dffda clean up the Russian translation/fix link* (#34147)
* the Wikipedia link now points to the Russian Wikipedia page on DRY
2019-08-24 23:19:34 -07:00

140 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: Functions
localeTitle: функции
---
## функции
Функции позволяют вам определить блок инструкций, который может выполняться многократно в вашей программе.
Функции облегчают управление более сложных информационных систем по принципу [DRY / Don't Repeat Yourself](https://ru.wikipedia.org/wiki/Don%E2%80%99t_repeat_yourself) , разработанного для снижения повторения информации.
Хотя Python уже предоставляет множество встроенных функций, таких как `print()` и `len()` , вы также можете определить свои собственные функции для использования в ваших проектах.
Одним из больших преимуществ использования функций в вашем коде является то, что он уменьшает общее количество строк кода в вашем проекте.
### Синтаксис
В Python определение функции имеет следующие функции:
1. Ключевое слово `def`
2. имя функции
3. скобки '()' и входные параметры внутри скобок, хотя входные параметры могут быть опущены.
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
```
* Блок кода, который будет выполнять эта функция должен следовать определение функции и должен быть форматирован так, как показано внизу. [PEP-8] (https://www.python.org/dev/peps/pep-0008/#indentation) рекомендует использовать 4 пробела для форматирования блоков кода.
```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)