简单瞅瞅Python vars()内置函数的实现
作者:王尼玛 时间:2021-03-29 20:41:05
0.偶然间看到一个奇怪的现象
>>> x = 1
>>> a = var()
>>> a['x']
1
这是啥操作??用help(vars)之后,我才知道......
>>> help(vars)
Help on built-in function vars in module builtins:
vars(...)
vars([object]) -> dictionary
Without arguments, equivalent to locals().
With an argument, equivalent to object.__dict__.
如果,没传入参数就将相当于locals(),嗨,我还以为什么语法糖呢......
不知道locals()的老铁们,可以先自己试一试,之后会写
1.vars()走起
vars() 函数返回参数对象object的属性和属性值的字典对象
实际上调用了对象内部定义的__dict__属性
可以试试:
>>> vars(1)
TypeError: vars() argument must have __dict__ attribute
由于1这个对象没有__dict__ 属性,所以报错
当然,如果参数为空则相当于调用locals()函数
我们做个试验:
class xx:
def __init__(self):
self.__dict__ = {'':'我是变量__dict__'}
接下来调用此类:
>>> a = xx()
>>> vars(a)
{'': '我是变量__dict__'}
没错吧,返回的是该对象的__dict__属性
简单说一下__dict__:
类的静态函数、类函数、普通函数、全局变量以及一些内置的属性都是放在类的__dict__里
一些内置的数据类型是没有__dict__属性的(可以尝试下 vars('我没有__dict__属性')这个语句)
2.总结
vars()在没有传入参数的时候,相当于调用locals()
若传入自定义类的对象,则返回对象的__dict__属性,大多数自定义类会隐式创建__dict__属性
若传入一些内置的数据类型,则由于其没有__dict__属性,会报错:TypeError: vars() argument must have __dict__ attribute
来源:https://segmentfault.com/a/1190000020508021
标签:Python,vars()
0
投稿
猜你喜欢
pytorch + visdom CNN处理自建图片数据集的方法
2023-05-03 06:33:16
TOPI如何使TVM代码不那么样板化
2022-02-02 00:22:07
HTTP 错误 500.100 - 内部服务器错误 - ASP 错误
2008-09-12 13:07:00
Python3查找列表中重复元素的个数的3种方法详解
2022-08-01 16:36:07
Python中无限循环需要什么条件
2023-03-28 09:05:14
python实现输入三角形边长自动作图求面积案例
2023-08-12 01:47:49
SQL列名无效 sql查询列名 sql返回列名
2009-09-03 13:19:00
python 代码运行时间获取方式详解
2021-01-22 19:07:36
Python 下载及安装详细步骤
2021-05-17 05:24:24
关于ASP eof与bof 区别分析
2011-03-11 11:14:00
浅谈Pytorch torch.optim优化器个性化的使用
2023-12-19 08:47:12
Python数学建模学习模拟退火算法约束条件处理示例解析
2022-06-16 19:19:20
关于python写入文件自动换行的问题
2021-09-01 00:03:13
ASP XML操作类代码
2011-03-08 10:47:00
numpy数组之存取文件的实现示例
2021-02-20 11:32:57
Oracle中返回结果集的存储过程分享
2012-07-11 15:50:16
详解python字节码
2021-12-16 16:56:29
python在Windows8下获取本机ip地址的方法
2023-07-31 17:10:44
使用Python实现分别输出每个数组
2021-10-30 00:28:49
Django-celery-beat动态添加周期性任务实现过程解析
2021-07-29 13:09:49