明霞山资源网 Design By www.htccd.com
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
明霞山资源网 Design By www.htccd.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
明霞山资源网 Design By www.htccd.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。