简单瞅瞅Python vars()内置函数的实现
2019-12-22 07:05
1446 查看
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]有限状态机(FSM)简单实现
- [python]有限状态机(FSM)简单实现
- python实现简单xml-rpc服务器
- [python]有限状态机(FSM)简单实现
- python实现简单消息总线
- Python学习之client and server篇一:python 实现简单client与server
- python3使用tkinter实现ui界面简单实例
- 最简单的Python singleton模式实现
- python学习(1)--实现简单的服务器与客户端
- python下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- Python简单两步实现天气爬虫采集器
- python简单易懂的全排列实现
- 简单的神经元算法实现(python)
- python 多进程通信模块的简单实现
- python实现简单爬虫功能
- 用python实现的简单Server/Client文件传输
- 用python或者perl实现简单的http服务器目录共享
- python实现的简单的epub2txt
- python 排序的简单实现
- python实现简单的redis 队列 SIMPLE PYTHON QUEUE WITH REDIS