简单瞅瞅Python vars()内置函数的实现
0.偶然间看到一个奇怪的现象
>>>x=1 >>>a=var() >>>a['x'] 1
这是啥操作??用help(vars)之后,我才知道......
>>>help(vars) Helponbuilt-infunctionvarsinmodulebuiltins: vars(...) vars([object])->dictionary Withoutarguments,equivalenttolocals(). Withanargument,equivalenttoobject.__dict__.
如果,没传入参数就将相当于locals(),嗨,我还以为什么语法糖呢......
不知道locals()的老铁们,可以先自己试一试,之后会写
1.vars()走起
vars()函数返回参数对象object的属性和属性值的字典对象
实际上调用了对象内部定义的__dict__属性
可以试试:
>>>vars(1) TypeError:vars()argumentmusthave__dict__attribute
由于1这个对象没有__dict__属性,所以报错
当然,如果参数为空则相当于调用locals()函数
我们做个试验:
classxx: 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()argumentmusthave__dict__attribute
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。