Изменил(а) на 'TEMA7/report.md'

main
TimoshenkoAA 1 неделю назад
Родитель 046ca68850
Сommit cddd379760

@ -2,12 +2,12 @@
Выполнил: Тимошенко А.А.
Проверил: Козлюк Д.А.
# Пункт 1.
## Пункт 1.
```
>>> import os
>>> os.chdir("C:/Users/mapon/OneDrive/Рабочий стол/ПО АС/ТЕМА7")
```
# Пункт 2. Создание пользовательской функции.
## Пункт 2. Создание пользовательской функции.
Общий вид:
def <Имя функции>([<Список аргументов >]):
@ -21,7 +21,7 @@ def <Имя функции>([<Список аргументов >]):
В Python, если функция не содержит оператора return, она автоматически возвращает значение
None.
## Пункт 2.1. Функция без аргументов.
### Пункт 2.1. Функция без аргументов.
```
>>> def uspeh():
"""Подтверждение успеха операции"""
@ -52,7 +52,7 @@ uspeh()
при её определении. Это называется docstring или документ-строка. Они используются
для написания документации. Она должна быть первой строкой внутри блока.
## Пункт 2.2. Функция с аргументами.
### Пункт 2.2. Функция с аргументами.
```
>>> def sravnenie(a, b):
"""Сравнение a и b"""
@ -74,7 +74,7 @@ python сможет принять любые данные, которые мо
>>> sravnenie("house", "building")
house больше building
```
## Пункт 2.3. Функция с return.
### Пункт 2.3. Функция с return.
```
>>> def logistfun(b, a):
"""Вычисление логистической функции"""
@ -88,7 +88,7 @@ house больше building
>>> z
0.6681877721681662
```
## Пункт 2.4. Сложение для разных типов аргументов.
### Пункт 2.4. Сложение для разных типов аргументов.
```
>>> def slozh(a1, a2, a3, a4):
""" Сложение значений четырех аргументов"""
@ -154,7 +154,7 @@ TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> slozh(1, 3.44, 2.0, 7)
13.44
```
## Пункт 2.5. Функция, реализующая модель некоторого устройства,
### Пункт 2.5. Функция, реализующая модель некоторого устройства,
на вход которого в текущий момент поступает сигнал х, на выходе получается сигнал y:
```
>>> def inerz(x,T,ypred):
@ -182,9 +182,9 @@ x - текущее значение вх.сигнала,
График сохранен в файле с именем Figure_1.
# Пункт 3. Функции как объекты.
## Пункт 3. Функции как объекты.
## Пункт 3.1. Получение списка атрибутов объекта-функции.
### Пункт 3.1. Получение списка атрибутов объекта-функции.
```
>>> dir(inerz)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__',
@ -198,10 +198,10 @@ x - текущее значение вх.сигнала,
' Модель устройства с памятью:\nx- текущее значение вх.сигнала,\n\tT -постоянная времени,\n\typred - предыдущее значение выхода устройства'
>>> help(inerz)
Help on function inerz in module __main__:
````
```
Этот атрибут содержит значение docstring, если при инициализации функции она была задана.
Если не была, то inerz.__doc__ будет иметь значение None.
````
```
inerz(x, T, ypred)
Модель устройства с памятью:
x- текущее значение вх.сигнала,
@ -222,7 +222,7 @@ inerz(x, T, ypred)
полный путь
'f'
```
## Пункт 3.2. Сохранение ссылки на объект-функцию в другой переменной.
### Пункт 3.2. Сохранение ссылки на объект-функцию в другой переменной.
```
>>> n, m = 16, 5; sravnenie(n, m)
16 больше 5
@ -235,7 +235,7 @@ inerz(x, T, ypred)
переменные, как и любые другие объекты. После этого переменная fnkt ссылается на ту же самую
функцию, что и sravnenie.
## Пункт 3.3. Возможность альтернативного определения функции в программе.
### Пункт 3.3. Возможность альтернативного определения функции в программе.
```
>>> typ_fun = 8
>>> if typ_fun == 1:
@ -258,9 +258,9 @@ else:
"Функция 2". Функция становится доступной только после того, как интерпретатор достигает
строки с её определением.
# Пункт 4. Аргументы функции.
## Пункт 4. Аргументы функции.
## Пункт 4.1. Возможность использования функции в качестве аргумента другой функции
### Пункт 4.1. Возможность использования функции в качестве аргумента другой функции
```
>>> def fun_arg(fff,a,b,c):
"""fff-имя функции, используемой
@ -274,7 +274,7 @@ else:
Python передаёт ссылку на объект функции logistfun в переменную fff. Внутри
функции выполняется операция: a + fff(c, b), что эквивалентно -3 + logistfun(0.7, 1)
## Пункт 4.2. Обязательные и необязательные аргументы.
### Пункт 4.2. Обязательные и необязательные аргументы.
```
>>> def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1
"""Вычисление логистической функции"""
@ -286,7 +286,7 @@ Python передаёт ссылку на объект функции logistfun
>>> logistfun(0.7,2)
1.3363755443363323
```
## Пункт 4.3. Возможность обращения к функции с произвольным расположением аргументов.
### Пункт 4.3. Возможность обращения к функции с произвольным расположением аргументов.
```
>>> logistfun(b = 0.5, a = 0.8)
0.34498724056380625
@ -299,7 +299,7 @@ SyntaxError: positional argument follows keyword argument
Python ожидает, что все позиционные аргументы будут переданы первыми, а затем уже
могут следовать именованные аргументы.
## Пункт 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже.
### Пункт 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже.
```
>>> b1234 = [b1, b2, b3, b4]
>>> b1234
@ -311,7 +311,7 @@ Python ожидает, что все позиционные аргументы
Со звёздочкой коллекции передаются как набор аргументов функции, Она также называется
"оператор распаковки". Это было бы эквивалентно записи slozh(b1,b2,b3,b4)
## Пункт 4.5. Пример со значениями аргументов функции, содержащимися в словаре
### Пункт 4.5. Пример со значениями аргументов функции, содержащимися в словаре
```
>>> dic4 = {"a1": 1, "a2": 2, "a3": 3, "a4": 4}
>>> qqq = slozh(**dic4)
@ -327,7 +327,7 @@ Python ожидает, что все позиционные аргументы
>>> slozh(*dic4)
'a1a2a3a4'
```
## Пункт 4.6. Смешанные ссылки
### Пункт 4.6. Смешанные ссылки
```
>>> e1 = (-1, 6); dd2 = {'a3': 3, 'a4': 9}
>>> qqqq = slozh(*e1,**dd2)
@ -335,7 +335,7 @@ Python ожидает, что все позиционные аргументы
17
То есть (-1) + 6 + 3 + 9 = 17
```
## Пункт 4.7. Переменное число аргументов у функции.
### Пункт 4.7. Переменное число аргументов у функции.
```
>>> def func4(*kort7):
"""Произвольное число аргументов в составе кортежа"""
@ -351,7 +351,7 @@ Python ожидает, что все позиционные аргументы
```
Переменное число аргументов с использованием * упаковывается в кортеж.
## Пункт 4.8. Комбинация аргументов
### Пункт 4.8. Комбинация аргументов
```
>>> def func4(a, b = 7, *kort7): #Аргументы: a - позиционный, b - по умолчанию + кортеж
"""Кортеж - сборка аргументов - должен быть последним!"""
@ -391,7 +391,7 @@ Python ожидает, что все позиционные аргументы
Как и всегда, *args всегда должно идти перед **kwargs.
## Пункт 4.9. Изменение значений объектов, используемых в качестве аргументов функции.
### Пункт 4.9. Изменение значений объектов, используемых в качестве аргументов функции.
```
>>> a = 90
>>> def func3(b):
@ -460,9 +460,9 @@ TypeError: 'tuple' object does not support item assignment
```
Кортеж - неизменяемая коллекция, так что переназначение значения в таком виде, как здесь, не работает.
# Пункт 5. Специальные типы пользовательских функций
## Пункт 5. Специальные типы пользовательских функций
## Пункт 5.1. Анонимные функции (лямбда-функции).
### Пункт 5.1. Анонимные функции (лямбда-функции).
```
>>> anfun1 = lambda: 1.5 + math.log10(17.23)
>>> type(anfun1)
@ -499,7 +499,7 @@ SyntaxError: invalid syntax
```
Аналогично нельзя использовать if-else, но можно использовать тернарный оператор.
## Пункт 5.2. Функции-генераторы
### Пункт 5.2. Функции-генераторы
Иногда в циклах на каждой итерации нужно получать одно из значений. Для этого есть оператор yield.
Это похоже на return, но в отличие от return не останавливает полностью выполнение программы.
@ -545,13 +545,13 @@ Traceback (most recent call last):
print(alp.__next__())
StopIteration
```
# Пункт 6. Локализация объектов в функциях.
## Пункт 6. Локализация объектов в функциях.
Все объекты - переменные, коллекции, функции и т.д. - могут быть определены глобально или локально.
Глобально - значит вне всяких функций.Локальные переменные определены внутри функции, и если хочется
использовать такую переменную в другой функции, то нужно обрабатывать доступ к ним из других функций.
## Пункт 6.1. Примеры
### Пункт 6.1. Примеры
```
>>> glb = 10
>>> def func7(arg):
@ -624,7 +624,7 @@ glb внутри func8():
```
Здесь мы явно указали, что в функции имеем в виду глобальную переменную, так что она изменилась.
## Пункт 6.2. locals() и globals()
### Пункт 6.2. locals() и globals()
Эти функции возвращают словари, ключами в которых будут имена объектов, являющихся, соответственно,
локальными или глобальными на уровне вызова этих функций.
@ -652,7 +652,7 @@ dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__an
>>> glb # Снова глобальное glb
10
```
## Пункт 6.3. Локализация объектов при использовании вложенных функций.
### Пункт 6.3. Локализация объектов при использовании вложенных функций.
```
>>> def func9(arg2,arg3):
def func9_1(arg1):
@ -676,7 +676,7 @@ loc_func9: dict_keys(['arg2', 'arg3', 'func9_1', 'loc1', 'glb']) # Содерж
glob_func9: dict_keys(['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__annotations__', '__builtins__', 'os', 'uspeh', 'sravnenie', 'n', 'm', 'logistfun', 'v', 'w', 'z', 'slozh', 'b1', 'b2', 'b3', 'b4', 'q', 'dict1', 'dict2', 'dict3', 'dict4', 'inerz', 'sps', 'spsy', 'TT', 'yy', 'xx', 'plt', 'f', 'fnkt', 'typ_fun', 'func', 'fun_arg', 'zz', 'b1234', 'qq', 'dic4', 'qqq', 'e1', 'dd2', 'qqqq', 'func4', 'a', 'func3', 'sps1', 'func2', 'kort', 'anfun1', 'math', 'anfun2', 'anfun3', 'r', 'r1', 'test', 'l', 'func5', 'alp', 'glb', 'func7', 'res', 'func8', 'hh', 'func9'])
```
## Пункт 6.4. Моделирование САУ
### Пункт 6.4. Моделирование САУ
```
>>> znach=input('k1,T,k2,Xm,A,F,N=').split(',')
k1,T,k2,Xm,A,F,N=8,5,3,10,2,0.5,1000

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