2017-04-17 12 views
0

默認情況下,b和c值應該是0.當我傳遞一些參數,它應該採取,但是當我傳遞參數只有默認值正在採取。它爲什麼不採取參數,我路過當我傳遞來自外部的值時,它僅採用默認值。我怎麼能調試這個問題

驗證碼:

import sys 

def add(a, b, c): 
    d = int(a) + int(b) + int(c) 
    print "add: " + str(d) 

def main(): 
    a = sys.argv[1] 
    b = sys.argv[2] 
    c = sys.argv[3] 
    ret = add(a, b=0, c=0) 

if __name__ == '__main__': 
    main() 

回答

0

應該是這樣,

import sys 

def add(a, b=0, c=0): 
    d = int(a) + int(b) + int(c) 
    print "add: " + str(d) 

def main(): 
    a = sys.argv[1] 
    b = sys.argv[2] 
    c = sys.argv[3] 
    ret = add(a, b=5, c=6) 

if __name__ == '__main__': 
    main() 
+1

什麼是'x'和'y'?這些名稱沒有定義。 – Wombatz

+0

x和y是你想要傳遞的數字。更新相同。 –

0

如果你想從sys.argv獲取值和默認爲零,如果不設置,你可以嘗試這樣的:

a = sys.argv[1] if len(sys.argv) > 1 else 0 
b = sys.argv[2] if len(sys.argv) > 2 else 0 
c = sys.argv[3] if len(sys.argv) > 3 else 0 
ret = add(a, b, c) 
0

值b和c參考主要與add()的輸入不同。

將此視爲澄清通過哪些值的方式。

def main(): 
    x = sys.argv[1] 
    y = sys.argv[2] 
    z = sys.argv[3] 
    ret = add(x, b=y, c=z) 

您可以設置b = sys.argv[2],然後調用add(a, b=b, c)保持相同的名稱。

關於如何設置如果沒有指定值時要使用的默認值,最好的做法是將默認值放在函數中。在你的情況下,在add之內。

import sys 

def add(a, b=0, c=0): # default b and c to 0 but a is not set with default 
    d = int(a) + int(b) + int(c) 
    print "add: " + str(d) 
    return d # return value otherwise you return None 

def main(): 
    a = sys.argv[1] 
    b = sys.argv[2] 
    c = sys.argv[3] 
    # store d from add() to ret variable. 
    ret = add(a, b, c) 

if __name__ == '__main__': 
    main() 
相關問題