我正在撰寫一個程式來從用戶那里獲取 3 個引數。前兩個引數是整數,第三個引數是字串,可選。
我知道 None 用作可選引數的空默認值,因此我嘗試了以下操作:
def main(w, l, s=None):
variable_1 = w
variable_2 = l
variable_3 = s
...
...
main(int(sys.argv[1]), int(sys.argv[2]), sys.argv[3])
但是,如果我放第三個值沒有放,則會發生以下錯誤。
IndexError: list index out of range
我相信這是因為對可選引數的檢查晚于系統發現 sys.argv 陣列長度不夠長的時間。那么,在這種情況下,我應該如何以正確的方式使用 None 作為默認值來設定可選引數?感謝您閱讀我的問題。
uj5u.com熱心網友回復:
您必須假設沒有給出第三個引數的可能性。我會這樣做可能如下:
def main(argument):
variable_1 = int(argument[0])
variable_2 = int(argument[1])
variable_3 = argument[2] if len(argument)>1 else None
...
...
main(sys.argv)
uj5u.com熱心網友回復:
你得到,IndexError: list index out of range因為它試圖從sys.argv. 但是如果您不提供第三個引數,它會嘗試將第三個引數傳遞給不存在的函式。要解決此問題,您可以執行以下操作-
def main(w, l, s = None):
variable_1 = w
variable_2 = l
variable_3 = s
...
...
if len(sys.argv) == 3:
main(int(sys.argv[1]), int(sys.argv[2]), sys.argv[3])
else:
main(int(sys.argv[1]), int(sys.argv[2]), None)
如果引數存在,這將只采用引數,否則它將分配None給variable_3.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324089.html
下一篇:無法理解燒瓶邏輯
