如何在Python3中使用变量

来自菜鸟教程
跳转至:导航、​搜索

###介绍

变量是一个需要掌握的重要编程概念。 它们本质上是代表您在程序中使用的值的符号。

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

    1. Prerequisites 您应该已安装 Python 3 并在您的计算机或服务器上设置了编程环境。 如果您没有设置编程环境,您可以参考本地编程环境或服务器上的编程环境适合您的操作的安装和设置指南系统(Ubuntu、CentOS、Debian 等)
    1. 理解变量

用技术术语来说,变量将存储位置分配给与符号名称或标识符相关的值。 变量名用于引用计算机程序中存储的值。

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

假设我们有一个整数 103204934813,我们希望将它存储在一个变量中,而不是一遍又一遍地不断地重新输入长数字。 相反,让我们使用一些容易记住的东西,比如变量 my_int

Info: 要跟随本教程中的示例代码,请通过运行 python3 命令在本地系统上打开 Python 交互式 shell。 然后,您可以通过在 >>> 提示符后添加示例来复制、粘贴或编辑示例。


my_int = 103204934813

如果我们把它想象成一个与值绑定的标签,它看起来像这样:

标签上写有变量名 my_int,并与整数值 103204934813 绑定。

短语my_int = 103204934813是一个赋值语句,它由几部分组成:

  • 变量名(my_int
  • 赋值运算符,也称为等号(=
  • 与变量名绑定的值 (103204934813)

这三个部分共同构成了将变量 my_int 设置为等于整数 103204934813 的值的语句。

一旦我们设置一个变量等于一个值,我们 初始化 或创建该变量。 完成此操作后,我们将设置为使用变量而不是值。 在 Python 中,变量不需要像某些编程语言那样在使用前显式声明; 您可以立即开始使用该变量。

只要我们设置 my_int 等于 103204934813 的值,我们就可以使用 my_int 代替整数,所以让我们打印出来:

print(my_int)
Output103204934813

使用变量,我们可以快速轻松地做math。 使用 my_int = 103204934813,让我们减去整数值 813:

print(my_int - 813)
Output103204934000

在这个例子中,Python 为我们计算,从变量 my_int 中减去 813 以返回和 103204934000

说到数学,变量可以设置为等于数学方程的结果。 让我们将两个数字相加并将和的值存储到变量 x 中:

x = 76 + 145

上面的例子可能看起来像你已经熟悉的东西:代数。 在代数中,字母和其他符号用于表示公式和方程式中的数字和数量,就像变量是表示数据类型值的符号名称一样。 对于正确的 Python 语法,您需要确保您的变量位于任何方程的左侧。

让我们继续打印 x

print(x)
Output221

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

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

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 将返回该变量等价的内容。 例如,让我们使用上面 列表数据类型 的赋值语句:

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 打印出该值。

变量通过在您的计算机中划出一小块内存区域来工作,该区域接受指定的值,然后与该空间相关联。

    1. 命名变量:规则和样式

变量的命名相当灵活,但有一些规则需要牢记:

  • 变量名只能是一个单词(不能有空格)
  • 变量名只能由字母、数字和下划线组成(_
  • 变量名不能以数字开头

按照上面的规则,让我们检查一下有效和无效的变量名:

有效的 无效的 为什么无效
我的整数 我的整数 不允许使用连字符
整数4 4int 不能以数字开头
MY_INT $MY_INT 不能使用 _ 以外的符号
另一个整数 另一个整数 不能超过一个字

命名变量时要记住的另一件事是它们区分大小写,这意味着 my_intMY_INTMy_IntmY_iNt 都是完全不同的变量。 您应该避免在程序中使用相似的变量名称,以确保您和您当前和未来的合作者都能保持变量的正确性。

最后,关于风格的一些说明。 按照惯例,在命名变量时,习惯上以小写字母开头,并在分隔单词时使用下划线。 以大写字母开头并不是无效的,有些人在编写变量时可能更喜欢驼峰式或混合大小写字母,但这些都是不太常规的选择。

传统风格 非传统风格 为什么非传统
我的整数 我的整数 camelCase 不传统
整数4 整数4 大写首字母不常规
我的第一个字符串 我的第一个字符串 camelCase 不传统

您可以做出的最重要的风格选择是保持一致。 如果您开始处理一直使用 camelCase 作为其变量名的现有项目,那么最好继续使用现有样式。

PEP 8 是官方的 Python 代码风格指南,它解决了您可能对 Python 提出的许多风格问题。 一般来说,可读性和一致性比其他风格问题更受青睐。

    1. 重新分配变量

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

能够重新分配很有用,因为在整个程序过程中,您可能需要将用户生成的值接受到已经初始化的变量中,或者可能必须将分配更改为您先前定义的内容。

知道您可以轻松轻松地重新分配变量在您可能正在处理由其他人开始的大型程序并且您尚不清楚已经定义的内容的情况下也很有用。

让我们先将 x 赋值为整数,然后将其重新赋值为 字符串

#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

在某些情况下,重新分配变量可能很有用,但您需要注意代码的可读性并努力使您的程序尽可能清晰。

    1. 多重赋值

使用 Python,您可以同时为多个变量分配一个值。 这使您可以一次初始化多个变量,您可以稍后在程序中自己或通过用户输入重新分配这些变量。

通过多次赋值,可以将变量xyz设置为整数0的值:

x = y = z = 0
print(x)
print(y)
print(z)
Output0
0
0

在此示例中,所有三个变量(xyz)都分配到相同的内存位置。 它们每个都等于 0 的值。

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

j, k, l = "shark", 2.05, 15
print(j)
print(k)
print(l)
Outputshark
2.05
15

在上面的例子中,变量j被赋值给字符串"shark",变量k被赋值给浮点数2.05,变量[X160X ] 被分配给整数 15

这种在一行中将多个变量分配给多个值的方法可以减少您的代码行数,但要确保您不会因为更少的代码行而牺牲可读性。

    1. 全局和局部变量

在程序中使用变量时,牢记 变量范围 很重要。 变量的范围是指它在给定程序的代码中可访问的特定位置。 这就是说,并非所有变量都可以从给定程序的所有部分访问——有些变量是全局的,有些是局部的。

全局变量存在于函数之外。 局部变量存在于函数中。

让我们看一下全局和局部变量的作用:

#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 的局部值。 当我们调用 my_function() 后打印出 num1 的全局值时,我们看到全局变量 num1 仍然等于 5 的值。

可以使用 Python 的 global 语句在函数内分配全局变量:

def new_shark():
    #Assign variable as global
    global shark
    shark = "Sammy"

#Call new_shark() function
new_shark()

#Print global variable shark
print(shark)
OutputSammy

即使变量 shark 是在 new_shark() 函数内本地分配的,由于在函数内分配变量之前使用了 global 语句,因此可以在函数外部访问它. 由于 global 语句,当我们在函数外部调用 print(shark) 时,我们不会收到错误。 尽管您 可以 在函数中分配全局变量,但您可能不需要经常这样做,并且应该在可读代码方面犯错。

要记住的另一件事是,如果您在函数中引用一个变量,而不给它赋值,则该变量是隐式全局的。 为了有一个局部变量,你必须在函数体中给它赋值。

使用变量时,重要的是要确定使用全局变量还是局部变量更合适。 通常最好将变量保持在本地,但是当您在多个函数中使用相同的变量时,您可能需要初始化一个全局变量。 如果您只在一个函数或一个 中使用变量,您可能希望使用局部变量。

##结论

本教程介绍了 Python 3 中变量的一些常见用例。 变量是编程的重要组成部分,用作代表您在程序中使用的 数据类型 的值的符号。