简单瞅瞅Python vars()内置函数的实现

简单瞅瞅Python vars()内置函数的实现,第1张

概述简单瞅瞅Python vars()内置函数的实现 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, equ ...

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

总结

以上是内存溢出为你收集整理的简单瞅瞅Python vars()内置函数的实现全部内容,希望文章能够帮你解决简单瞅瞅Python vars()内置函数的实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存