Python 当我从外部传递值时,它只接受默认值。如何调试此问题
默认情况下,b和c值应为0。当我传递一些参数时,它应该被接受,但当我传递参数时,只有默认值被接受。为什么不采用我传递的参数 守则:Python 当我从外部传递值时,它只接受默认值。如何调试此问题,python,python-2.7,Python,Python 2.7,默认情况下,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)
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()
应该是,
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()
如果要从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)
main中引用的值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)
以保持相同的名称
关于如何设置在未指定值时使用的默认值,最好在函数中设置默认值。在中,在您的案例中添加
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()
什么是x
和y
?这些名称没有定义。x和y是您想要传递的数字。更新了同样的内容。