FilippovDY (FilippovDY) 1 месяц назад
Родитель 43357061de
Сommit 119d69daec

@ -59,7 +59,7 @@ help вывело справку по функции uspeh в модуле main.
16 больше 5
```
Так как мы не указали какой тип данных должна принимать функция, то функция сможет работать с любыми данными, котороые можно сравнить. Если нельзя сравнить, вернется TypeError.
Так как мы не указали какой тип данных должна принимать функция, то функция сможет работать с любыми данными, которые можно сравнить. Если нельзя сравнить, вернется TypeError.
```py
>>> n,m='aaa', 'bbbb';sravnenie(n,m)
aaa меньше bbbb
@ -98,11 +98,12 @@ aaa меньше bbbb
>>> q=slozh(b1,b2,b3,b4) #Сложение списков
>>> q
[1, 2, -1, -2, 0, 2, -1, -1]
>>> c1=(1,2); c2=(-1,-2); c3= (0,2); c4=(-1,-1)
>>> c1=(1,2); c2=(-1,-2); c3= (0,2); c4=(-1,-1)
>>> q=slozh(c1,c2,c3,c4) #Сложение кортежей
>>> q
(1, 2, -1, -2, 0, 2, -1, -1)
q = slozh({1,1}, {2,2}, {"abc"}, {3,3}) # Сложение множеств
Traceback (most recent call last):
File "<pyshell#36>", line 1, in <module>
@ -176,7 +177,7 @@ inerz(x, T, ypred)
ypred - предыдущее значение выхода устройства
```
Этот атрибут __doc__ содержит значение docstring, если при инициализации функции он был задан. Если не был, то inerz.__doc__ будет иметь значение None.
Атрибут __doc__ содержит значение docstring, если при инициализации функции он был задан. Если не был, то inerz.__doc__ будет иметь значение None.
## 3.2 Сохранение ссылки на объект-функции в другой переменной
@ -257,7 +258,7 @@ Python передаёт ссылку на объект функции logistfun
[1, 2, -1, -2, 0, 2, -1, -1]
```
Со звёздочкой коллекции передаются как набор аргументов функции. Это - "оператор распаковки". Это было бы эквивалентно записи slozh(b1,b2,b3,b4).
Со звёздочкой коллекции передаются как набор аргументов функции. * - "оператор распаковки". Это было бы эквивалентно записи slozh(b1,b2,b3,b4).
## 4.5 Пример со значениями аргументов функции, содержащимися в словаре
@ -315,7 +316,7 @@ Python передаёт ссылку на объект функции logistfun
Подобным же образом в списке аргументов функции также можно использовать словарь, предварив его имя двумя звездочками.
```py
>>> def func4(a,b=7,**dct1): #Аргументы: a-позиционный, b- по умолчанию + кортеж
>>> def func4(a,b=7,**dct1): #Аргументы: a-позиционный, b- по умолчанию + словарь
... """Словарь - сборка аргументов - должен быть последним!"""
... smm=0
... smm = sum (dct1.values())
@ -391,7 +392,7 @@ lambda [<Аргумент1>[,<Аргумент2>,…]]:<Возвращаемое
102.36921585741014
```
Вызов лямбда-функции создает объект класса "функция", который потом можно положить в другую переменную и далее вызывать. Это необязательно, если она используется один раз, можно вызвать ее сразу. Внутри лямбда-функции не могут использоваться многострочные выражения, нельзя использовать if-else.
Вызов лямбда-функции создает объект класса "функция". Внутри лямбда-функции не могут использоваться многострочные выражения, нельзя использовать if-else.
## 5.2 Функции-генераторы
@ -456,7 +457,7 @@ __next__ помогает вывести значение, которое yield
```
Внутри функции glb принял значение 8, но глобальная переменная при этом после выполнения
функции значения не поменяла. Это происходит потому, что технически, локальный glb и глобальный glb - это два разных объекта.
функции значения не поменяла. Это происходит потому, что локальный glb и глобальный glb - это два разных объекта.
Пример 2. Ошибка в использовании локального объекта.
```py
@ -476,7 +477,7 @@ Traceback (most recent call last):
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), поэтому выходит ошибка.
Пример 3. Переопределение локализации объекта.
```py
@ -520,7 +521,7 @@ dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__an
>>> hh=func8(glb)
dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'glb', 'func7', 'res', 'func8']) # Глобальное glb
dict_keys(['arg', 'loc1', 'glb']) # Локальное glb
>>> 'glb' in globals().keys()
>>> 'glb' in globals().keys() # Глобально glb
True
```

Загрузка…
Отмена
Сохранить