假设我在循环内部有一个函数,它接受几个参数,但实际上只有一个参数从循环迭代变为迭代。
示例:
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 ......无法找到”错误。
答案 0 :(得分:0)
您是否尝试过以这种方式指定变量:
global a
global b
.....
否则,如果这些变量在任何函数中声明,则它们被视为局部变量,并且它的实例只能在声明的函数中使用。如果将其指定为全局,则可以在脚本中的任何位置使用它 这是您遇到的唯一 ERROR 吗?
答案 1 :(得分:0)
名称a,b,c ...必须在somemodule
中定义才能生效,然后function
会使用这些值。
由于您的代码不完整,我只能猜测..
您应该使用默认参数或functools.partial
他们产生不同的结果,但我认为其中一个符合您的需求。