[基礎]Python判斷變量是否定義

判斷變量是否定義

參考:
python中檢測某個變量是否有定義
dir介紹
你是否會碰到如下情形:

# 如果C有值就取C,否則自定義為8
a = 8 if not c else c
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    a = 8 if not c else c
NameError: name 'c' is not defined

呵呵漾橙,結果,發(fā)現(xiàn)c未定義楞卡,not defined霜运,不是None

碰到這種問題該怎么解決呢脾歇?

目前判斷變量有二種方式:

  1. 一般方式:try···except
try:
    a = 8 if not c else c
except:
    a = 8
  1. dir() /local()判斷
    我們先來看看IDLE 上他們的表現(xiàn)
Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
[GCC 4.8.4] on linux
Type "copyright", "credits" or "license()" for more information.
>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>> locals()
{'__doc__': None, '__package__': None, '__builtins__': <module 'builtins' (built-in)>, '__spec__': None, '__name__': '__main__', '__loader__': <class '_frozen_importlib.BuiltinImporter'>}
>>> locals().key()
dict_keys(['__doc__', '__package__', '__builtins__', '__spec__', '__name__', '__loader__'])

我需要判斷變量是否在name

# local() 方式就不介紹了,本質一樣
a = 8 if not 'c' in dir() or not c else 8

# 查看一下dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a']


dir()介紹

中文說明:不帶參數(shù)時淘捡,返回當前范圍內的變量藕各、方法和定義的類型列表;帶參數(shù)時焦除,返回參數(shù)的屬性激况、方法列表。如果參數(shù)包含方法dir()膘魄,該方法將被調用乌逐。如果參數(shù)不包含dir(),該方法將最大限度地收集參數(shù)信息创葡。
參數(shù)object: 對象浙踢、變量、類型灿渴。
版本:該函數(shù)在python各個版本中都有洛波,但是每個版本中顯示的屬性細節(jié)有所不同。使用時注意區(qū)別骚露。

代碼示例:

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> import struct
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'struct']
>>> dir(struct)
['Struct', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from']
>>> class Person(object):
...     def __dir__(self):
...             return ["name", "age", "country"]
...
>>> dir(Person)
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__','__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
>>> tom = Person()
>>> dir(tom)
['age', 'country', 'name']
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蹬挤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子棘幸,更是在濱河造成了極大的恐慌焰扳,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件够话,死亡現(xiàn)場離奇詭異蓝翰,居然都是意外死亡,警方通過查閱死者的電腦和手機女嘲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門畜份,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人欣尼,你說我怎么就攤上這事爆雹。” “怎么了愕鼓?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵钙态,是天一觀的道長。 經(jīng)常有香客問我菇晃,道長册倒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任磺送,我火速辦了婚禮驻子,結果婚禮上灿意,老公的妹妹穿的比我還像新娘。我一直安慰自己崇呵,他們只是感情好缤剧,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著域慷,像睡著了一般荒辕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犹褒,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天抵窒,我揣著相機與錄音,去河邊找鬼化漆。 笑死估脆,一個胖子當著我的面吹牛,可吹牛的內容都是我干的座云。 我是一名探鬼主播疙赠,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼朦拖!你這毒婦竟也來了圃阳?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤璧帝,失蹤者是張志新(化名)和其女友劉穎捍岳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睬隶,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡锣夹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了苏潜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片银萍。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖恤左,靈堂內的尸體忽然破棺而出贴唇,到底是詐尸還是另有隱情,我是刑警寧澤飞袋,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布戳气,位于F島的核電站,受9級特大地震影響巧鸭,放射性物質發(fā)生泄漏瓶您。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望览闰。 院中可真熱鬧芯肤,春花似錦、人聲如沸压鉴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽油吭。三九已至,卻和暖如春署拟,著一層夾襖步出監(jiān)牢的瞬間婉宰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工推穷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留心包,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓馒铃,卻偏偏與公主長得像蟹腾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子区宇,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向對象的用電信息數(shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,968評論 6 13
  • 前言 ||| 第二章 使用ArcPy編寫腳本 Python支持大部分在其他語言中出現(xiàn)的編程結構娃殖。在本章內容中琉苇,我們...
    muyan閱讀 90,038評論 10 55
  • 定義類并創(chuàng)建實例 在Python中已烤,類通過 class 關鍵字定義疫衩。以 Person 為例掉伏,定義一個Person類...
    績重KF閱讀 3,952評論 0 13
  • 忙里偷閑鬼雀,就又把紅樓夢翻將出來看看仍秤。這一次看紅樓夢看到的不是一個人一味的好畴博,卻也不是一味的壞吮成。曹公把紅樓夢里微小的...
    小金帽閱讀 592評論 0 2
  • 我哥傅立本是我見過智商最高的人逼裆。 他從幼兒園領小紅花到一路全額獎學金上了名校郁稍,學習對于他來講簡直就像快刀切豆腐一樣...
    傅立葉閱讀 2,147評論 7 5