Python - 变量
Python 变量
Python 变量是为在 Python 程序中存储值而预留的内存位置。这意味着当你创建一个变量时,你就在内存中预留了一些空间。
根据变量的数据类型,为其分配内存空间。因此,通过为 Python 变量分配不同的数据类型,你可以在这些变量中存储整数、小数或字符。
内存地址
属于不同数据类型的数据项存储在计算机的内存中。计算机的内存位置有一个编号或地址,以二进制形式内部表示。数据也以二进制形式存储,因为计算机基于二进制表示原理工作。在下面的图中,字符串 May 和数字 18 显示为存储在内存位置中。
如果你了解汇编语言,你可以将这些数据项和内存地址转换为机器语言指令。然而,这对每个人来说都不容易。像 Python 解释器这样的语言翻译器执行这种类型的转换。它将对象存储在随机选择的内存位置中。Python 内置的 id() 函数返回对象存储的地址。
>>> "May"
May
>>> id("May")
2167264641264
>>> 18
18
>>> id(18)
140714055169352
一旦数据存储在内存中,就需要反复访问它来执行某些过程。显然,从其 ID 获取数据很繁琐。像 Python 这样的高级语言使得为内存位置提供合适的别名或标签成为可能。
在上例中,让我们将 May 的位置标记为 month,将 18 存储的位置标记为 age。Python 使用赋值运算符 (=) 将对象与标签绑定。
>>> month="May" >>> age=18
数据对象 (May) 和其名称 (month) 具有相同的 id()。18 和 age 的 id() 也相同。
>>> id(month) 2167264641264 >>> id(age) 140714055169352
标签是一个标识符。它通常被称为变量。Python 变量是一个符号名称,是对对象的引用或指针。
创建 Python 变量
Python 变量不需要显式声明来预留内存空间,或者说创建变量。当你为其赋值时,Python 变量会自动创建。等号 (=) 用于将值赋给变量。
= 运算符左侧的操作数是变量的名称,右侧的操作数是存储在变量中的值。例如 −
创建 Python 变量的示例
此示例创建不同类型(整数、浮点数和字符串)的变量。
counter = 100 # 创建一个 integer 变量 miles = 1000.0 # 创建一个 floating point 变量 name = "Zara Ali" # 创建一个 string 变量
打印 Python 变量
一旦我们创建了 Python 变量并为其赋值,我们可以使用 print() 函数打印它。以下是前一个示例的扩展,展示了如何在 Python 中打印不同变量:
打印 Python 变量的示例
此示例打印变量。
counter = 100 # 创建一个 integer 变量 miles = 1000.0 # 创建一个 floating point 变量 name = "Zara Ali" # 创建一个 string 变量 print (counter) print (miles) print (name)
这里,100、1000.0 和 "Zara Ali" 分别是赋给 counter、miles 和 name 变量的值。运行上述 Python 程序时,会产生以下结果 −
100 1000.0 Zara Ali
删除 Python 变量
您可以使用 del 语句删除对数字对象的引用。del 语句的语法如下 −
del var1[,var2[,var3[....,varN]]]]
您可以使用 del 语句删除单个对象或多个对象。例如 −
del var del var_a, var_b
示例
以下示例展示了如何删除变量,如果尝试使用已删除的变量,Python 解释器将抛出错误:
counter = 100 print (counter) del counter print (counter)
这将产生以下结果:
100
Traceback (most recent call last):
File "main.py", line 7, in <module>
print (counter)
NameError: name 'counter' is not defined
获取变量的类型
您可以使用 Python 内置函数 type() 来获取 Python 变量的数据类型,如下所示。
示例:打印变量类型
x = "Zara" y = 10 z = 10.10 print(type(x)) print(type(y)) print(type(z))
这将产生以下结果:
<class 'str'> <class 'int'> <class 'float'>
Python 变量的类型转换
您可以通过类型转换来指定变量的数据类型,如下所示:
示例
此示例演示了变量的大小写敏感性。
x = str(10) # x 将是 '10' y = int(10) # y 将是 10 z = float(10) # z 将是 10.0 print( "x =", x ) print( "y =", y ) print( "z =", z )
这将产生以下结果:
x = 10 y = 10 z = 10.0
Python 变量的大小写敏感性
Python 变量是大小写敏感的,这意味着 Age 和 age 是两个不同的变量:
age = 20 Age = 30 print( "age =", age ) print( "Age =", Age )
这将产生以下结果:
age = 20 Age = 30
Python 变量 - 多重赋值
Python 允许在单个语句中初始化多个变量。在以下情况下,三个变量具有相同的值。
>>> a=10 >>> b=10 >>> c=10
您可以在单个赋值语句中完成,而不是使用单独的赋值,如下所示 −
>>> a=b=c=10 >>> print (a,b,c) 10 10 10
在以下情况下,我们有三个具有不同值的变量。
>>> a=10 >>> b=20 >>> c=30
这些单独的赋值语句可以合并为一个。您需要在 = 操作符左侧提供用逗号分隔的变量名,在右侧提供用逗号分隔的值。
>>> a,b,c = 10,20,30 >>> print (a,b,c) 10 20 30
让我们在脚本模式下尝试几个示例:−
a = b = c = 100 print (a) print (b) print (c)
这产生以下结果:
100 100 100
在这里,创建了一个值为 1 的 integer 对象,所有三个变量都被分配到同一个内存位置。您还可以将多个对象分配给多个变量。例如 −
a,b,c = 1,2,"Zara Ali" print (a) print (b) print (c)
这产生以下结果:
1 2 Zara Ali
在这里,值为 1 和 2 的两个 integer 对象分别分配给变量 a 和 b,一个值为 "Zara Ali" 的 string 对象分配给变量 c。
Python 变量 - 命名规范
每个 Python 变量都应该有一个唯一的名称,如 a、b、c。变量名可以是有意义的,如 color、age、name 等。在为 Python 变量命名时,应注意以下规则:
- 变量名必须以字母或下划线字符开头
- 变量名不能以数字或任何特殊字符开头,如 $、(、* % 等
- 变量名只能包含字母数字字符和下划线 (A-z、0-9 和 _ )
- Python 变量名是区分大小写的,这意味着 Name 和 NAME 在 Python 中是两个不同的变量。
- 不能使用 Python 保留关键字来命名变量。
如果变量名包含多个单词,我们应该使用以下命名模式 −
Camel case − 首字母为小写,但后续每个单词的首字母为大写。例如:kmPerHour、pricePerLitre
Pascal case − 每个单词的首字母均为大写。例如:KmPerHour、 PricePerLitre
Snake case − 使用单个下划线 (_) 字符分隔单词。例如:km_per_hour、price_per_litre
示例
以下是有效的 Python 变量名:
counter = 100 _count = 100 name1 = "Zara" name2 = "Nuha" Age = 20 zara_salary = 100000 print (counter) print (_count) print (name1) print (name2) print (Age) print (zara_salary)
这将产生以下结果:
100 100 Zara Nuha 20 100000
示例
以下是无效的 Python 变量名:
1counter = 100 $_count = 100 zara-salary = 100000 print (1counter) print ($count) print (zara-salary)
这将产生以下结果:
File "main.py", line 3
1counter = 100
^
SyntaxError: invalid syntax
示例
一旦你使用一个变量来标识一个数据对象,它就可以在不使用其 id() 值的情况下被重复使用。这里,我们有一个矩形的变量 height 和 width。我们可以使用这些变量计算面积和周长。
>>> width=10 >>> height=20 >>> area=width*height >>> area 200 >>> perimeter=2*(width+height) >>> perimeter 60
在编写脚本或程序时,使用变量特别有利。以下脚本也使用了上述变量。
#! /usr/bin/python3
width = 10
height = 20
area = width*height
perimeter = 2*(width+height)
print ("Area = ", area)
print ("Perimeter = ", perimeter)
将上述脚本保存为 .py 扩展名并从命令行执行。结果将是 −
Area = 200 Perimeter = 60
Python 局部变量
Python 局部变量是在函数内部定义的。我们无法在函数外部访问变量。
Python function 是一段可重用的代码,你将在 Python - Functions 教程中学习更多关于 function 的内容。
示例
以下是展示局部变量用法的示例:
def sum(x,y): sum = x + y return sum print(sum(5, 10))
这将产生以下结果 −
15
Python 全局变量
在函数外部创建的任何变量可以在任何函数中访问,因此它们具有全局作用域。
示例
以下是全局变量的示例 −
x = 5 y = 10 def sum(): sum = x + y return sum print(sum())
这将产生以下结果 −
15
Python 中的常量
Python 没有正式定义的常量,但是你可以通过使用全大写字母和下划线的名称来指示一个变量被视为常量。例如,名称 PI_VALUE 表示你不希望该变量被重新定义或以任何方式更改。
使用全大写的命名约定有时被称为 screaming snake case - 全大写(screaming)和下划线(snakes)。
Python 与 C/C++ 的变量
Python 中的变量概念与 C/C++ 中的不同。在 C/C++ 中,变量是一个命名内存位置。如果 a=10 并且 b=10,它们是两个不同的内存位置。假设它们的内存地址分别是 100 和 200。
如果给 “a” 赋值一个不同的值——比如 50,那么地址 100 中的 10 会被覆盖。
Python 变量引用的是对象,而不是内存位置。对象在内存中只存储一次。多个变量实际上是对同一个对象的多个标签。
语句 a=50 会在内存中的另一个位置创建一个新的 int 对象 50,而对象 10 仍由 “b” 引用。
进一步地,如果你给 b 赋值其他值,对象 10 将变得无引用。
Python 的垃圾回收机制会释放任何无引用对象占用的内存。
Python 的身份运算符 is 如果两个操作数具有相同的 id() 值,则返回 True。
>>> a=b=10 >>> a is b True >>> id(a), id(b) (140731955278920, 140731955278920)