简单瞅瞅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使用poplib模块和smtplib模块收发电子邮件的教程
Jul 02 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Django中Forms的使用代码解析
Feb 10 Python
python如何将图片转换为字符图片
Aug 19 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
python 弧度与角度互转实例
Apr 15 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 Python
Python之qq自动发消息的示例代码
Feb 18 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
Feb 22 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
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
js树形控件脚本代码
2008/07/24 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
删除节点的jquery代码
2014/01/13 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
详解A标签中href=""的几种用法
2017/08/20 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
vue-router实现嵌套路由的讲解
2019/01/19 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
Python wxPython库消息对话框MessageDialog用法示例
2018/09/03 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
Python pandas.DataFrame 找出有空值的行
2019/09/09 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
Python通过类的组合模拟街道红绿灯
2020/09/16 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
Python的两道面试题
2013/06/29 面试题
煤矿安全知识竞赛活动总结
2014/07/07 职场文书