使用在函数内部创建的变量作为函数参数
Use a variable created inside a function as function parameter
假设您有以下代码来定义这个简单的函数:
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 简单地获取数字 z[0] 并将它们复制到函数中代替 b
并通过获取数组 z
.
的第一个元素来执行乘法
我用函数的期望输出做了一个逐步的例子来澄清这个问题:
在拒绝上述功能后,我用这些输入调用它
a(2,3,z[0])
函数的执行步骤如下:
1) 它计算数组 z=[2,3]
2) 它计算 c=z[0]*2
即 c=2*2
3) 它returns c=4
但是步骤编号 2) 不会发生,因为变量 z
是在函数内部创建的。我问是否有一种方法可以使函数 "copy" 在函数内部的输入数字 z[0]
代替参数 b
在函数本身的执行过程中,以便 python 不会将 z[0]
视为不存在的变量,而是将其视为替换 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
之后,而不是在调用者的范围内对其进行计算.
假设您有以下代码来定义这个简单的函数:
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 简单地获取数字 z[0] 并将它们复制到函数中代替 b
并通过获取数组 z
.
我用函数的期望输出做了一个逐步的例子来澄清这个问题: 在拒绝上述功能后,我用这些输入调用它
a(2,3,z[0])
函数的执行步骤如下:
1) 它计算数组 z=[2,3]
2) 它计算 c=z[0]*2
即 c=2*2
3) 它returns c=4
但是步骤编号 2) 不会发生,因为变量 z
是在函数内部创建的。我问是否有一种方法可以使函数 "copy" 在函数内部的输入数字 z[0]
代替参数 b
在函数本身的执行过程中,以便 python 不会将 z[0]
视为不存在的变量,而是将其视为替换 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
之后,而不是在调用者的范围内对其进行计算.