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

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

@ -2,12 +2,12 @@
Выполнил: Тимошенко А.А. Выполнил: Тимошенко А.А.
Проверил: Козлюк Д.А. Проверил: Козлюк Д.А.
# Пункт 1. ## Пункт 1.
``` ```
>>> import os >>> import os
>>> os.chdir("C:/Users/mapon/OneDrive/Рабочий стол/ПО АС/ТЕМА7") >>> os.chdir("C:/Users/mapon/OneDrive/Рабочий стол/ПО АС/ТЕМА7")
``` ```
# Пункт 2. Создание пользовательской функции. ## Пункт 2. Создание пользовательской функции.
Общий вид: Общий вид:
def <Имя функции>([<Список аргументов >]): def <Имя функции>([<Список аргументов >]):
@ -21,7 +21,7 @@ def <Имя функции>([<Список аргументов >]):
В Python, если функция не содержит оператора return, она автоматически возвращает значение В Python, если функция не содержит оператора return, она автоматически возвращает значение
None. None.
## Пункт 2.1. Функция без аргументов. ### Пункт 2.1. Функция без аргументов.
``` ```
>>> def uspeh(): >>> def uspeh():
"""Подтверждение успеха операции""" """Подтверждение успеха операции"""
@ -52,7 +52,7 @@ uspeh()
при её определении. Это называется docstring или документ-строка. Они используются при её определении. Это называется docstring или документ-строка. Они используются
для написания документации. Она должна быть первой строкой внутри блока. для написания документации. Она должна быть первой строкой внутри блока.
## Пункт 2.2. Функция с аргументами. ### Пункт 2.2. Функция с аргументами.
``` ```
>>> def sravnenie(a, b): >>> def sravnenie(a, b):
"""Сравнение a и b""" """Сравнение a и b"""
@ -74,7 +74,7 @@ python сможет принять любые данные, которые мо
>>> sravnenie("house", "building") >>> sravnenie("house", "building")
house больше building house больше building
``` ```
## Пункт 2.3. Функция с return. ### Пункт 2.3. Функция с return.
``` ```
>>> def logistfun(b, a): >>> def logistfun(b, a):
"""Вычисление логистической функции""" """Вычисление логистической функции"""
@ -88,7 +88,7 @@ house больше building
>>> z >>> z
0.6681877721681662 0.6681877721681662
``` ```
## Пункт 2.4. Сложение для разных типов аргументов. ### Пункт 2.4. Сложение для разных типов аргументов.
``` ```
>>> def slozh(a1, a2, a3, a4): >>> 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) >>> slozh(1, 3.44, 2.0, 7)
13.44 13.44
``` ```
## Пункт 2.5. Функция, реализующая модель некоторого устройства, ### Пункт 2.5. Функция, реализующая модель некоторого устройства,
на вход которого в текущий момент поступает сигнал х, на выходе получается сигнал y: на вход которого в текущий момент поступает сигнал х, на выходе получается сигнал y:
``` ```
>>> def inerz(x,T,ypred): >>> def inerz(x,T,ypred):
@ -182,9 +182,9 @@ x - текущее значение вх.сигнала,
График сохранен в файле с именем Figure_1. График сохранен в файле с именем Figure_1.
# Пункт 3. Функции как объекты. ## Пункт 3. Функции как объекты.
## Пункт 3.1. Получение списка атрибутов объекта-функции. ### Пункт 3.1. Получение списка атрибутов объекта-функции.
``` ```
>>> dir(inerz) >>> dir(inerz)
['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', ['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__',
@ -198,10 +198,10 @@ x - текущее значение вх.сигнала,
' Модель устройства с памятью:\nx- текущее значение вх.сигнала,\n\tT -постоянная времени,\n\typred - предыдущее значение выхода устройства' ' Модель устройства с памятью:\nx- текущее значение вх.сигнала,\n\tT -постоянная времени,\n\typred - предыдущее значение выхода устройства'
>>> help(inerz) >>> help(inerz)
Help on function inerz in module __main__: Help on function inerz in module __main__:
```` ```
Этот атрибут содержит значение docstring, если при инициализации функции она была задана. Этот атрибут содержит значение docstring, если при инициализации функции она была задана.
Если не была, то inerz.__doc__ будет иметь значение None. Если не была, то inerz.__doc__ будет иметь значение None.
```` ```
inerz(x, T, ypred) inerz(x, T, ypred)
Модель устройства с памятью: Модель устройства с памятью:
x- текущее значение вх.сигнала, x- текущее значение вх.сигнала,
@ -222,7 +222,7 @@ inerz(x, T, ypred)
полный путь полный путь
'f' 'f'
``` ```
## Пункт 3.2. Сохранение ссылки на объект-функцию в другой переменной. ### Пункт 3.2. Сохранение ссылки на объект-функцию в другой переменной.
``` ```
>>> n, m = 16, 5; sravnenie(n, m) >>> n, m = 16, 5; sravnenie(n, m)
16 больше 5 16 больше 5
@ -235,7 +235,7 @@ inerz(x, T, ypred)
переменные, как и любые другие объекты. После этого переменная fnkt ссылается на ту же самую переменные, как и любые другие объекты. После этого переменная fnkt ссылается на ту же самую
функцию, что и sravnenie. функцию, что и sravnenie.
## Пункт 3.3. Возможность альтернативного определения функции в программе. ### Пункт 3.3. Возможность альтернативного определения функции в программе.
``` ```
>>> typ_fun = 8 >>> typ_fun = 8
>>> if typ_fun == 1: >>> if typ_fun == 1:
@ -258,9 +258,9 @@ else:
"Функция 2". Функция становится доступной только после того, как интерпретатор достигает "Функция 2". Функция становится доступной только после того, как интерпретатор достигает
строки с её определением. строки с её определением.
# Пункт 4. Аргументы функции. ## Пункт 4. Аргументы функции.
## Пункт 4.1. Возможность использования функции в качестве аргумента другой функции ### Пункт 4.1. Возможность использования функции в качестве аргумента другой функции
``` ```
>>> def fun_arg(fff,a,b,c): >>> def fun_arg(fff,a,b,c):
"""fff-имя функции, используемой """fff-имя функции, используемой
@ -274,7 +274,7 @@ else:
Python передаёт ссылку на объект функции logistfun в переменную fff. Внутри Python передаёт ссылку на объект функции logistfun в переменную fff. Внутри
функции выполняется операция: a + fff(c, b), что эквивалентно -3 + logistfun(0.7, 1) функции выполняется операция: a + fff(c, b), что эквивалентно -3 + logistfun(0.7, 1)
## Пункт 4.2. Обязательные и необязательные аргументы. ### Пункт 4.2. Обязательные и необязательные аргументы.
``` ```
>>> def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1 >>> def logistfun(a,b=1): #Аргумент b – необязательный; значение по умолчанию=1
"""Вычисление логистической функции""" """Вычисление логистической функции"""
@ -286,7 +286,7 @@ Python передаёт ссылку на объект функции logistfun
>>> logistfun(0.7,2) >>> logistfun(0.7,2)
1.3363755443363323 1.3363755443363323
``` ```
## Пункт 4.3. Возможность обращения к функции с произвольным расположением аргументов. ### Пункт 4.3. Возможность обращения к функции с произвольным расположением аргументов.
``` ```
>>> logistfun(b = 0.5, a = 0.8) >>> logistfun(b = 0.5, a = 0.8)
0.34498724056380625 0.34498724056380625
@ -299,7 +299,7 @@ SyntaxError: positional argument follows keyword argument
Python ожидает, что все позиционные аргументы будут переданы первыми, а затем уже Python ожидает, что все позиционные аргументы будут переданы первыми, а затем уже
могут следовать именованные аргументы. могут следовать именованные аргументы.
## Пункт 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже. ### Пункт 4.4. Пример со значениями аргументов функции, содержащимися в списке или кортеже.
``` ```
>>> b1234 = [b1, b2, b3, b4] >>> b1234 = [b1, b2, b3, b4]
>>> b1234 >>> b1234
@ -311,7 +311,7 @@ Python ожидает, что все позиционные аргументы
Со звёздочкой коллекции передаются как набор аргументов функции, Она также называется Со звёздочкой коллекции передаются как набор аргументов функции, Она также называется
"оператор распаковки". Это было бы эквивалентно записи slozh(b1,b2,b3,b4) "оператор распаковки". Это было бы эквивалентно записи slozh(b1,b2,b3,b4)
## Пункт 4.5. Пример со значениями аргументов функции, содержащимися в словаре ### Пункт 4.5. Пример со значениями аргументов функции, содержащимися в словаре
``` ```
>>> dic4 = {"a1": 1, "a2": 2, "a3": 3, "a4": 4} >>> dic4 = {"a1": 1, "a2": 2, "a3": 3, "a4": 4}
>>> qqq = slozh(**dic4) >>> qqq = slozh(**dic4)
@ -327,7 +327,7 @@ Python ожидает, что все позиционные аргументы
>>> slozh(*dic4) >>> slozh(*dic4)
'a1a2a3a4' 'a1a2a3a4'
``` ```
## Пункт 4.6. Смешанные ссылки ### Пункт 4.6. Смешанные ссылки
``` ```
>>> e1 = (-1, 6); dd2 = {'a3': 3, 'a4': 9} >>> e1 = (-1, 6); dd2 = {'a3': 3, 'a4': 9}
>>> qqqq = slozh(*e1,**dd2) >>> qqqq = slozh(*e1,**dd2)
@ -335,7 +335,7 @@ Python ожидает, что все позиционные аргументы
17 17
То есть (-1) + 6 + 3 + 9 = 17 То есть (-1) + 6 + 3 + 9 = 17
``` ```
## Пункт 4.7. Переменное число аргументов у функции. ### Пункт 4.7. Переменное число аргументов у функции.
``` ```
>>> def func4(*kort7): >>> def func4(*kort7):
"""Произвольное число аргументов в составе кортежа""" """Произвольное число аргументов в составе кортежа"""
@ -351,7 +351,7 @@ Python ожидает, что все позиционные аргументы
``` ```
Переменное число аргументов с использованием * упаковывается в кортеж. Переменное число аргументов с использованием * упаковывается в кортеж.
## Пункт 4.8. Комбинация аргументов ### Пункт 4.8. Комбинация аргументов
``` ```
>>> def func4(a, b = 7, *kort7): #Аргументы: a - позиционный, b - по умолчанию + кортеж >>> def func4(a, b = 7, *kort7): #Аргументы: a - позиционный, b - по умолчанию + кортеж
"""Кортеж - сборка аргументов - должен быть последним!""" """Кортеж - сборка аргументов - должен быть последним!"""
@ -391,7 +391,7 @@ Python ожидает, что все позиционные аргументы
Как и всегда, *args всегда должно идти перед **kwargs. Как и всегда, *args всегда должно идти перед **kwargs.
## Пункт 4.9. Изменение значений объектов, используемых в качестве аргументов функции. ### Пункт 4.9. Изменение значений объектов, используемых в качестве аргументов функции.
``` ```
>>> a = 90 >>> a = 90
>>> def func3(b): >>> 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) >>> anfun1 = lambda: 1.5 + math.log10(17.23)
>>> type(anfun1) >>> type(anfun1)
@ -499,7 +499,7 @@ SyntaxError: invalid syntax
``` ```
Аналогично нельзя использовать if-else, но можно использовать тернарный оператор. Аналогично нельзя использовать if-else, но можно использовать тернарный оператор.
## Пункт 5.2. Функции-генераторы ### Пункт 5.2. Функции-генераторы
Иногда в циклах на каждой итерации нужно получать одно из значений. Для этого есть оператор yield. Иногда в циклах на каждой итерации нужно получать одно из значений. Для этого есть оператор yield.
Это похоже на return, но в отличие от return не останавливает полностью выполнение программы. Это похоже на return, но в отличие от return не останавливает полностью выполнение программы.
@ -545,13 +545,13 @@ Traceback (most recent call last):
print(alp.__next__()) print(alp.__next__())
StopIteration StopIteration
``` ```
# Пункт 6. Локализация объектов в функциях. ## Пункт 6. Локализация объектов в функциях.
Все объекты - переменные, коллекции, функции и т.д. - могут быть определены глобально или локально. Все объекты - переменные, коллекции, функции и т.д. - могут быть определены глобально или локально.
Глобально - значит вне всяких функций.Локальные переменные определены внутри функции, и если хочется Глобально - значит вне всяких функций.Локальные переменные определены внутри функции, и если хочется
использовать такую переменную в другой функции, то нужно обрабатывать доступ к ним из других функций. использовать такую переменную в другой функции, то нужно обрабатывать доступ к ним из других функций.
## Пункт 6.1. Примеры ### Пункт 6.1. Примеры
``` ```
>>> glb = 10 >>> glb = 10
>>> def func7(arg): >>> 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 >>> glb # Снова глобальное glb
10 10
``` ```
## Пункт 6.3. Локализация объектов при использовании вложенных функций. ### Пункт 6.3. Локализация объектов при использовании вложенных функций.
``` ```
>>> def func9(arg2,arg3): >>> def func9(arg2,arg3):
def func9_1(arg1): 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']) 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(',') >>> 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 k1,T,k2,Xm,A,F,N=8,5,3,10,2,0.5,1000

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