簡(jiǎn)單瞅瞅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__.
如果,沒(méi)傳入?yún)?shù)就將相當(dāng)于locals(),嗨,我還以為什么語(yǔ)法糖呢......
不知道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ì)象沒(méi)有__dict__ 屬性,所以報(bào)錯(cuò)
當(dāng)然,如果參數(shù)為空則相當(dāng)于調(diào)用locals()函數(shù)
我們做個(gè)試驗(yàn):
class xx: def __init__(self): self.__dict__ = {'':'我是變量__dict__'}
接下來(lái)調(diào)用此類:
>>> a = xx() >>> vars(a) {'': '我是變量__dict__'}
沒(méi)錯(cuò)吧,返回的是該對(duì)象的__dict__屬性
簡(jiǎn)單說(shuō)一下__dict__:
類的靜態(tài)函數(shù)、類函數(shù)、普通函數(shù)、全局變量以及一些內(nèi)置的屬性都是放在類的__dict__里
一些內(nèi)置的數(shù)據(jù)類型是沒(méi)有__dict__屬性的(可以嘗試下 vars('我沒(méi)有__dict__屬性')這個(gè)語(yǔ)句)
2.總結(jié)
- vars()在沒(méi)有傳入?yún)?shù)的時(shí)候,相當(dāng)于調(diào)用locals()
- 若傳入自定義類的對(duì)象,則返回對(duì)象的__dict__屬性,大多數(shù)自定義類會(huì)隱式創(chuàng)建__dict__屬性
- 若傳入一些內(nèi)置的數(shù)據(jù)類型,則由于其沒(méi)有__dict__屬性,會(huì)報(bào)錯(cuò):TypeError: vars() argument must have __dict__ attribute
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python定時(shí)任務(wù)框架APScheduler安裝使用詳解
這篇文章主要介紹了Python定時(shí)任務(wù)框架APScheduler安裝使用詳解,重點(diǎn)介紹如何使用APscheduler實(shí)現(xiàn)python定時(shí)任務(wù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)Python定時(shí)任務(wù)APScheduler相關(guān)知識(shí)感興趣的朋友一起看看吧2022-05-05淺談Python中重載isinstance繼承關(guān)系的問(wèn)題
本篇文章主要介紹了淺談Python中重載isinstance繼承關(guān)系的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05python playwright 自動(dòng)等待和斷言詳解
這篇文章主要為大家介紹了python playwright 自動(dòng)等待和斷言,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-11-11Python使用matplotlib實(shí)現(xiàn)繪制自定義圖形功能示例
這篇文章主要介紹了Python使用matplotlib實(shí)現(xiàn)繪制自定義圖形功能,結(jié)合實(shí)例形式分析了Python基于matplotlib模塊實(shí)現(xiàn)自定義圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2018-01-01