說:有沒有一種方法,我可以告訴Python來檢查它是否是一個變量
def sumer(num1,num2)
if num1 or num2 is a non-defined variable
print("variable isnt defined")
我怎麼能寫在這樣一個taht實際工作?
編輯:我應該澄清,我希望python進行一項行動,如果它被定義。
說:有沒有一種方法,我可以告訴Python來檢查它是否是一個變量
def sumer(num1,num2)
if num1 or num2 is a non-defined variable
print("variable isnt defined")
我怎麼能寫在這樣一個taht實際工作?
編輯:我應該澄清,我希望python進行一項行動,如果它被定義。
你的函數的嘗試裏面檢查它是否存在不依賴於異常
try:
num1
except NameError:
print "num1 does not exists"
else:
print "num1 exists"
try:
num2
except NameError:
print "num2 does not exists"
else:
print "num2 exists"
'num1'和'num2'將始終存在,因爲它們是函數定義的一部分。 – 2015-03-02 05:54:19
恩替代方法:假設NUM1
if num1 in locals() or num1 in globals():
print('Exists')
是一個包含字符串變量名來尋找。
'num1'和'num2'將始終存在,因爲它們是函數定義的一部分。 – 2015-03-02 05:54:06
我認爲num1是一個包含變量名稱的字符串,用於查找。否則你是正確的。 – Marcin 2015-03-02 05:55:51
在這個例子中你給
def foo(var1 = None, var2 = None):
if var1 is not None: ...
if var2 is not None: ...
注意,他們將永遠是定義,正如所寫的,因爲他們在函數簽名。你要檢查的是他們是否提供,這是上述代碼的作用。
在上面的例子中,我用「is」而不是「==」。這是一個首選項(String comparison in Python: is vs. ==),但我喜歡它,因爲「==」可能會拋出一個異常,例如使用一個數組numpy array
如果已經使用變量名,那麼選擇手動操作是非常奇怪的做法,但可以通過使用locals()和globals()完成,如其他答案中給出的。更多的pythonic將會是duck-type,並且會在例外情況下覆蓋你的軌道。如果您不想明確檢查參數是否已通過,那麼這往往是順其自然的方式。
另一種方法是使用** kwargs或可變長度的關鍵字參數。考慮:
def foo(**kwargs):
if 'my_variable_name' in kwargs.keys(): ...
也會完成任務。
讀控制流蟒頁面可能是一個很好的起點參考地點:
沒有,NUM1和NUM2肯定會在函數體中定義的,因爲它們的參數。您可以檢查它們是否爲None,但是... – 2015-03-02 05:41:48
將它們分配給try-block中的自己 – motoku 2015-03-02 05:42:54