ответвлено от main/python-labs
Tema7/report.md
Этот коммит содержится в:
@@ -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
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user