#技术派的书架#

引言

当一个程序变大时,读取代码就变成了一项困难的工作。即使是一些简单的任务也会很困难。例如:

当然,我们可以一行一行地查代码,记住这些名字,或者把它们写在纸上。然而pythondisplay函数,这一点也不 Python !

读代码比写代码更难。

函数1: globals()

顾名思义,globals()函数将显示全局范围的信息。

例如,如果我们打开 Python 控制台并输入 globals () ,就会返回一个包含全局作用域中所有变量名称和值的字典。

>>> globals()
{'__name__': '__main__', '__doc__': None, ...}

(本文中的一些输出例子被缩写为… ,以使它们更加整洁和易读。)

如果我们加上一个变量:

>>> Master = "Yang"
>>> globals
{'__name__': '__main__', '__doc__': None, ... ,'Master': 'Yang'}

因为 globals() 函数只返回一个字典。我们可以通过操作字典来获得一些我们感兴趣的特定数据:

>>> [n for n in globals() if not n.startswith('__')]
['sys', 'Master']

如上所示,我们可以通过一个列表解析来获得所有的变量名。

函数2: locals()

在理解了 globals() 之后,locals() 函数只是小菜一碟。顾名思义pythondisplay函数,它将返回一个包括所有局部名称和值的字典。

def top_developer():
    name = "Yang"
    country = "UK"
    print(locals())
top_developer()
# {'name': 'Yang', 'country': 'UK'}

顺便说一下,如果我们在全局范围中调用 locals() ,结果与 globals()完全相同。

>>> globals() is locals()
True

函数3: vars()

vars() 函数将返回 _dict_,这是一个用于存储对象属性的字典。其结果与直接调用 _dict_ 相同。

class TopDeveloper:
    def __init__(self):
        self.name = "Yang"
        self.country = "UK"
me = TopDeveloper()
print(vars(me))
# {'name': 'Yang', 'country': 'UK'}
print(vars(me) is me.__dict__)
# True

并不是所有对象都必须具有 _dict_,因此我们只能在部分对象中使用 vars()方法。

year = 2020
vars(year)
# Traceback (most recent call last):
#   File "", line 1, in 
# TypeError: vars() argument must have __dict__ attribute

如上例所示,int 类型对象不包含 _dict_,因此如果对其使用 vars() ,将引发 TypeError。

函数4: dir()

dir() 函数帮助我们展示相应范围内的名称列表。

class TopDeveloper:
    def __init__(self):
        self.name = "Yang"
        self.country = "UK"
me = TopDeveloper()
print(dir(me))
# ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'country', 'name']

实际上,dir 方法是在内部调用 _dir_() 。

class TopDeveloper:
    def __init__(self):
        self.name = "Yang"
        self.country = "UK"
    def __dir__(self):
        return [1, 2, 3]
me = TopDeveloper()
print(dir(me))
# [1, 2, 3]

如上所示,如果我们更改 _dir_ 的工作方式,dir() 的结果也将会改变。

总结

这四个内置函数是我们显示名称和值的得力助手。它们的常见使用场景是在 Python 控制台中用于在我们读取程序时探索脚本或对象。

———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注