Вступление
Variables - важная концепция программирования, которую необходимо освоить. По сути, это символы, обозначающие значение, которое вы используете в программе.
В этом руководстве будут рассмотрены некоторые основы переменных и их наилучшее использование в создаваемых вами программах Python 3.
Понимание переменных
В технических терминах переменная назначает место хранения для значения, которое связано с символическим именем или идентификатором. Имя переменной используется для ссылки на это сохраненное значение в компьютерной программе.
Вы можете думать о переменной как о метке с именем, которое вы привязываете к значению:
Допустим, у нас есть целое число103204934813
, и мы хотим сохранить его в переменной, а не постоянно набирать длинное число снова и снова. Вместо этого давайте воспользуемся чем-нибудь, что легко запомнить, например, переменнойmy_int
:
my_int = 103204934813
Если мы будем думать о нем как о ярлыке, привязанном к значению, он будет выглядеть примерно так:
На метке написано имя переменнойmy_int
, и она привязана к целочисленному значению103204934813
.
Фразаmy_int = 103204934813
- этоassignment statement, состоящая из нескольких частей:
-
имя переменной (
my_int
) -
assignment operator, также известный как знак равенства (
=
) -
значение, которое привязывается к имени переменной (
103204934813
)
Вместе эти три части составляют оператор, который устанавливает переменнуюmy_int
равной значению целого числа103204934813
.
Как только мы устанавливаем переменную равной значению, мыinitialize или создаем эту переменную. Как только мы это сделаем, мы будем использовать переменную вместо значения. В Python переменные не требуют явного объявления перед использованием, как некоторые языки программирования; Вы можете начать использовать переменную прямо сейчас.
Как только мы установимmy_int
равным значению103204934813
, мы сможем использоватьmy_int
вместо целого числа, так что давайте распечатаем его:
print(my_int)
Output103204934813
Используя переменные, мы можем быстро и легко выполнитьmath. Используяmy_int = 1040
, вычтем целое значение 813:
print(my_int - 813)
Output103204934000
В этом примере Python выполняет вычисления за нас, вычитая 813 из переменнойmy_int
, чтобы вернуть сумму103204934000
.
Говоря о математике, переменные могут быть установлены равными результату математического уравнения. Давайте сложим два числа и сохраним значение суммы в переменнойx
:
x = 76 + 145
Приведенный выше пример может выглядеть как то, с чем вы уже знакомы: алгебра. В алгебре буквы и другие символы используются для представления чисел и величин в формулах и уравнениях, так же, как переменные являются символическими именами, которые представляют значение типа данных. Для правильного синтаксиса Python вам необходимо убедиться, что ваша переменная находится слева от любых уравнений.
Давайте продолжим и напечатаемx
:
print(x)
Output221
Python вернул значение221
, потому что переменнаяx
была установлена равной сумме76
и145
.
Переменные могут представлять любой тип данных, а не только целые числа:
my_string = 'Hello, World!'
my_flt = 45.06
my_bool = 5 > 9 #A Boolean value will return either True or False
my_list = ['item_1', 'item_2', 'item_3', 'item_4']
my_tuple = ('one', 'two', 'three')
my_dict = {'letter': 'g', 'number': 'seven', 'symbol': '&'}
Если вы напечатаете любую из перечисленных выше переменных, Python вернет то, чему эквивалентна эта переменная. Например, давайте поработаем с оператором присваивания дляlist data type выше:
my_list = ['item_1', 'item_2', 'item_3', 'item_4']
print(my_list)
Output['item_1', 'item_2', 'item_3', 'item_4']
Мы передали значение списка['item_1', 'item_2', 'item_3', 'item_4']
переменнойmy_list
, а затем использовали функциюprint()
, чтобы распечатать это значение, вызвавmy_list
.
Переменные работают, вырезая небольшую область памяти на вашем компьютере, которая принимает определенные значения, которые затем связываются с этим пространством.
Переменные именования: правила и стиль
Именование переменных довольно гибкое, но следует помнить о некоторых правилах:
-
Имена переменных должны быть только одним словом (как без пробелов)
-
Имена переменных должны состоять только из букв, цифр и символа подчеркивания (
_
) -
Имена переменных не могут начинаться с цифры
Следуя приведенным выше правилам, давайте рассмотрим как действительные, так и недействительные имена переменных:
действительный | Недействительным | Почему недействительный |
---|---|---|
my_int |
my-int |
Дефисы не допускаются |
int4 |
4int |
Не может начинаться с числа |
MY_INT |
$MY_INT |
Нельзя использовать символы кроме |
другой_инт |
другой int |
Не может быть больше одного слова |
При именовании переменных следует помнить о том, что они чувствительны к регистру, что означает, чтоmy_int
,MY_INT
,My_Int
иmY_iNt
- это совершенно разные переменные. Вам следует избегать использования одинаковых имен переменных в программе, чтобы гарантировать, что и вы, и ваши нынешние и будущие соавторы могут сохранять ваши переменные прямыми.
Напоследок несколько заметок о стиле. Условно говоря, при именовании переменных принято начинать их со строчной буквы и использовать подчеркивание при разделении слов. Начиная с заглавной буквы, недопустимо, и некоторые люди могут предпочесть camelCase или смешанные заглавные и строчные буквы при написании своих переменных, но это менее традиционный выбор.
Обычный стиль | Нетрадиционный стиль | Почему нетрадиционный |
---|---|---|
my_int |
myInt |
верблюд |
int4 |
Int4 |
Первая буква верхнего регистра не является условной |
my_first_string |
myFirstString |
верблюд |
Самый важный выбор стиля, который вы можете сделать, - это быть последовательным. Если вы начинаете работать над существующим проектом, который использует camelCase в качестве имен переменных, то лучше продолжать использовать существующий стиль.
PEP 8 - это официальное руководство по стилю кода Python, в котором рассматриваются многие стилистические вопросы, которые могут у вас возникнуть в отношении Python. В целом, удобочитаемость и последовательность предпочтительнее других стилистических проблем.
Переназначение переменных
Как следует из словаvariable, переменные Python можно легко изменить. Это означает, что вы можете легко связать другое значение с ранее назначенной переменной с помощью простого переназначения.
Возможность переназначения полезна, потому что на протяжении всей программы вам может потребоваться принять сгенерированные пользователем значения в уже инициализированные переменные или вам придется изменить присвоение на то, что вы ранее определили.
Знание того, что вы можете легко и просто переназначить переменную, также может быть полезно в ситуациях, когда вы можете работать над большой программой, которая была начата кем-то другим, и вы еще не знаете, что уже было определено.
Давайте сначала назначимx
как целое число, а затем переназначим его какstring:
#Assign x to be an integer
x = 76
print(x)
#Reassign x to be a string
x = "Sammy"
print(x)
Output76
Sammy
Приведенный выше пример показывает, что мы можем сначала присвоить переменнойx
и присвоить ей значение целого числа, а затем переназначить переменнуюx
, присвоив ей на этот раз значение строки.
Если мы переписали программу так:
x = 76
x = "Sammy"
print(x)
Мы получили бы только второе назначенное значение в качестве вывода, так как это было самое последнее назначение:
OutputSammy
Переназначение переменных может быть полезно в некоторых случаях, но вы захотите знать о читабельности вашего кода и постараться сделать вашу программу максимально понятной.
Множественное назначение
С Python вы можете назначить одно значение нескольким переменным одновременно. Это позволяет вам инициализировать несколько переменных одновременно, которые вы можете переназначить позже в программе самостоятельно или с помощью пользовательского ввода.
Посредством множественного присваивания вы можете установить переменныеx
,y
иz
на значение целого числа0
:
x = y = z = 0
print(x)
print(y)
print(z)
Output0
0
0
В этом примере все три переменные (x
,y
иz
) присвоены одной и той же ячейке памяти. Каждый из них равен значению 0.
Python также позволяет назначать несколько значений нескольким переменным в одной строке. Каждое из этих значений может иметь другой тип данных:
j, k, l = "shark", 2.05, 15
print(j)
print(k)
print(l)
Outputshark
2.05
15
В приведенном выше примере переменнаяj
была назначена строке"shark"
, переменнаяk
была назначена float2.05
, а переменнаяl
была присвоено целому числу15
.
Такой подход к присвоению нескольких переменных нескольким значениям в одной строке может уменьшить количество строк кода, но убедитесь, что вы не ставите под угрозу удобочитаемость для меньшего количества строк кода.
Глобальные и локальные переменные
При использовании переменных в программе важно помнить оvariable scope. Область действия переменной относится к конкретным местам, в которых она доступна в коде данной программы. Это означает, что не все переменные доступны из всех частей данной программы - некоторые переменные будут глобальными, а некоторые локальными.
Global variables существуют внеfunctions. Local variables существуют внутри функций.
Давайте посмотрим на глобальные и локальные переменные в действии:
#Create a global variable, outside of a function
glb_var = "global"
#Define a function
def var_function():
lcl_var = "local" #Create a local variable, inside function
print(lcl_var)
#Call function to print local variable
var_function()
#Print global variable outside function
print(glb_var)
Outputlocal
global
Вышеупомянутая программа назначает глобальную переменнуюglb_var
вне какой-либо функции, а затем определяет функциюvar_function()
. Внутри функции назначается и распечатывается локальная переменнаяlcl_var
. Программа заканчивается вызовомvar_function()
и последующей печатьюglb_var
.
Посколькуglb_var
- глобальная переменная, мы можем ссылаться на нее вvar_function()
. Давайте изменим небольшую программу выше, чтобы сделать это:
glb_var = "global"
def var_function():
lcl_var = "local"
print(lcl_var)
print(glb_var) #Print glb_var within function
var_function()
print(glb_var)
Outputlocal
global
global
Теперь у нас есть дважды распечатанная глобальная переменнаяglb_var
, потому что она выводится как функцией, так и вне функции.
Что если мы попытаемся вызвать локальную переменную вне функции?
glb_var = "global"
def var_function():
lcl_var = "local"
print(lcl_var)
print(lcl_var)
OutputNameError: name 'lcl_var' is not defined
Мы не можем использовать локальную переменную вне функции, для которой она назначена. Если мы попытаемся это сделать, мы получим взаменNameError
.
Давайте посмотрим на другой пример, где мы используем одно и то же имя переменной для глобальной переменной и локальной переменной:
num1 = 5 #Global variable
def my_function():
num1 = 10 #Use the same variable name num1
num2 = 7 #Assign local variable
print(num1) #Print local variable num1
print(num2) #Print local variable num2
#Call my_function()
my_function()
#Print global variable num1
print(num1)
Output10
7
5
Поскольку локальная переменнаяnum1
назначается локально внутри функции, когда мы вызываем эту функцию, мы видим, чтоnum1
равно локальному значению10
. Когда мы распечатываем глобальное значениеnum1
после вызоваmy_function()
, мы видим, что глобальная переменнаяnum1
по-прежнему равна значению5
.
Можно назначить глобальные переменные внутри функции с помощью оператора Pythonglobal
:
def new_shark():
#Assign variable as global
global shark
shark = "Sammy"
#Call new_shark() function
new_shark()
#Print global variable shark
print(shark)
Несмотря на то, что переменнаяshark
была назначена локально в функцииnew_shark()
, она доступна вне функции из-за оператораglobal
, используемого перед назначением переменной в функции. Из-за этого оператораglobal
, когда мы вызываемprint(shark)
вне функции, мы не получаем ошибки. Хотя выcan назначаете глобальную переменную внутри функции, вам, вероятно, не нужно будет делать это часто, и вы должны ошибиться на стороне читаемого кода.
Следует также помнить, что если вы ссылаетесь на переменную внутри функции, не присваивая ей значение, эта переменная неявно является глобальной. Чтобы иметь локальную переменную, вы должны присвоить ей значение в теле функции.
При работе с переменными важно решить, будет ли более целесообразным использовать глобальную или локальную переменную. Обычно лучше хранить переменные локальными, но когда вы используете одну и ту же переменную в нескольких функциях, вы можете инициализировать глобальную переменную. Если вы работаете с переменной только в рамках одной функции или одногоclass, вы, вероятно, захотите использовать вместо нее локальную переменную.
Заключение
В этом руководстве были рассмотрены некоторые распространенные случаи использования переменных в Python 3. Переменные являются важным строительным блоком программирования, они служат символами, которые заменяют значениеdata type, которое вы используете в программе.