四个让 Python 代码更容易阅读的函数

当程序代码行变多时,个让更容阅读代码变得困难。代码读即使是易阅一些简单的任务也会很困难。例如:
如何快速查看当前脚本的函数所有变量名和值? 如何检查大型函数或类的所有变量名称和值? 如何获取特定对象的有效属性列表?当然,我们可以逐行查找代码并记住名称或将它们写在草稿纸中。个让更容但是代码读,这根本不是易阅高效的,也不轻松。函数
阅读代码比编写代码更难。个让更容— 乔尔·斯波尔斯基
为了让我们的代码读生活更轻松,Python 提供了四个有用的易阅内置函数来帮助我们方便地显示特定变量名称和值 。
函数 1: globals()
顾名思义,函数该 globals()函数将显示全局变量信息 。个让更容
例如,代码读如果我们打开 Python 控制台并输入 globals(),易阅 将返回如下结果:
Python 3.8.5 (v3.8.5:580fbb018f, Jul 20 2020, 12:11:27) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> globals() {__name__: __main__, __doc__: None, __package__: None, __loader__: <class _frozen_importlib.BuiltinImporter>, __spec__: None, __annotations__: {}, __builtins__: <module builtins (built-in)>} >>>如果我们添加一个变量:
>>> name = Python七号 >>> globals() {__name__: __main__, __doc__: None, __package__: None, __loader__: <class _frozen_importlib.BuiltinImporter>, __spec__: None, __annotations__: {}, __builtins__: <module builtins (built-in)>, name: Python七号} >>>由于该 globals()函数只返回一个包含全局变量的字典。我们可以操纵这个 dict 来获取一些我们感兴趣的数据:
>>> [n for n in globals() if not n.startswith(__)] [name] >>>如上例所示,我们使用列表推导式来获取所有非双下划线的变量名称。
函数 2:locals()
了解 globals()之后, locals()函数就是小菜一碟。高防服务器顾名思义,它将返回一个包含所有本地变量和值的字典。
顺便说一下,如果我们locals()在全局范围内调用 ,结果与 globals()相同。
>>> globals() == locals() True >>>函数 3:vars()
该 vars()函数将返回 __dict__,这是一个用于存储对象属性的字典。其结果与直接调用对象的__dict__方法产生的结果相同 。
>>> vars() {__name__: __main__, __doc__: None, __package__: None, __loader__: <class _frozen_importlib.BuiltinImporter>, __spec__: None, __annotations__: {}, __builtins__: <module builtins (built-in)>, name: Python七号} >>> class A: ... name = Python七号 ... >>> >>> vars(A) mappingproxy({__module__: __main__, name: Python七号, __dict__: <attribute __dict__ of A objects>, __weakref__: <attribute __weakref__ of A objects>, __doc__: None}) >>> >>>不是所有对象都有 __dict__方法,因此vars()只能在部分对象中使用。
>>> num = 1 >>> vars(num) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: vars() argument must have __dict__ attribute >>>如上例所示, int类型对象不包含 __dict__,因此如果我们vars()将引发TypeError 。
函数 4:dir()
该 dir()函数帮助显示模块或对象内的名称列表。
>>> dir(A) [__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__, name] >>> dir(num) [__abs__, __add__, __and__, __bool__, __ceil__, __class__, __delattr__, __dir__, __divmod__, __doc__, __eq__, __float__, __floor__, __floordiv__, __format__, __ge__, __getattribute__, __getnewargs__, __gt__, __hash__, __index__, __init__, __init_subclass__, __int__, __invert__, __le__, __lshift__, __lt__, __mod__, __mul__, __ne__, __neg__, __new__, __or__, __pos__, __pow__, __radd__, __rand__, __rdivmod__, __reduce__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __rmul__, __ror__, __round__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __setattr__, __sizeof__, __str__, __sub__, __subclasshook__, __truediv__, __trunc__, __xor__, as_integer_ratio, bit_length, conjugate, denominator, from_bytes, imag, numerator, real, to_bytes] >>> dir() [A, __annotations__, __builtins__, __doc__, __loader__, __name__, __package__, __spec__, name, num] >>>实际上,该dir方法在 __dir__()内部调用 。
如上所示,如果我们改变 __dir__工作方式,结果 dir()也会改变。
其他自省函数
自省就是自我反省,在编程方面是指程序在运行时自我判断对象类型的能力,也可以说是反射,云南idc服务商检查某些事物以确定它是什么、它知道什么以及它能做什么,Django 框架之所以如此灵活,很多 ORM 类都用到了 Python 的自省函数。
与自省相关的主要方法:
hasattr(object, name)检查对象是否具体 name 属性。返回 bool. getattr(object, name, default)获取对象的name属性。 setattr(object, name, default)给对象设置name属性 delattr(object, name)给对象删除name属性 isinstance(name, object)检查name是不是object对象 type(object)查看对象的类型 callable(object)判断对象是否是可调用对象最后
这四个内置函数是我们显示名称和值的有用工具。它们的常见使用场景是在 Python 控制台中使用,以在我们阅读程序时探索脚本或对象。Pytho 的内省函数也可以在运行时动态检查对象的类型和方法,可以帮助我们检查代码,也方便我们编写出灵活可扩展的程序。
本文转载自微信公众号「Python七号」,可以通过以下二维码关注。转载本文请联系Python七号公众号。

相关文章
苹果电脑如何安装Win10系统(一步步教你在苹果电脑上安装Windows10系统)
摘要:在过去,苹果电脑一直使用自家研发的MacOS系统,而Windows系统则是微软公司的杰作。然而,由于某些原因,许多用户希望在自己的苹果电脑上也能安装Windows10系统。本文将详...2025-11-05
离首次测试Oceanbase 4.0社区版已经过去几个月了,不过4.0的文档一直还处于开发阶段,昨天拿到了OB4文档的预览版。从个人在去年的体验上今天看到的OB4.0的文档来看,OB4和以前的OB32025-11-05- 1 2 3 4 5 6 7 82025-11-05
SQLStructured Query Language)是用于管理和操作关系型数据库的标准化语言。它允许用户从数据库中检索和操作数据,以及创建、修改和删除表和其他数据库对象。在本篇文章中,我们将探讨2025-11-05电脑显示错误无法加载PDF文档(解决电脑无法加载PDF文档的问题)
摘要:在日常使用电脑的过程中,我们经常会遇到无法加载PDF文档的问题。这个问题给我们的工作和学习带来了很多不便。本文将为大家介绍一些常见的导致电脑无法加载PDF文档的错误,并提供解决方案...2025-11-05- 复制sudoapt-getinstallproj 1.2025-11-05

最新评论