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

问题描述 投票:0回答:1

假设您具有以下代码来定义此简单功能:

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的简单代码。

python function function-parameter
1个回答
0
投票
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之后,而不是在调用者的范围内求值失败。

© www.soinside.com 2019 - 2024. All rights reserved.