Python 将重复参数传递给循环函数
假设我在一个循环中有一个函数,它接受多个参数,但实际上只有一个参数在循环的一次迭代中发生变化 例如:Python 将重复参数传递给循环函数,python,loops,global-variables,local,Python,Loops,Global Variables,Local,假设我在一个循环中有一个函数,它接受多个参数,但实际上只有一个参数在循环的一次迭代中发生变化 例如: for i in range(10): function(i, a, b, c, d, e) 重复将参数a、b、c、d、e传递到函数中是否会导致速度下降?我模糊地理解了所有可变类型是如何以“类似引用”的方式传递的。有什么更好的方法可以做到这一点 我试过这个: a = b = ... def function(i) for i in range(10): function(i)
for i in range(10):
function(i, a, b, c, d, e)
重复将参数a、b、c、d、e传递到函数中是否会导致速度下降?我模糊地理解了所有可变类型是如何以“类似引用”的方式传递的。有什么更好的方法可以做到这一点
我试过这个:
a =
b =
...
def function(i)
for i in range(10):
function(i)
这似乎奏效了
令人沮丧的是,以下内容似乎不起作用,我也没有很好地理解为什么不这样做的在线解释:
from somemodule import function
for i in range(10):
function(i)
其中函数的定义与上述相同。我一直收到一个“全局变量a、b、c…找不到”错误。您是否尝试过以这种方式指定变量:
global a
global b
.....
否则,如果这些变量在任何函数中声明,则它们被视为局部变量,并且其实例只能在声明的函数中使用。如果将其指定为全局,则可在脚本中的任何位置使用。这是您遇到的唯一错误,对吗?命名a、b、c。。。必须在
somemodule
中定义,才能使其工作,然后函数使用这些值
由于您的代码不完整,我只能猜测..
您应该使用默认参数或
它们产生不同的结果,但我认为其中一个适合您的需要。好吧,您的代码不完整,但我猜在第二种情况下,函数是在somemodule
中定义的,但是变量a
,b
。。。不是。由于模块在Python中提供作用域,所以应该在somemodule
中定义这些变量。如果我弄错了,请您提供一个MWE?在第二种情况下,a
和b
分配(读取定义)在哪里?global a
允许您为函数中的全局名称a
分配一个值。如果您只需要引用它(即在表达式中使用它)global
是不必要的。请参阅LEGB范围规则。虽然这可能“解决”错误(这一点尚不清楚),但一般来说,使用globals被认为是一种不好的做法。因为OP表明他/她是python的新手,所以我建议不要这样做。99%的时间global
可以通过使用适当的范围来避免。有关python中使用global
的评论,请参见以下帖子: