1. 程式人生 > 其它 >(記錄一個python3.6的學藝不精的典範(函式判斷呼叫後的引數衝突)2020-01-24

(記錄一個python3.6的學藝不精的典範(函式判斷呼叫後的引數衝突)2020-01-24

技術標籤: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)

在這裡插入圖片描述