打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在 python 中检查变量是否存在的多种方法

变量是用于存储某些数据的容器。它们表示内存位置。任何类型的数据都可以存储在 Python 的变量中,包括整数,字符串,浮点数,布尔值等。

在 Python 中,定义变量时不需要指定变量的数据类型。但是,在使用变量之前,必须先定义它们,只需为变量赋值即可完成,如下所示:

x = 123

在这里,“x” 是一个变量的名称。由于 x 保存一个整数值,因此它是一个整数变量。

变量的作用域

变量的声明确定了变量的作用范围。Python 变量中存在两个基本作用域:局部变量、全局变量。

  1. 局部变量

在函数等模块中定义的变量通常仅在该块中可用。在范围之外,无法访问它们。这些类型的变量称为局部变量。

以下示例中,如果从变量作用范围之外访问它们,则会触发 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 8in <module>
    print('Hello ', name)
NameError: name 'name' is not defined

在上面的例子中,name 是 hello() 函数的局部变量,不能在它之外访问。

  1. 全局变量

全局变量是存在于函数等模块之外的变量。任何函数都可以访问其值。

name = 'Li'
def hello():
    # 函数内部使用外部定义的变量
    print('Hello ', name) 
hello()

验证变量是否存在

Python 中检查变量是否存在,避免因为变量未已定义或作用域问题引发异常。

  1. locals()

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”,在函数内部是可用的,函数外部是未定义。

  1. Globals()

globals() 函数会以字典类型返回当前位置的全部全局变量。

同样我们可以使用 “in” 运算符在检查变量是否存在全局命名空间中。

x = 123
if 'x' in globals():
    print ('全局变量已经定义!')
else:
    print ('全局环境中没有发现该变量!')
# 输出:
全局变量已经定义!
  1. hasattr()

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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
《Python编程快速上手——让繁琐的工作自动化》读书笔记2
python变量之全局变量与局部变量的使用
这一篇把Python 作用域的疑惑终于解决了
Python语法基础
python 局部变量和全局变量 global
python global、locals()、nonlocal
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服