打开APP
userphoto
未登录

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

开通VIP
4个使阅读 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 = 2020vars(year)# Traceback (most recent call last):# File '<input>', line 1, in <module># 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 控制台中用于在我们读取程序时探索脚本或对象。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python小知识-debug用到的5个内建函数
14 个好用到爆的 Python 实用技巧!
Python两个列表合并为一个字典
Python字典推导式
字典函数--python
Python 字典 dict() 函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服