使用在函数内部创建的变量作为函数参数

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]*2c=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 之后,而不是在调用者的范围内对其进行计算.