变量是用于存储某些数据的容器。它们表示内存位置。任何类型的数据都可以存储在 Python 的变量中,包括整数,字符串,浮点数,布尔值等。
在 Python 中,定义变量时不需要指定变量的数据类型。但是,在使用变量之前,必须先定义它们,只需为变量赋值即可完成,如下所示:
x = 123
在这里,“x” 是一个变量的名称。由于 x 保存一个整数值,因此它是一个整数变量。
变量的声明确定了变量的作用范围。Python 变量中存在两个基本作用域:局部变量、全局变量。
在函数等模块中定义的变量通常仅在该块中可用。在范围之外,无法访问它们。这些类型的变量称为局部变量。
以下示例中,如果从变量作用范围之外访问它们,则会触发 NameError 异常。
def hello():
# 函数内部定义并使用变量
name = 'Li'
print('Hello ', name)
hello()
# 函数外部使用变量
print('Hello ', name)
# 输出:
Hello Li
Traceback (most recent call last):
File "D:\Backup\Desktop\2.py", line 8, in <module>
print('Hello ', name)
NameError: name 'name' is not defined
在上面的例子中,name 是 hello() 函数的局部变量,不能在它之外访问。
全局变量是存在于函数等模块之外的变量。任何函数都可以访问其值。
name = 'Li'
def hello():
# 函数内部使用外部定义的变量
print('Hello ', name)
hello()
Python 中检查变量是否存在,避免因为变量未已定义或作用域问题引发异常。
locals() 函数会以字典类型返回当前位置的全部局部变量。我们可以检查变量是否存在于 locals() 中。
def bianliang():
x = 123
if 'x' in locals():
print ('变量已经定义!')
else:
print ('没有发现该变量名!')
bianliang()
if 'x' in locals():
print ('变量已经定义!')
else:
print ('没有发现该变量名!')
# 输出:
变量已经定义!
没有发现该变量名!
在上面的示例中,定义了一个函数 “bianliang()”,并在函数内部定义了一个变量 “x”。由于 locals() 函数返回包含当前局部变量的字典,因此我们可以使用 “in” 运算符来检查变量是否存在。
函数内部定义的变量 “x”,在函数内部是可用的,函数外部是未定义。
globals() 函数会以字典类型返回当前位置的全部全局变量。
同样我们可以使用 “in” 运算符在检查变量是否存在全局命名空间中。
x = 123
if 'x' in globals():
print ('全局变量已经定义!')
else:
print ('全局环境中没有发现该变量!')
# 输出:
全局变量已经定义!
hasattr() 函数用于判断对象是否包含对应的属性。可用于查看类中是否存在变量。
以下示例中,使用 hasattr() 检查 “name” 是否存在,如果存在,输出相应属性。hello 类中不存在 “age” 属性,输出 False。
class hello:
name = 'Li'
hello = hello()
if hasattr(hello, 'name'):
print(hello.name)
print(hasattr(hello, 'age'))
Li
False
联系客服