@ -59,7 +59,7 @@ help вывело справку по функции uspeh в модуле main.
16 больше 5
16 больше 5
```
```
Так как мы не указали какой тип данных должна принимать функция, то функция сможет работать с любыми данными, котороые можно сравнить. Если нельзя сравнить, вернется TypeError.
Так как мы не указали какой тип данных должна принимать функция, то функция сможет работать с любыми данными, которые можно сравнить. Если нельзя сравнить, вернется TypeError.
Этот атрибут __doc__ содержит значение docstring, если при инициализации функции он был задан. Если не был, то inerz.__doc__ будет иметь значение None.
Атрибут __doc__ содержит значение docstring, если при инициализации функции он был задан. Если не был, то inerz.__doc__ будет иметь значение None.
## 3.2 Сохранение ссылки на объект-функции в другой переменной
## 3.2 Сохранение ссылки на объект-функции в другой переменной
@ -257,7 +258,7 @@ Python передаёт ссылку на объект функции logistfun
[1, 2, -1, -2, 0, 2, -1, -1]
[1, 2, -1, -2, 0, 2, -1, -1]
```
```
Со звёздочкой коллекции передаются как набор аргументов функции. Это - "оператор распаковки". Это было бы эквивалентно записи slozh(b1,b2,b3,b4).
Со звёздочкой коллекции передаются как набор аргументов функции. * - "оператор распаковки". Это было бы эквивалентно записи slozh(b1,b2,b3,b4).
## 4.5 Пример со значениями аргументов функции, содержащимися в словаре
## 4.5 Пример со значениями аргументов функции, содержащимися в словаре
@ -315,7 +316,7 @@ Python передаёт ссылку на объект функции logistfun
Подобным же образом в списке аргументов функции также можно использовать словарь, предварив его имя двумя звездочками.
Подобным же образом в списке аргументов функции также можно использовать словарь, предварив его имя двумя звездочками.
```py
```py
>>> def func4(a,b=7,**dct1): #Аргументы: a-позиционный, b- по умолчанию + кортеж
>>> def func4(a,b=7,**dct1): #Аргументы: a-позиционный, b- по умолчанию + словарь
... """Словарь - сборка аргументов - должен быть последним!"""
... """Словарь - сборка аргументов - должен быть последним!"""
Вызов лямбда-функции создает объект класса "функция", который потом можно положить в другую переменную и далее вызывать. Это необязательно, если она используется один раз, можно вызвать ее сразу. Внутри лямбда-функции не могут использоваться многострочные выражения, нельзя использовать if-else.
Вызов лямбда-функции создает объект класса "функция". Внутри лямбда-функции не могут использоваться многострочные выражения, нельзя использовать if-else.
## 5.2 Функции-генераторы
## 5.2 Функции-генераторы
@ -456,7 +457,7 @@ __next__ помогает вывести значение, которое yield
```
```
Внутри функции glb принял значение 8, но глобальная переменная при этом после выполнения
Внутри функции glb принял значение 8, но глобальная переменная при этом после выполнения
функции значения не поменяла. Это происходит потому, что технически, локальный glb и глобальный glb - это два разных объекта.
функции значения не поменяла. Это происходит потому, что локальный glb и глобальный glb - это два разных объекта.
Пример 2. Ошибка в использовании локального объекта.
Пример 2. Ошибка в использовании локального объекта.
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
UnboundLocalError: cannot access local variable 'glb' where it is not associated with a value
```
```
Переменной glb присваивается значение внутри функции. Поэтому python решает, что glb - это локальная переменная для всей функции. Но когда выполнение доходит до строки 3 print(glb), локальная переменная glb еще не была инициализирована (это происходит только в строке 4).
Переменной glb присваивается значение внутри функции. Поэтому python решает, что glb - это локальная переменная для всей функции. Но когда выполнение доходит до строки 3 print(glb), локальная переменная glb еще не была инициализирована (это происходит только в строке 4), поэтому выходит ошибка.