Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
base:syntax [2022/08/10 23:34]
root
— (текущий)
Строка 1: Строка 1:
-<div slide> 
  
-===== Функций, операторы, модули =====  
- 
-==== Функции ==== 
- 
-Функции вызываются стандартно: 
- 
-<sxh python> 
-print("Привет!") 
-</sxh> 
- 
-Могут принимать: 
- 
-<sxh python> 
-# Аргументы по порядку 
-foo(1, 2, "test") 
-</sxh> 
- 
-<sxh python> 
-# Аргументы по имени 
-bar(arg = 2, namedarg = "hello") 
-</sxh> 
- 
-Способы передачи аргументов можно смешивать, но аргументы по порядку должны идти в начале 
- 
-<sxh python> 
-bar(1, 2, arg = 2, namedarg = "hello") # Правильно 
-bar(arg = 2, namedarg = "hello", 1, 2) # Ошибка 
-</sxh> 
- 
-</div> 
-<div slide> 
- 
-Функция может возвращать одно или несколько значений. Если функция не вернула ни одного значения, то считается, что она вернула ''None''. Если возвращаемое значение не было присвоено переменной, то оно теряется. 
- 
-<sxh python> 
-loo(24) 
-</sxh> 
- 
-<sxh python> 
-x = foo(24) 
-</sxh> 
- 
-<sxh python> 
-x,y,t = bar(42) 
-</sxh> 
- 
-</div> 
-<div slide> 
- 
-Функция в Python — переменная специального типа ''function''. Объявление функции можно рассматривать как объявление одноименной переменной: 
- 
-<sxh python> 
-def foo(x, y): 
-    return x + y 
- 
-bar = foo 
- 
-bar(2, 3) # 5 
- 
-def comcall(x, y, fun): 
-    return fun(x, y) 
- 
-comcall(2, 3, foo) # 5 
- 
-</sxh> 
- 
-</div> 
-<div slide> 
- 
-==== Некоторые встроенные функции ==== 
- 
-^ Функция ^ Назначение ^ 
-^ ''len(x)'' | Длина перечисляемого ''x'', например строки, возвращает ''int'' | 
-^ ''abs(x)'' | Абсолютное значение числа ''x'' | 
-^ ''type(x)'' | Тип данных ''x'', возвращает специальный объект — тип | 
-^ ''print(x)'' | Печать на экран ''x'', возвращает ''None'' | 
-^ ''id(x)'' | Возвращает уникальный идентификатор объекта  | 
- 
-</div> 
-<div slide> 
- 
-==== Операторы ==== 
- 
-Об операторах надо думать, как об упрощенной форме записи вызовов функций: 
- 
-<sxh python> 
-y = 1+2*3 # тоже, что и y = __add__(1,__mult__(2,3)) 
-</sxh> 
- 
-Операторы и вызовы функций можно свободно смешивать: 
- 
-<sxh python> 
-y = 2*len(x)+1 
-</sxh> 
- 
-Многие операторы имеют сокращенную форму записи: 
- 
-<sxh python> 
-y = y + 1 
-y += 1 
-</sxh> 
- 
-</div> 
-<div slide> 
- 
-=== Арифметические операторы === 
- 
-^ Оператор ^ Тип данных ^ Действие ^ Пример ^ 
-^ <code>+</code> | <code>bool, int, float</code> | Сложение | <code>2+5</code> | 
-^ <code>+</code> | <code>str, bytes, list</code> | Конкатенация  | <code>"a"+"b"</code> | 
-^ <code>-</code> | <code>bool, int, float</code> | Вычитание | <code>2-5</code> | 
-^ <code>*</code> | <code>bool, int, float</code> | Умножение  | <code>2*5</code> | 
-^ <code>*</code> | <code>str, bytes, list * int</code> | Повторение | <code>"a"*2</code> | 
-^ <code>**</code> | <code>bool, int, float</code> | Возведение в степень | <code>2**5</code> | 
-^ <code>/</code> | <code>bool, int, float</code> | Действительное деление **тип результата всегда ''float''** | <code>2/5</code> | 
-^ <code>//</code> | <code>bool, int, float</code> | Целочисленное деление |<code>2//5</code> | 
-^ <code>%</code> | <code>bool, int, float</code> | Остаток от деления  | <code>2%5</code> | 
-^ <code>%</code> | <code>str, bytes</code> | Операция **подстановки** для ''str'' | <code>"hello %s" % "world"</code> | 
- 
-Python позволяет смешивать переменные разных **числовых** типов в одном выражении, при этом тип результата определяется наиболее содержательным типом. 
- 
-</div> 
-<div slide> 
- 
-=== Некоторые логические операторы === 
- 
-Логические операторы возвращают значения типа ''bool'' и используются, в основном, в качестве различных условий. 
- 
-^ Оператор ^ Действие ^ Пример ^ 
-^ <code>not</code> | Логическое НЕ для ''bool'', возвращает ''bool''| <code>not x</code> | 
-^ <code>and</code> | Логическое И для ''bool'', возвращает ''bool'' | <code>x and y</code> | 
-^ <code>or</code> | Логическое ИЛИ для ''bool'', возвращает ''bool'' | <code>x or y</code> | 
-^ <code>!=, >, <, >=, <=</code>  | Неравенство, возвращает ''bool'', возвращает ''bool'' | <code>x >= y</code> | 
-^ <code>==</code> | Равенство, возвращает ''bool''  |  <code>x == y</code> | 
-^ <code>is</code> | Тождество, возвращает ''bool''  |  <code>x is y</code> | 
-^ <code>~</code> | Логическое НЕ для ''int'', возвращает ''int'' | <code>~ x</code> | 
-^ <code>&</code> | Логическое И для ''int'', возвращает ''int'' | <code>x & y</code> | 
-^ <code>|</code> | Логическое ИЛИ для ''int'', возвращает ''int'' | <code>x | y</code> | 
- 
-</div> 
-<div slide> 
- 
-=== Операторы над составными типами === 
- 
-^ Оператор ^ Действие ^ Пример ^ 
-^ <code>in, not in</code> | Содержание, возвращает ''bool'' | <code>x in data</code> | 
-^ <code>[x]</code> | Индексирование переменных перечислимых типов | <code>data[x]</code> | 
-^ <code>.</code> | Обращение к полю или методу объекта или модуля | <code>data.x, data.foo(2)</code> | 
- 
-Подробнее: [[https://docs.python.org/3/reference/expressions.html]] 
- 
-</div> 
-<div slide> 
- 
-==== Модули ==== 
- 
-  * Почти все функции как стандартной библиотеки, так и и сторонних организованы в модули 
-  * Для подключения модулей используется ключевое слово ''import'' 
-  * Для доступа к методам используется оператор ''.'' 
- 
-<sxh python> 
-import math 
-math.cos(3) # Успешно: вызван метод ''cos'' модуля ''math'' 
-cos(3) # Ошибка: метода ''cos'' неизвестен 
-</sxh> 
- 
-<sxh python> 
-from math import cos 
-cos(3) # Успешно: вызван метод ''cos'' модуля ''math'' 
-</sxh> 
- 
-<sxh python> 
-import math as m 
-m.cos(3) # Успешно: вызван метод ''cos'' модуля ''math'' 
-</sxh> 
- 
-</div> 
-<div slide> 
- 
-==== Собственные модули ==== 
- 
-Аналогично происходит импорт из одного файла в другой: если я хочу вызвать метод ''foo'' из файла ''myfuncs.py'', то мне следует воспользоваться одним из следующих вариантов: 
- 
-<sxh python> 
-import myfuncs 
-myfuncs.foo() 
-</sxh> 
- 
-<sxh python> 
-from myfuncs import foo 
-foo() 
-</sxh> 
- 
-Специальной командой ''from myfuncs import * '' можно импортировать все доступные методы из модуля, но это считается плохим стилем. 
- 
-</div> 
-<div slide> 
- 
-===== Приведение типов ===== 
- 
-Типы автоматически не приводятся. Но типы ''int'', ''float'' и ''bool'' можно смешивать в арифметических выражениях. Результат будет определяться наиболее ёмким типом (''float'' > ''int'' > ''bool''). 
- 
-^  ^  Исходный тип — переменная ''x''  ^^^^^ 
-^ Целевой тип ^ ''bool''  ^ ''int'' ^ ''float'' ^ ''str'' ^ ''bytes'' ^ 
-^ ''bool'' | ''='' |  ''bool(x)'' | ''bool(x)'' | ''bool(x)'' | ''bool(x)'' | 
-^ ''int'' | ''int(x)'' |  ''='' | ''round(x)'', ''math.ceil(x)'', ''math.trunc(x)'' | ''int(x)'' | ''struct.unpack(fmt,x)'' | 
-^ ''float'' | ''float(x)'' | ''float(x)'' | ''='' | ''float(x)'' | ''struct.unpack(fmt,x)'' | 
-^ ''str'' | ''str(x)'' | ''str(x)'' | ''str(x)'' | ''='' | ''x.decode(encoding)'' 
-^ ''bytes'' | ''struct.pack(fmt, x)'' | ''struct.pack(fmt,x)'' | ''struct.pack(fmt,x)'' | ''x.encode(encoding)'' | ''='' | 
- 
- 
-Используются модули ''math'' и ''struct''. 
- 
-</div> 
-<div slide> 
- 
-===== Функции print, input =====  
- 
-Важные глобальные функции для работы в консоли: 
- 
-''print()'' — печатает текст в консоли. Принимает произвольное число аргументов, производного типа, если аргумент не строка, то у него вызывается метод ''%%__str__()%%'', а при отсутствии потом ''%%__repr__()%%'' (есть у всех переменных всех типов). Таким образом ''print'' так или иначе выведет на печать переменную любого типа. 
- 
-<sxh python> 
-a = 25 
-print("тест:", a , "-", 3.158) 
-</sxh> 
-<code> 
-#тест: 25 - 3.158 
-# 
-</code> 
- 
-Дополнительные аргументы: ''sep'' — разделитель, по умолчанию пробел, ''end'' — конец строки, по умолчанию ''\n''. 
- 
-<sxh python> 
-a = 25 
-print("тест:", a , "-", 3.158, sep=";", end="\nконец.\n") 
-</sxh> 
-<code> 
-#тест:;25;-;3.158 
-#конец. 
-# 
-</code> 
- 
-''input'' — запрашивает ввод пользователя, до нажатия Enter. 
- 
-<sxh python> 
-x = input('Введите x:') 
-</sxh> 
- 
-Эта функция всегда возвращает ''str'', если нужно значение другого типа, нужно выполнить явное приведение: 
- 
-<sxh python> 
-x = float(input('Введите x:')) 
-</sxh> 
- 
-</div>