Python: базовые операторы
Программа Python состоит из операторов. Каждый можно рассматривать как действие, которое должен выполнить компьютер.
В самом простом случае оператор Python — это одна строка кода, конец которой означает конец оператора. Простой оператор может, например, вызвать одну функцию:
Переменные
Переменная - это имя для ячейки оперативной памяти, в которой хранится некоторое значение (или целый объект).
Переменная создается при первом присваивании некоторому символу значения.
За раз (т.е., в одной строке) можно присвоить сразу нескольким переменным.
Переменные можно присваивать друг другу. В этом случае, для ячейки памяти как бы создается "второе" имя.
Удалить переменную можно оператором del
. Само значение в ячейке памяти при этом остается. Если на ячейку указывает
другая переменная, то можно продолжить использовать это значение. Если же удаляемая переменная была единственной,
то область памяти будет вскоре освобождено встроенным в Python сборщиком "мусора".
x = 'моя строка'
y = x
del x
print(х) # появится ошибка NameError: name 'x' is not defined
print(y) # напечатает 'моя строка'
Простые типы данных
Если следующие встроенные в язык простые типы данных:
int
- целое числоfloat
- число с плавающей точкойstr
- строкаbool
- булево (логическое) значение
Над простыми типами данных можно выполнять интуитивно-понятные операции.
print(1 / 2) # напечатает 0.5
print('моя' + ' строка') # напечатает 'Моя строка'
print(True and False) # напечатает False
print(True or False) # напечатает True
В некоторых случаях, в одной операции могут встретиться значения разных типов.
print(1 + 1.5) # напечатает 2.5
print(1 + 'строка') # будет ошибка TypeError: unsupported operand type(s) for +: 'int' and 'str'
print(True + 2) # ошибки не будет, напечатает 3, но так лучше не делать)
Приведение типов — это особая операция, которая значение в памяти меняет свой тип с максимально возможным сохранением "сути" своего значения.
# Приведение к типу int
# --------------------------------------------
print(int(1.6)) # напечатает 1
print(int('1')) # напечатает 1
print(int('один')) # ошибка ValueError: invalid literal for int() with base 10: 'один'
print(int('1.6')) # ошибка ValueError: invalid literal for int() with base 10: '1.6'
# Приведение к типу float
# --------------------------------------------
print(float(1)) # напечатает 1.0
print(float('1')) # напечатает 1.0
print(float('1.6')) # напечатает 1.6
print(float('1,6')) # ошибка ValueError: could not convert string to float: '1,6'
# Приведение к типу str
# --------------------------------------------
print(str(1)) # напечатает '1'
print(str(1.6)) # напечатает '1.6'
print(str(True)) # напечатает 'True'
print(str(None)) # напечатает None (о None - ниже)
# Приведение к типу bool
# --------------------------------------------
print(bool(1)) # напечатает True
print(bool(0)) # напечатает False
print(bool(1.6)) # напечатает True
print(bool(0.0)) # напечатает False
print(bool(0.00000001)) # напечатает True
print(bool('строка')) # напечатает True
print(bool('')) # напечатает False
print(bool(None)) # напечатает False (о None - ниже)
Для получения типа, к которому принадлежит значение, используется функция type()
. Для проверки того, является ли значение указанного типа, используется isinstance()
.
Тип для хранения даты (или даты со временем) не является простым в Python. Для работы с ним создан даже отдельный пакет datetime.
None
В Python есть особое значение (константа), которое можно интерпретировать как "отсутствие" значения.
Для проверки того, пусто или нет значение в ячейке нужно использовать ключевое слово is
.
Импорт модулей
Большинство стандартных функций языка, а также все сторонние функции, размещаются в модулях. Чтобы использовать
модуль в текущей программе его нужно импортировать. Для этого служит оператор import
.
Хорошим тоном считается размещение всех операторов импорта в первых строках файла с программой. Если вы работаете с jupyter ноутбуком, то лучшими местами для размещения импортов являются:
- Самая первая ячейка ноутбука. Тут следует размещать те операторы импорты тех модулей, которые используются в более чем одной ячейке ноутбука.
- Первые строки ячейки. Тут следует размещать операторы импорта тех модулей, которые используются только в данной ячейке.
Можно импортировать не только модуль, но и отдельные имена из этого модуля. Например, следующей строчкой
мы говорим, что хотим использовать из модуля pandas
только функцию read_csv
.
В одной строке from .. import ..
можно через запятую указывать несколько имен, которые импортируются из модуля.
from pandas import read_csv, read_excel
from pyspark.sql.types import StructField, StructType, IntegerType, StringType
from pyspark.sql.functions import concat, col, lit
При импорте модулей и имен из них можно задавать алиасы, т.е. короткие и удобные для использования имена.