简单瞅瞅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 相关文章推荐
pycharm 使用心得(二)设置字体大小
Jun 05 Python
Python标准库之Sys模块使用详解
May 23 Python
Python中 传递值 和 传递引用 的区别解析
Feb 22 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
Python正则表达式指南 推荐
Oct 09 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
python3的url编码和解码,自定义gbk、utf-8的例子
Aug 22 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
python 伯努利分布详解
Feb 25 Python
scrapy实践之翻页爬取的实现
Jan 05 Python
python实现三阶魔方还原的示例代码
Apr 28 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
PHP VS ASP
2006/10/09 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
WAF的正确bypass
2017/01/05 PHP
PHP中Cookie的使用详解(简单易懂)
2017/04/28 PHP
模拟select的代码
2011/10/19 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
理解javascript中的闭包
2017/01/11 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
JavaScript面向对象的程序设计(犯迷糊的小羊)
2018/05/27 Javascript
详解基于Vue2.0实现的移动端弹窗(Alert, Confirm, Toast)组件
2018/08/02 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
vue如何截取字符串
2019/05/06 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
Python下Fabric的简单部署方法
2015/07/14 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
python实现爬山算法的思路详解
2019/04/09 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
python时间日期操作方法实例小结
2020/02/06 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
Myprotein西班牙官网:欧洲第一大运动营养品牌
2020/02/24 全球购物
造型师求职自荐信
2013/09/27 职场文书
企事业单位求职者的自我评价
2013/12/28 职场文书
毕业典礼致辞
2015/07/29 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python