Переменные в Питоне
На курсе «Программирование на Питоне» мы во многом продолжим изучать то, о чем узнали на вводном курсе, но на гораздо более детальном уровне. И начнем мы этот путь с того, что еще раз взглянем на переменные в Питоне.
Перед прохождением этого занятия рекомендую изучить первый раздел вводного курса или, как минимум, познакомиться с программой Google Colab, которую мы используем в нашей работе, а также повторить основы программирования.
Содержание занятия
- Как объявить переменную в Питоне
- Автоматическое определение типа данных
- Как узнать тип переменной в Питоне
- Присвоение и преобразование типа данных
- Именование переменных
- Подведем итог
- Вопросы для закрепления
Как объявить переменную в Питоне
Создание или объявление переменной в Питоне происходит в тот момент, когда вы присваиваете ей определенное значение. Это очень удобно. Заранее объявлять переменную не требуется.
# можно создать переменную, присвоив ей числовое значение
# кроме того, переменной можно задать строковое (текстовое) значение
y = ‘Я программирую на Питоне’
Я программирую на ПитонеТакже напомню, что в Питоне можно записать значения сразу в несколько переменных или присвоить одно и то же значение нескольким переменным.
# присваиваем разные значения сразу нескольким переменным
a , b , c = ‘Питон’ , ‘C++’ , ‘PHP’
print ( a , b , c )
Питон C++ PHP
# задаем одно и то же значение нескольким переменным
x = y = z = ‘То же самое значение’
print ( x , y , z )
То же самое значение То же самое значение То же самое значениеПомимо этого, список можно «распаковать» (unpack) в несколько переменных:
my_list = [ ‘помидоры’ , ‘огурцы’ , ‘картофель’ ]
a , b , c = my_list
print ( a , b , c )
помидоры огурцы картофельАвтоматическое определение типа данных
При создании и записи данных в переменную Питон попытается автоматически определить тип этих данных. Приведем несколько примеров:
x = 256 # в этом случае переменной x присваивается тип int (целочисленное значение)
y = 0.25 # y становится float (десятичной дробью)
z = ‘Просто текст’ # z становится str (строкой)Это очень важная и удобная особенность, которая выгодно отличает Питон от многих других языков программирования.
Как узнать тип переменной в Питоне
В случае, если вы не уверены в том, к какому типу данных относится переменная, можно воспользоваться функцией type().
# узнаем тип переменных из предыдущего примера
print ( type ( x ) , type ( y ) , type ( z ) )Присвоение и преобразование типа данных
Иногда может быть полезно принудительно присвоить или преобразовать тип данных уже созданной переменной. Начнем с присвоения типа данных:
x = str ( 25 ) # число 25 превратится в строку
y = int ( 25 ) # число 25 останется целочисленным значением
z = float ( 25 ) # число 25 превратится в десятичную дробь
print ( type ( x ) , type ( y ) , type ( z ) )Также тип данных можно изменить.
# преобразуем строку, похожую на целое число, в целое число
print ( type ( int ( ’25’ ) ) )
# или строку, похожую на дробь, в настоящую десятичную дробь
print ( type ( float ( ‘2.5’ ) ) )
# преобразуем дробь в целочисленное значение
# обратите внимание, что округления в большую сторону не происходит
print ( int ( 36.6 ) )
print ( type ( int ( 36.6 ) ) )
# конечно, и целое число, и дробь можно преобразовать в строку
print ( type ( str ( 25 ) ) )
print ( type ( str ( 36.6 ) ) )Возможно, вы спрашиваете себя зачем инженеру машинного обучения в таких деталях разбираться в типах переменных. Одним из наиболее очевидных применений является предварительная обработка данных, поступивших, скажем, в формате строки (str), хотя с точки зрения логики это должно быть целое число (int).
Именование переменных
Напомню, что имя переменной может включать только латинские буквы и цифры, а также символ подчеркивания. Одновременно оно не должно начинаться с цифры. Питон отличает заглавную от строчной буквы. Пробелы и кириллицу использовать нельзя.
Как я не устаю повторять, название переменных должно быть осознанным. Это упростит работу с длинным кодом.
Посмотрим на допустимые названия переменных:
Получить несколько переменных из функции через return
Строго говоря, функция в Python всегда возвращает ОДНО значение. Однако это значение — любого типа. Например — кортеж, который вы можете распаковать указанными способами. Для удобства чтения кода пишут как у вас:
return r1, r2однако точно так же все будет работать, если вы подчеркнете тот факт, что возвращается кортеж явно указав скобки:
return (r1, r2)где-то в PEP-8 рекомендуется первый («ваш») вариант, однако иногда это приводит даже к синтаксическим ошибкам!! Не могу вспомнить где я это видел, но пример такой:
def foo(): l = [1,2,3] a0, *a = l return a0, *aвыдает ошибку, а это :
def foo(): l = [1,2,3] a0, *a = l return (a0, *a)3. Переменные и комментарии в Python
Вы, вероятно, установили Python себе на компьютер и запустили первую программу. Теперь пора узнать, что такое переменные.
Переменные в Python
Переменная – это именованная область памяти, которую можно использовать для хранения данных. Проще говоря, переменная – это контейнер для данных. Данные, хранящиеся в переменной, называются значением. Название переменной в Python должно начинаться с буквенного символа или знака подчеркивания ( _ ) и не должно совпадать с зарезервированными (ключевыми) словами. На самом деле ключевых слов не такое большое количество и в процессе изучения языка Python вы их запомните.
Сложно представить программирование без переменных. Они могут хранить данные разных типов (про типы данных узнаете немного позднее) и размеров.
Несколько простых правил по использованию переменных в Python:
- присваивая значение переменной, данные должны находиться справа от переменной;
- имя переменной может начинаться с буквенного символа или знака подчеркивания;
- чтобы вывести переменную с помощью функции print() , необходимо ее записывать без кавычек внутри круглых скобок.
Например, у нас есть число страниц в учебнике и нужно произвести какие-то вычисления с этим числом:
number_of_pages = 120 # присваиваем значение переменной
number_of_pages = number_of_pages / 2 # делим значение переменной на два
print(number_of_pages) # => 60В этом примере мы делим число страниц в учебнике на два. Здесь мы используем сохраненное число в переменной number_of_pages всего для одного вычисления. Но, если таких вычислений десятки или сотни, то необходимость переменных становится очевидной.
Старайтесь придумывать имена переменных в соответствии с хранимыми в ней данными. Так же используйте символ нижнего подчеркивания ( _ ), чтобы разделить слова в имени переменной:
numberofpages
number_of_pages # так лучше, или нет?Кстати, в Python можно инициализировать сразу несколько переменных:
a, b, c = 1, 'Hello', [1, 2, 3]
Еще раз к переменным вернемся в уроке про типы данных.
Комментарии в Python
Вы уже встречали в примерах символ решетки ( # ). При написании кода часто необходимо оставить поясняющие замечания, т.е. комментарии. В Python есть однострочный комментарий, который начинается с символа решетка ( # ):
# Комментарий
a = 2
b = 1 # переменная b = 1Как видите, комментарий может быть помещен в отдельной строке или на одной строке с кодом – это не важно. В комментарии позволительно указывать любую информацию, так как интерпретатор Python ее игнорирует.
Для создания многострочного комментария можно использовать следующую конструкцию:
''' комментарий
на
несколько строк '''
a = 2""" комментарий
на
несколько строк """
a = 2То есть для создания многострочного комментария в Python необходимо использовать пару из трех подряд одинарных или двойных кавычек.
Часто комментарии в программировании используют, чтобы исключить выполнение одной строчки или блока кода.
Особенности комментариев в примерах сайта Codebra
В примерах сайта Codebra часто используются комментарии, например, чтобы не загромождать код, функция print() упускается. То есть:
a = 2
print(a) # => 2Символ => в комментарии означает, что в консоль будет выведена цифра два. Следующий пример ему эквивалентный.
a = 2
a # => 2Если вы его решите запустить на своем компьютере, то в консоль ничего не будет выведено, так как нет функции print() . То есть вам необходимо дополнить пример функциями print() , где в комментарии встречается последовательность символов => .
В этом уроке вы ближе познакомились с переменными и комментариями и узнали об особенностях в примерах сайта Codebra.
Использование переменных в Python 3
Переменные – очень важная составляющая программы; по сути, это символ (или набор символов), которому присвоено значение и который можно использовать вместо этого значения при написании программы.
Данное руководство ознакомит вас с основами работы с переменными в Python 3.
Что такое переменная?
С технической точки зрения переменная присваивает значению символическое имя или идентификатор. Имя переменной используется для того, чтобы сослаться на сохраненное значение в компьютерной программе.
Переменную можно представить как метку или ярлык с именем, который привязан к значению.
К примеру, у вас есть целое число 103204934813. Вы можете сохранить его в переменной, и тогда вам не придётся постоянно вводить повторно длинное число. Сохраните число в переменной my_int:
По сути, my_int – это ярлык, привязанный к значению 103204934813.
Фраза my_int = 103204934813 – это операция присваивания, которая состоит из следующих частей:
- my_int – имя переменной;
- = – оператор присваивания;
- 103204934813 – значение.
Таким образом, присваивая значению имя, вы инициализируете, или создаёте переменную. После этого можно использовать переменную вместо значения. В Python, в отличие от некоторых других языков программирования, переменные не нужно явно декларировать. То есть, объявив, что my_int равно 103204934813, вы можете просто использовать my_int вместо числа. Попробуйте запустить:
С помощью переменных можно быстро выполнить вычисления. Попробуйте отнять 813 из my_int:
print(my_int — 813)
103204934000В качестве значения переменной можно использовать результат математического уравнения. Попробуйте сложить два числа и сохранить значение их суммы в переменной x:
Как видите, это очень похоже на простейшее школьное уравнение; здесь, как и в алгебре, буквы и другие символы используются для представления чисел и величин в формулах и уравнениях. Синтаксис Python подразумевает, что имя переменной находится слева, а значение – справа.
Выведите значение x:
Python выводит 221, потому что именно это число получается в результате сложения 76 и 145.
В виде переменной можно представить любой тип данных, не только числа.
my_string = ‘Hello, World!’
my_flt = 45.06
my_bool = 5 > 9 #логический оператор оценивает выражение как истинное или ложное
my_list = [‘item_1’, ‘item_2’, ‘item_3’, ‘item_4’] my_tuple = (‘one’, ‘two’, ‘three’)
my_dict =Попробуйте запросить одну из этих переменных. На экране появится значение этой переменной:
my_list = [‘item_1’, ‘item_2’, ‘item_3’, ‘item_4’] print(my_list)
[‘item_1’, ‘item_2’, ‘item_3’, ‘item_4’]Переменная выделяет небольшую область памяти, которая принимает заданное значение.
Правила задания имен переменных
Существует ряд правил, которых следует придерживаться при наименовании переменных.
- Имена переменных не могут содержать пробелов (формально, имя переменной состоит из одного слова).
- Имена переменных могут состоять только из букв, цифр и нижнего подчёркивания (_).
- Имя переменной не может начинаться с цифры.
Для примера рассмотрим правильные и неправильные имена переменных:
Правильно
Неправильно
Выбирая имя для переменной, следует также учитывать регистр: my_int, MY_INT, My_Int и mY_iNt – не одна, а четыре разные переменные.
Примечание: Избегайте похожих имён переменных в рамках одной программы.
Кроме того, имя переменной должно отвечать условиям соглашения. При именовании переменной принято начинать имя со строчной буквы и использовать подчеркивание при разделении слов. Переменная, чье имя начинается с большой буквы или написано в верблюжьем регистре, будет считаться недействительным.
Правильно
Неправильно
Но самое главное правило – это быть последовательным. Если уж вы начали использовать в программе переменные, написанные в верблюжьем стиле, продолжайте следовать этому принципу до конца.
Читайте также: PEP 8 – официальный мануал по кодированию в Python
Переназначение переменной
Значение переменной (что видно из самого понятия) можно изменять.
Возможность переназначения переменной очень важна: это позволяет программе добавлять пользовательские значения в существующие переменные, вернуть переменной прежнее значение и т.п.
Попробуйте задать в переменной x число, а затем переназначить её и задать строку:
x = 76
print(x)
x = «8host»
print(x)
76
8hostЕсли бы программа была написана так:
x = 76
x = «8host»
print(x)в результате на экране появилось бы только второе присвоенное значение, так как это последнее назначение:
Множественное присваивание переменной
Python позволяет присваивать одно значение нескольким переменным одновременно. Таким образом, вы можете инициализировать несколько переменных, а позже переназначить их.
Например, можно задать переменным x, y и z значение 0.
x = y = z = 0
print(x)
print(y)
print(z)
0
0
0Теперь все три переменные имеют одинаковое значение и принадлежат к одной области памяти.
Python также позволяет присваивать несколько значений нескольким переменным в рамках одной строки. Например:
j, k, l = «8host», 1.05, 16
print(j)
print(k)
print(l)
8host
1.05
16Как видите, переменной j было присвоено значение 8host, переменной k 1.05, l – 16.
Эта функция позволяет сократить код, и при этом сохранить его читабельность.
Глобальные и локальные переменные
При использовании переменной в программе важно иметь в виду её область видимости.
Область видимости переменной – это контекст, в котором она доступна в коде данной программы. Не все переменные доступны из всех частей программы: некоторые переменные являются глобальными, а некоторые – локальными.
Глобальные переменные объявлены вне функции, но доступны внутри функции. Локальные переменные объявлены внутри функции.
Рассмотрите пример таких переменных:
#Создайте глобальную переменную
glb_var = «global»
#Определите функцию
def var_function():
lcl_var = «local» #Создайте локальную переменную внутри функции
print(lcl_var)
#Вызовите функцию
var_function()
#Выведите глобальную переменную
print(glb_var)
local
globalПоскольку переменная glb_var является глобальной, мы можем сослаться на неё внутри функции var_function(). Отредактируйте предложенный выше код, чтобы сделать это:
glb_var = «global»
def var_function():
lcl_var = «local»
print(lcl_var)
print(glb_var) #Выводит glb_var внутри функции
var_function()
print(glb_var)
local
global
globalТеперь переменная glb_var выводится дважды: внутри и вне функции.
Попробуйте вызвать локальную переменную вне функции:
glb_var = «global»
def var_function():
lcl_var = «local»
print(lcl_var)
print(lcl_var)
NameError: name ‘lcl_var’ is not definedКак видите, вы не можете вызвать локальную переменную вне функции, так как она существует только внутри функции.
Рассмотрим ещё один пример. Задайте глобальной и локальной переменной одно и то же имя:
num1 = 5 #Глобальная переменная
def my_function():
num1 = 10 #Локальная переменная с таким же именем, num1
num2 = 7 #Локальная переменная
print(num1) #Выведет локальную переменную num1
print(num2) #Выведет локальную переменную num2
#Вызывает my_function()
my_function()
#Выводит глобальную переменную num1
print(num1)
10
7
5Поскольку локальная переменная num1 присвоена внутри функции, при вызове num1 появляется 10. При выводе глобальной переменной num1 (после вызова функции my_function()) появляется значение 5.
Оператор global позволяет определять глобальные переменные Python внутри функции:
def new_blog():
global blog = «8host» #Присваивает глобальную переменную
#Выводит глобальную переменную blog
print(blog)Несмотря на то, что переменная blog была присвоена локально внутри функции new_blog(), она доступна вне функции благодаря оператору global. Потому при вызове print(blog) Python не выдаёт ошибку: переменная существует и вне, и внутри функции.
Примечание: Определение глобальных переменных внутри функции не очень часто используется, поскольку усложняет код.
Также следует помнить о том, что если вы ссылаетесь на переменную внутри функции, не присваивая ей значения, такая переменная будет глобальной. Для того чтобы создать локальную переменную, необходимо присвоить ей значение в теле функции.
Работая с переменными, важно определить, какие из них больше подходят этой программе: глобальные или локальные. Обычно лучше использовать локальные переменные; но если одна переменная используется в нескольких функциях, вы можете инициализировать глобальную переменную. Если вы работаете с переменной только в пределах одной функции или одного класса, лучше использовать её локально.
- Типы данных в Python 3
- Основы работы со строками в Python 3
- Работа с текстовыми файлами в Python 3