(記錄一個python3.6的學藝不精的典範(函式判斷呼叫後的引數衝突)2020-01-24
阿新 • • 發佈:2021-01-29
技術標籤:python
記錄一個python3.6的BUG(函式判斷呼叫後的引數衝突)
上程式碼
def b(): i = int(input("input int i = ")) list1 = [[1, 2], [3, 4]] if i == 0: b() else: list1 = [[3,4], [1,2]] return list1[1][1] if __name__ == '__main__': b = b() print(b)
呼叫現象
根據函式b():分別鍵入“0”、“2”。
函式結果並沒有如我所想輸出“2”,也沒有怪異的轉為“4”。
解決
先input的“0”使得函式調轉二次函式後再次input“2”並不能向上返回二次input的數值,導致main函式並沒有獲取任何數值。
解決辦法:
def b():
i = int(input("input int i = "))
list1 = [[1, 2], [3, 4]]
if i == 0:
return b() # 向上返回函式
else:
list1 = [[3,4], [1,2]]
return list1[1][1]
if __name__ == '__main__':
b = b()
print(b)