简单瞅瞅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 获取网页编码方式实现代码
Mar 11 Python
详解python eval函数的妙用
Nov 16 Python
用Python写王者荣耀刷金币脚本
Dec 21 Python
Python实现连接MySql数据库及增删改查操作详解
Apr 16 Python
pandas.cut具体使用总结
Jun 24 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
Aug 07 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
手把手教你配置JupyterLab 环境的实现
Feb 02 Python
PyTorch 如何自动计算梯度
May 23 Python
pandas进行数据输入和输出的方法详解
Mar 23 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
发现的以前不知道的函数
2006/09/19 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
javascript实现省市区三级联动下拉框菜单
2015/11/17 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
微信小程序实现留言板
2018/10/31 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
关于Python面向对象编程的知识点总结
2017/02/14 Python
Python实现的基数排序算法原理与用法实例分析
2017/11/23 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
python常用运维脚本实例小结
2020/02/14 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
英语商务邀请函范文
2014/01/16 职场文书
毕业自我评价
2014/02/05 职场文书
解除合同协议书
2014/04/17 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python