Python 当参数在函数f()的作用域下时,为什么会发生此错误?
错误:Python 当参数在函数f()的作用域下时,为什么会发生此错误?,python,function,oop,Python,Function,Oop,错误: def f(a, *arguments): for arg in arguments: print(arg) return arg f(5) 输出如下: def f(a, *arguments): for arg in range(1,4): print(arg) return arg f(5) 现在arg在函数中是全局的。为什么会这样 1 2 3 因为*参数是空的,所以永远不会进入循环。因此,当到达return(ar
def f(a, *arguments):
for arg in arguments:
print(arg)
return arg
f(5)
输出如下:
def f(a, *arguments):
for arg in range(1,4):
print(arg)
return arg
f(5)
现在arg在函数中是全局的。为什么会这样
1
2
3
因为*参数是空的,所以永远不会进入循环。因此,当到达
return(arg)
时,变量仍然未定义。试着用f(5,[1,2,3])
来称呼它,你会看到更像你期望的东西。@Prune的答案适合你的问题。即使arguments
为空,您可能仍希望返回一些内容。可以通过添加参数长度检查来完成此操作
def f(a, *arguments):
for arg in arguments:
print(arg)
return arg
f(5)
def f(a, *arguments):
for arg in arguments:
print(arg)
return arg
f(5)
def f(a, *arguments):
if len(arguments):
for arg in arguments:
print(arg)
return arg # will return last element in arguments always
return -1 # will return default value here
f(5)