假设您具有以下代码来定义此简单功能:
def a(x,y,b):
z=[x,y]
c=b*2
return c
我想用值z[0]
作为参数b
的输入来调用此函数。如果我尝试通过以下方式调用该函数:
a(x,y,z[0])
我收到一个错误,因为变量'z'是在函数内部定义的,并且直到函数运行才存在。
我以为,在调用函数时,python会简单地用函数内部的相对参数替换插入的输入,以执行所需的计算,而与输入变量的预先存在无关。我的意思是,例如,在我的函数中,如果我将z[0]
作为输入插入,我希望python只是将数字[[0]]复制到函数b
中,然后通过取第一个来执行乘法数组z
的元素。
我通过逐步说明示例,并提供了所需的函数输出,以澄清问题:定义完上述功能后,我将使用以下输入进行调用]
a(2,3,z[0])
这里是执行功能的步骤:
1)计算数组z=[2,3]
2)计算c=z[0]*2
,即c=2*2
3)返回c=4
步骤号2)不会发生,因为变量z
是在函数内部创建的。我在问是否有一种方法可以在执行函数本身的过程中使函数“复制”函数内部的输入数字z[0]
而不是参数b
,因此python不考虑z[0]
作为不存在的变量,但作为用b替换b的简单代码。
def a(x,y,b):
z=[x,y]
c=eval(b)*2
return c
r = a(2,3,'z[0]')
print(r)
如果您好奇为什么这样做,它将延迟对表达式z[0]
的求值,直到在函数范围内定义了z
之后,而不是在调用者的范围内求值失败。