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

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

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