簡單瞅瞅Python vars()內(nèi)置函數(shù)的實(shí)現(xiàn)
0.偶然間看到一個(gè)奇怪的現(xiàn)象
>>> 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__.
如果,沒傳入?yún)?shù)就將相當(dāng)于locals(),嗨,我還以為什么語法糖呢......
不知道locals()的老鐵們,可以先自己試一試,之后會(huì)寫
1.vars()走起
vars() 函數(shù)返回參數(shù)對(duì)象object的屬性和屬性值的字典對(duì)象
實(shí)際上調(diào)用了對(duì)象內(nèi)部定義的__dict__屬性
可以試試:
>>> vars(1) TypeError: vars() argument must have __dict__ attribute
由于1這個(gè)對(duì)象沒有__dict__ 屬性,所以報(bào)錯(cuò)
當(dāng)然,如果參數(shù)為空則相當(dāng)于調(diào)用locals()函數(shù)
我們做個(gè)試驗(yàn):
class xx:
def __init__(self):
self.__dict__ = {'':'我是變量__dict__'}
接下來調(diào)用此類:
>>> a = xx()
>>> vars(a)
{'': '我是變量__dict__'}
沒錯(cuò)吧,返回的是該對(duì)象的__dict__屬性
簡單說一下__dict__:
類的靜態(tài)函數(shù)、類函數(shù)、普通函數(shù)、全局變量以及一些內(nèi)置的屬性都是放在類的__dict__里
一些內(nèi)置的數(shù)據(jù)類型是沒有__dict__屬性的(可以嘗試下 vars('我沒有__dict__屬性')這個(gè)語句)
2.總結(jié)
- vars()在沒有傳入?yún)?shù)的時(shí)候,相當(dāng)于調(diào)用locals()
- 若傳入自定義類的對(duì)象,則返回對(duì)象的__dict__屬性,大多數(shù)自定義類會(huì)隱式創(chuàng)建__dict__屬性
- 若傳入一些內(nèi)置的數(shù)據(jù)類型,則由于其沒有__dict__屬性,會(huì)報(bào)錯(cuò):TypeError: vars() argument must have __dict__ attribute
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python爬蟲實(shí)戰(zhàn)steam加密逆向RSA登錄解析
今天帶來爬蟲實(shí)戰(zhàn)的文章。在挑選游戲的過程中感受學(xué)習(xí),讓你突飛猛進(jìn)。本文主要實(shí)現(xiàn)用Python逆向登錄世界上最大的游戲平臺(tái)源碼分享,了解steam加密手段有多高明2021-10-10
PyQt彈出式對(duì)話框的常用方法及標(biāo)準(zhǔn)按鈕類型
這篇文章主要為大家詳細(xì)介紹了PyQt彈出式對(duì)話框的常用方法及標(biāo)準(zhǔn)按鈕類型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02
Python實(shí)現(xiàn)對(duì)adb命令封裝
這篇文章主要介紹了Python實(shí)現(xiàn)對(duì)adb命令封裝,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
python matplotlib 注釋文本箭頭簡單代碼示例
這篇文章主要介紹了python matplotlib 注釋文本箭頭簡單代碼示例,具有一定借鑒價(jià)值。2018-01-01
python利用dir函數(shù)查看類中所有成員函數(shù)示例代碼
這篇文章主要給大家介紹了關(guān)于python如何利用dir函數(shù)查看類中所有成員函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)下吧。2017-09-09
深入分析python數(shù)據(jù)挖掘 Json結(jié)構(gòu)分析
這篇文章通過實(shí)例給大家分析總結(jié)了python數(shù)據(jù)挖掘以及Json結(jié)構(gòu)分析的相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友參考下。2018-04-04
calendar在python3時(shí)間中常用函數(shù)舉例詳解
這篇文章主要介紹了calendar在python3時(shí)間中常用函數(shù)的相關(guān)文章,對(duì)此知識(shí)點(diǎn)有興趣的朋友們可以學(xué)習(xí)下。2020-11-11

