简单瞅瞅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
投稿
猜你喜欢
JS清空上传控件input(type="file")的值的代码第1/2页
2023-08-13 07:22:28
第五章之BootStrap 栅格系统
2024-05-05 09:14:46
mysql-joins具体用法说明
2024-01-19 10:32:19
对python3 Serial 串口助手的接收读取数据方法详解
2023-05-31 17:39:01
简单的PHP图片上传程序
2024-05-22 10:06:54
Python Pandas聚合函数的应用示例
2022-12-13 22:39:31
python 删除字符串中连续多个空格并保留一个的方法
2021-08-16 14:07:25
使用SQL Server分区表功能提高数据库的读写性能
2024-01-17 18:32:20
Vue.js实现一个todo-list的上移下移删除功能
2024-04-26 17:38:32
在macOS上搭建python环境的实现方法
2021-10-07 07:29:56
MySQL 5.7 create VIEW or FUNCTION or PROCEDURE
2024-01-20 18:58:16
一篇文章讲解清楚MySQL索引
2024-01-28 11:59:24
python中str内置函数用法总结
2022-06-23 10:22:45
SQL Server配置管理器无法连接到WMI提供程序
2024-01-23 23:49:30
ASP伪静态页简单教程
2007-09-28 14:35:00
用私有属性来拯救IE7缩放图片的失真
2009-03-03 13:57:00
python socket网络编程步骤详解(socket套接字使用)
2022-09-15 11:35:08
JavaScript 日期联动选择器
2010-08-01 10:18:00
在Oracle PL/SQL中游标声明中表名动态变化的方法
2009-02-28 10:39:00
python写一个md5解密器示例
2023-05-24 14:45:10