介绍
变量是一个重要的编程概念,值得掌握。它们本质上是在程序中用于表示值的符号。
本教程将涵盖一些变量基础知识,以及如何在您创建的 Python 3 程序中最好地使用它们。
理解变量
从技术角度来说,变量是将存储位置分配给与符号名称或标识符相关联的值。变量名用于在计算机程序中引用存储的值。
您可以将变量想象成一个标签,标签上写着一个名字,这个标签关联了一块内存区域。
假设我们有一个整数,
my_int = 103204934813
如果我们将其视为与值相关联的标签,它将看起来像这样:
标签上写有变量名
短语
- 变量名(
my_int ) - 赋值运算符,也称为等号(
= ) - 要与变量名关联的值(
103204934813 )
这三个部分共同构成了将变量
一旦我们将变量设置为一个值,我们就初始化或创建了该变量。一旦完成这一点,我们就可以使用变量而不是值。在 Python 中,变量无需在使用之前进行显式声明,就像某些编程语言一样;您可以立即开始使用变量。
一旦我们将
print(my_int)
103204934813
使用变量,我们可以快速而轻松地进行数学运算。通过
print(my_int - 813)
103204934000
在这个例子中,Python 为我们执行了减法,从变量
说到数学,变量可以设置为数学方程的结果。让我们将两个数字相加并将和的值存储到变量
x = 76 + 145
上面的例子可能看起来像您已经熟悉的东西:代数。在代数中,字母和其他符号用于表示公式和方程中的数字和数量,就像变量是表示数据类型的值的符号名称一样。
让我们继续打印
print(x)
221
Python 返回值
变量可以表示任何数据类型,不仅限于整数:
my_string = 'Hello, World!' my_flt = 45.06 my_bool = 5 > 9 # 布尔值将返回 True 或 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 数据类型 的赋值语句进行工作:
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 | 不允许使用连字符 |
int4 | 4int | 不能以数字开头 |
MY_INT | $MY_INT | 不能使用除 |
another_int | another int | 不能超过一个单词 |
在命名变量时,还需要记住它们是区分大小写的,这意味着
最后,关于样式的一些建议。传统上,命名变量时,惯例上是以小写字母开头,并在单词之间使用下划线。以大写字母开头并使用驼峰命名法或混合大小写字母的方式并不是无效的,有些人可能更喜欢在编写变量时使用这些方式,但这些选择较不常规。最重要的是在我们的程序中保持一致的命名风格。
传统样式 | 非传统样式 | 为何非传统 |
---|---|---|
my_int | myInt | 驼峰命名法非传统 |
int4 | Int4 | 大写字母开头非传统 |
my_first_string | myFirstString | 驼峰命名法非传统 |
PEP 8 是官方的 Python 代码样式指南,它解决了许多有关 Python 样式的问题。总体而言,可读性和一致性优于其他样式考虑。
重新分配变量
正如单词 variable 暗示的那样,Python 变量可以轻松更改。这意味着您可以通过重新分配很容易地将先前分配的变量与不同的值关联起来。
能够重新分配是有用的,因为在程序的整个过程中,您可能需要接受已经初始化的变量中的用户生成的值,或者可能需要更改先前定义的分配。
让我们首先将
# 将 x 分配为整数 x = 76 print(x) # 重新分配 x 为字符串 x = "Sammy" print(x)
76 Sammy
上面的例子显示了我们首先将变量
如果我们这样重写程序:
x = 76 x = "Sammy" print(x)
我们只会收到第二个分配的值作为输出,因为那是最近的分配:
Sammy
重新分配变量在某些情况下是有用的,但您需要注意代码的可读性,并努力使您的程序尽可能清晰。
多重分配
使用 Python,您可以同时为多个变量分配一个单一值。这使您可以一次初始化多个变量,稍后在程序中自己或通过用户输入重新分配它们。
通过多重分配,您可以将变量
x = y = z = 0 print(x) print(y) print(z)
0 0 0
在这个例子中,三个变量(
Python 还允许您在同一行内为多个变量分配多个值。这些值中的每一个都可以是不同的数据类型:
j, k, l = "shark", 2.05, 15 print(j) print(k) print(l)
shark 2.05 15
在上面的例子中,变量
在一行内为多个变量分配多个值的这种方法可以减少您的代码行数,但请确保您不会因为代码行数减少而牺牲可读性。
全局变量和局部变量
在程序中使用变量时,重要的是要牢记变量作用域。变量的作用域是指在给定程序的代码中它可访问的特定位置。这就是说,并非所有变量都可以从程序的所有部分访问 - 有些变量将是全局的,而有些将是局部的。
全局变量存在于函数之外。局部变量存在于函数内部。
让我们看看全局变量和局部变量的实际情况:
# 创建一个全局变量,在函数之外 glb_var = "global" # 定义一个函数 def var_function(): lcl_var = "local" # 在函数内部创建一个局部变量 print(lcl_var) # 调用函数以打印局部变量 var_function() # 在函数之外打印全局变量 print(glb_var)
local global
上面的程序在任何函数之外分配了全局变量
由于
glb_var = "global" def var_function(): lcl_var = "local" print(lcl_var) print(glb_var) # 在函数内部打印 glb_var var_function()
local global global
现在我们将全局变量
如果我们尝试在函数之外调用局部变量会发生什么呢?
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
因为局部变量
在函数内部使用 Python 的
def new_shark(): # 将变量分配为全局 global shark shark = "Sammy" # 调用 new_shark() 函数 new_shark() # 打印全局变量 shark print(shark)
Sammy
即使变量
还需要注意的是,如果在函数内部引用一个变量,而没有为其分配一个值,那么该变量将被隐式视为全局变量。为了有一个局部变量,您必须在函数体内为它分配一个值。
在处理变量时,决定使用全局变量还是局部变量很重要。通常最好保持变量局部,但当您在多个函数中使用相同的变量时,可能希望初始化一个全局变量。如果您仅在一个函数或一个
结论
本教程介绍了 Python 3 中变量的一些常见用法。变量是编程的重要组成部分,是用于表示程序中正在使用的数据类型值的符号。