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


Posted in Python onSeptember 27, 2019

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 相关文章推荐
python访问系统环境变量的方法
Apr 29 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
python 使用re.search()筛选后 选取部分结果的方法
Nov 28 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
Python tkinter常用操作代码实例
Jan 03 Python
Python with标签使用方法解析
Jan 17 Python
python统计文章中单词出现次数实例
Feb 27 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
python 5个实用的技巧
Sep 27 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
Python 获取项目根路径的代码
Sep 27 #Python
Python Pandas对缺失值的处理方法
Sep 27 #Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 #Python
Python操作qml对象过程详解
Sep 26 #Python
python 字典的打印实现
Sep 26 #Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 #Python
QML使用Python的函数过程解析
Sep 26 #Python
You might like
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
php使用websocket示例详解
2014/03/12 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
jQuery计算textarea中文字数(剩余个数)的小程序
2013/11/28 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
Angularjs 实现分页功能及示例代码
2016/09/14 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
12 种使用Vue 的最佳做法
2020/03/30 Javascript
python学习之matplotlib绘制散点图实例
2017/12/09 Python
浅谈Python中range和xrange的区别
2017/12/20 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python路径的写法及目录的获取方式
2019/12/26 Python
如何清空python的变量
2020/07/05 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
如何开发安全的AJAX应用
2014/03/26 面试题
银行实习自我鉴定
2013/10/12 职场文书
物理课外活动总结
2014/08/27 职场文书
三严三实对照检查材料
2014/09/22 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
Nginx配置https的实现
2021/11/27 Servers
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏