Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将重复参数传递给循环函数_Python_Loops_Global Variables_Local - Fatal编程技术网

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
的评论,请参见以下帖子: