4个使阅读 Python 代码更容易的函数




欢迎关注 “小白玩转Python”,发现更多 “有趣”

引言

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

  • 如何检查一个大型函数或类的所有变量名和值?

  • 如何获得特定对象的有效属性列表?

  • 如何快速查看当前脚本的所有变量名和值?

当然,我们可以一行一行地查代码,记住这些名字,或者把它们写在纸上。然而,这一点也不 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() 函数只是小菜一碟。顾名思义,它将返回一个包括所有局部名称和值的字典。

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  ·

HAPPY LIFE

4个使阅读 Python 代码更容易的函数_第1张图片

你可能感兴趣的:(列表,python,编程语言,js,javascript)