简单瞅瞅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 subprocess模块学习总结
Mar 13 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
详解Python中使用base64模块来处理base64编码的方法
Jul 01 Python
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
Python Pandas找到缺失值的位置方法
Apr 12 Python
python实现机器学习之元线性回归
Sep 06 Python
python安装scipy的方法步骤
Jun 26 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
Python3如何实现Win10桌面自动切换
Aug 11 Python
详解python datetime模块
Aug 17 Python
python 使用建议与技巧分享(四)
Aug 18 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使用token防止表单重复提交的方法
2016/04/07 PHP
PHP时间函数使用详解
2019/03/21 PHP
web 页面分页打印的实现
2009/06/22 Javascript
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
javascript常用的方法分享
2015/07/01 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
详解React的回调渲染模式
2020/09/10 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
Python实现股市信息下载的方法
2015/06/15 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
Python实现登陆文件验证方法
2018/10/06 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
python selenium 获取接口数据的实现
2020/12/07 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
房屋鉴定委托书范本
2014/09/23 职场文书
高三毕业评语
2014/12/31 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
学校通报表扬范文
2015/05/04 职场文书
比赛主持人开场白
2015/05/29 职场文书
企业财务管理制度范本
2015/08/04 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python