6647
Комментарий:
|
← Версия 7 от 2017-08-03 12:47:34 ⇥
8402
|
Удаления помечены так. | Добавления помечены так. |
Строка 13: | Строка 13: |
# функция, перемножающая 3 своих численных аргумента | # функция, перемножающая три параметра |
Строка 18: | Строка 18: |
* Параметры могут быть какого угодно типа, функция всё равно вызовется * Если параметры нельзя перемножить друг на друга, произойдёт исключение * Если можно, вернётся результат, тип которого определяется типом выражения `a*b*c` * Примеры: `1, 2, 3`, `1.1, 2.345, 0`, `"QWE", 2, 4`, `3, ["QWE",RTY"], 2` |
|
Строка 21: | Строка 25: |
* `locals()` и `globals()` * {*} просто вывод |
* `locals()` и `globals()`, что они показывают |
Строка 24: | Строка 27: |
* автоопределение локальных имён; global * {*} |
* автоопределение локальных имён: есть ли связывание в локальном пространстве * `global` |
Строка 35: | Строка 38: |
* {*} функция, возвращающая среднее квадратичное своих аргументов | * {*} функция, возвращающая среднее квадратичное своих параметров |
Строка 40: | Строка 43: |
* Распаковка последовательности при вызове * {*}, в т. ч. `print(*seq)` |
* Распаковка последовательности при вызове: вместо части позиционных параметров можно передать конструкцию `*последовательность` * {*}, например, `print(*seq)` выведет любой список в виде объектов через пробел |
Строка 57: | Строка 60: |
* {*} | * {*} Написать «тупой» модуль, в котором будет один объект-функция и один объект-число, функция должна менять это число. Модуль и функция должны быть документированы {{{#!highlight python3 """Just dummy module that provides nothing |
Строка 59: | Строка 65: |
Variables: Var: dummy variable """ Var = 7 # Dummy variable def Function(a, b): """Set Var to max(2a,3b); return min(3a,2b)""" Var = max(a*2,b*3) return min(a*3,b*2) }}} Получившийся `help(modul)` {{{ Help on module modul: NAME modul DESCRIPTION Just dummy module that provides nothing Variables: Var: dummy variable FUNCTIONS Function(a, b) Set Var to max(2a,3b); return min(3a,2b) DATA Var = 7 FILE /var/home/george/src/modul.py }}} |
Повторное использование кода; пространства имён, методы объектов
Функции (введение)
- Задача повторного использования кода — макросы и подпрограммы
- Функции в Python
- Функция — это запись алгоритма обработки данных, а не преобразование, как в математике
duck typing
- вызов функции — выражение, всегда есть возвращаемое значение — любой объект (например, None)
- возвращаемое значение можно не использовать
- Определение функции, формальные параметры
простые примеры
- Параметры могут быть какого угодно типа, функция всё равно вызовется
- Если параметры нельзя перемножить друг на друга, произойдёт исключение
Если можно, вернётся результат, тип которого определяется типом выражения a*b*c
Примеры: 1, 2, 3, 1.1, 2.345, 0, "QWE", 2, 4, 3, ["QWE",RTY"], 2
- Локальное пространство имён функции
просто вывод dir()
- независимость имён
locals() и globals(), что они показывают
- порядок просмотра пространств
- автоопределение локальных имён: есть ли связывание в локальном пространстве
global
с этого момента и до конца курса каждые модуль/функция/класс в заданиях должны содержать docstring с пояснением, что они делают
Функция — сумма цифр
Используя предыдущую функцию: ввести последовательность, вывести элемент с минимальной суммой цифр
можно с помощью min() — как?
функция — расстояние между точками ( на самом деле есть )
Ввести список пар вида (1,2), (3,4), (100,100) …, найти самые удалённые точки
- Распаковка и запаковка параметров функций
- ничего и нет, только списки
- Функции с переменным количеством параметров
функция, возвращающая среднее квадратичное своих параметров
Распаковка последовательности при вызове: вместо части позиционных параметров можно передать конструкцию *последовательность
{*}, например, print(*seq) выведет любой список в виде объектов через пробел
функция, возвращающая список только целочисленных из всех параметров
Всё остальное про функции — потом, не сегодня
Методы объектов; модули
- Поля объектов, инкапсуляция
dir(объект)
объект.имя_поля
- методы и … поля
Модули, sys.path
- программа на Python как модуль
- встроенная и в среду Python, и в язык Python документация
help()
- документирование собственного кода
- docstring
object.__doc__
Написать «тупой» модуль, в котором будет один объект-функция и один объект-число, функция должна менять это число. Модуль и функция должны быть документированы
Получившийся help(modul)
Help on module modul: NAME modul DESCRIPTION Just dummy module that provides nothing Variables: Var: dummy variable FUNCTIONS Function(a, b) Set Var to max(2a,3b); return min(3a,2b) DATA Var = 7 FILE /var/home/george/src/modul.py
Строки и их методы
- Строковые методы
все (в т. ч. in)
replace()
Python 3.5.3+ (default, Jun 7 2017, 23:23:48) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>> s = "Наш паровоз вперёд летит!" >>> >>> s.replace("паровоз", "самовар") 'Наш самовар вперёд летит!' >>> st = s.replace("паровоз", "самолёт") >>> s 'Наш паровоз вперёд летит!' >>> st 'Наш самолёт вперёд летит!' >>> >>> st.replace("ё", "*") 'Наш самол*т впер*д летит!' >>> # видим, что подменяются _все_ вхождения подстроки
split() и join()
Python 3.5.3+ (default, Jun 7 2017, 23:23:48) [GCC 6.3.0 20170516] on linux Type "help", "copyright", "credits" or "license" for more information. >>> s = "Наш паровоз вперёд летит!" >>> s.split() ['Наш', 'паровоз', 'вперёд', 'летит!'] >>> s.split('р') ['Наш па', 'овоз впе', 'ёд летит!'] >>> # разделительный символ не попадает в список! >>> >>> s 'Наш паровоз вперёд летит!' >>> # как выясняется, s не изменилась >>> >>> s.split('') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: empty separator >>> s.split('!') ['Наш паровоз вперёд летит', ''] >>> s.split('Н') ['', 'аш паровоз вперёд летит!'] >>> s.split('Z') # а если разделителя в строке нет? ['Наш паровоз вперёд летит!'] >>> sep = '+' >>> sep.join(["Sasha", "Masha"]) 'Sasha+Masha' >>> ', '.join(("Veni", "vidi", "vici")) 'Veni, vidi, vici'
хорошо бы сюда ещё пример с конструктором п-ти строчек -- ArsenyMaslennikov 2017-07-31 03:56:18
Ввести строку, заменить в ней последовательности "-" на один минус
Ввести запрещённое сочетание букв и строку. Вывести строку, в которой запрещённое сочетание букв не встречается
(например, "ab" и "aabbcaabbb" → "cb")
Списки и их методы
- все методы
- стек, суть pop()/push(), эффективность
- очередь и deque()
Функция, возвращающая список всех делителей числа
Функция списка, убирающая из списка подряд идущие одинаковые элементы
Для уверенных в себе: То же, но повторять, пока таких групп не останется.