如何在 Python 3 中使用变量

介绍

变量是一个重要的编程概念,它们基本上是代表你在程序中使用的值的符号。

本教程将涵盖一些变量基础知识,以及如何在您创建的Python 3程序中最好地使用它们。

前提条件

如果您没有设置编程环境,您可以参考本地编程环境的安装和安装指南(https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-python-3)或适用于您的操作系统(Ubuntu, CentOS, Debian 等)的编程环境(https://www.digitalocean.com/community/tutorial_collections/how-to-install-python-3-and-set-up-a-programming-environment)。

变量理解

从技术上讲,变量是将存储位置分配给与象征名称或标识符相关的值,而变量名称则用于参考计算机程序中的存储值。

您可以将变量视为具有名称的标签,您将其绑定到一个值:

Variables in Python

假设我们有一个整数,‘103204934813’,我们希望将其存储在变量中,而不是不断地重写长数一遍又一遍。

<$>[info] Info: 要跟进本教程中的示例代码,请在本地系统上运行python3命令,打开Python互动壳。

1my_int = 103204934813

如果我们把它看成是与价值相关的标签,它会看起来像这样:

Python Variable Example

标签上写着变量名为my_int,并与整数值103204934813相关联。

句子 my_int = 103204934813 是一个 **分配声明,由几个部分组成:

  • 变量名称(my_int)
  • 分配运算符,也称为等级符号(=)
  • 与变量名称(103204934813)关联的值

这些三个部分共同构成定义变量my_int等于整数值103204934813的陈述。

一旦我们设置一个等于一个值的变量,我们 初始化或创建该变量. 一旦我们这样做,我们将设置为使用变量而不是值。

一旦我们将my_int设置为103204934813的值,我们就可以使用my_int代替整数,所以让我们打印出来:

1print(my_int)
1[secondary_label Output]
2103204934813

使用变量,我们可以快速轻松地做 数学。 用 my_int = 103204934813,让我们从整数值813中提取:

1print(my_int - 813)
1[secondary_label Output]
2103204934000

在本示例中,Python为我们做数学,从my_int变量中扣除813来返回103204934000的总和。

谈到数学,可将变量设置为等于数学方程的结果,让我们加上两个数字,并将总值存储在变量x中:

1x = 76 + 145

在算法中,字母和其他符号被用来代表公式和方程式中的数字和数量,就像变量是代表数据类型的值的象征名称一样。

让我们继续前进,打印x:

1print(x)
1[secondary_label Output]
2221

Python 返回221值,因为变量x被设置为76145的总和。

变量可以代表任何数据类型,而不仅仅是整数:

1my_string = 'Hello, World!'
2my_flt = 45.06
3my_bool = 5 > 9 #A Boolean value will return either True or False
4my_list = ['item_1', 'item_2', 'item_3', 'item_4']
5my_tuple = ('one', 'two', 'three')
6my_dict = {'letter': 'g', 'number': 'seven', 'symbol': '&'}

如果您打印了上述任何一个变量,Python 将返回该变量等同的值,例如,让我们使用上面的 列表数据类型的分配语句:

1my_list = ['item_1', 'item_2', 'item_3', 'item_4']
2print(my_list)
1[secondary_label Output]
2['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,My_IntmY_iNt都是完全不同的变量。

最后,一些关于风格的注意事项. 传统上说,在命名变量时,通常是用较低的字母开始它们,并在分开单词时使用突出点。

Conventional StyleUnconventional StyleWhy Unconventional
my_intmyIntcamelCase not conventional
int4Int4Upper-case first letter not conventional
my_first_stringmyFirstStringcamelCase not conventional

如果您开始在使用 camelCase 变量名称的现有项目上工作,那么最好继续使用现有风格。

PEP 8是官方的Python代码风格指南,它解决了您可能对Python有许多风格问题。

变量重新分配

正如字 variable 所暗示的那样,Python 变量可以很容易地更改,这意味着通过重新分配可以很容易地将不同的值与先前分配的变量连接起来。

能够重新分配是有用的,因为在整个程序中,您可能需要将用户生成的值接受为已经初始化的变量,或者可能需要将分配更改为您之前定义的某些值。

知道你可以轻松地和轻松地重新分配变量,也可以在你可能正在开发一个由其他人开始的大型程序的情况下有用,而你还不清楚已经定义了什么。

让我们先将x分配为整数,然后将其重新分配为(https://www.digitalocean.com/community/tutorial_series/working-with-strings-in-python-3):

1#Assign x to be an integer
2x = 76
3print(x)
4
5#Reassign x to be a string
6x = "Sammy"
7print(x)
1[secondary_label Output]
276
3Sammy

上面的例子表明,我们可以先分配变量x,并与整数的值分配它,然后再分配变量x,这一次分配它与字符串的值。

如果我们以这种方式重写程序:

1x = 76
2x = "Sammy"
3print(x)

我们只会收到第二个分配值作为输出,因为这是最新的分配:

1[secondary_label Output]
2Sammy

在某些情况下,重新分配变量可能有用,但您将想知道您的代码的可读性,并努力使您的程序尽可能清晰。

多重分配

使用Python,您可以同时将一个单个值分配给多个变量,这允许您同时初始化多个变量,您可以在程序中自己或通过用户输入重新分配。

通过多个分配,您可以将变量xyz设置为整数0的值:

1x = y = z = 0
2print(x)
3print(y)
4print(z)
1[secondary_label Output]
20
30
40

在本示例中,所有三个变量(x, yz)都分配到相同的内存位置,每个变量均等于0的值。

Python 还允许您将多个值分配给相同行内的多个变量,这些值中的每一个都可能是不同的数据类型:

1j, k, l = "shark", 2.05, 15
2print(j)
3print(k)
4print(l)
1[secondary_label Output]
2shark
32.05
415

在上面的示例中,变量j被分配到字符串鲨鱼,变量k被分配到浮动2.05,变量l被分配到整数15

将多个变量分配到一个行中的多个值的这种方法可以使您的代码行保持低调,但确保您不会损害更少的代码行的可读性。

全球和本地变量

当在程序中使用变量时,重要的是要记住 变量范围。变量范围是指它在特定程序代码中可访问的特定位置。

全球变量存在于函数之外(https://andsky.com/tech/tutorials/how-to-define-functions-in-python-3)。 本地变量存在于函数内。

让我们来看看行动中的全球和本地变量:

 1#Create a global variable, outside of a function
 2glb_var = "global"
 3
 4#Define a function
 5def var_function():
 6    lcl_var = "local" #Create a local variable, inside function
 7    print(lcl_var)
 8
 9#Call function to print local variable
10var_function()
11
12#Print global variable outside function
13print(glb_var)
1[secondary_label Output]
2local
3global

上面的程序将全球变量 glb_var 分配到任何函数之外,然后定义函数 var_function(). 在函数内分配一个名为 lcl_var 的本地变量,然后打印出来。

因为‘glb_var’是一个全球变量,所以我们可以在‘var_function()’中引用它。

1glb_var = "global"
2
3def var_function():
4    lcl_var = "local"
5    print(lcl_var)
6    print(glb_var) #Print glb_var within function
7
8var_function()
9print(glb_var)
1[secondary_label Output]
2local
3global
4global

现在我们有全球变量 glb_var 打印两次,因为它是由函数和函数之外打印的。

如果我们试图在函数之外调用本地变量呢?

1glb_var = "global"
2
3def var_function():
4    lcl_var = "local"
5    print(lcl_var)
6
7print(lcl_var)
1[secondary_label Output]
2NameError: name 'lcl_var' is not defined

我们无法使用其分配的函数以外的本地变量,如果我们尝试这样做,我们将收到一个NameError作为回报。

让我们看看另一个例子,我们使用相同的变量名称为全球变量和本地变量:

 1num1 = 5 #Global variable
 2
 3def my_function():
 4    num1 = 10 #Use the same variable name num1
 5    num2 = 7 #Assign local variable
 6
 7    print(num1) #Print local variable num1
 8    print(num2) #Print local variable num2
 9
10#Call my_function()
11my_function()
12
13#Print global variable num1
14print(num1)
1[secondary_label Output]
210
37
45

由于num1的本地变量在函数内被本地分配,所以当我们调用该函数时,我们会看到num1等于10的本地值。

通过使用Python的全球语句来分配函数中的全球变量:

 1def new_shark():
 2    #Assign variable as global
 3    global shark
 4    shark = "Sammy"
 5
 6#Call new_shark() function
 7new_shark()
 8
 9#Print global variable shark
10print(shark)
1[secondary_label Output]
2Sammy

尽管变量鲨鱼new_shark()函数内本地分配,但由于在函数内分配变量之前使用的全球语句,它可以访问函数之外。

另外要记住的是,如果您在函数内引用变量,而不向其分配一个值,那么该变量是暗示的全球性的。

在使用变量时,重要的是决定使用全球变量或本地变量是否更合适。通常最好保持本地变量,但当您在多个函数中使用相同的变量时,您可能想要初始化一个全球变量。

结论

本教程通过了Python 3中变量的一些常见用例,变量是编程的重要构建块,作为象征,代表您在程序中使用的 数据类型的值。

Published At
Categories with 技术
comments powered by Disqus