首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用在函数中创建的变量作为函数参数

使用在函数中创建的变量作为函数参数
EN

Stack Overflow用户
提问于 2020-05-09 04:01:58
回答 1查看 80关注 0票数 0

假设您有以下代码来定义这个简单的函数:

代码语言:javascript
复制
def a(x,y,b):

    z=[x,y]

    c=b*2

    return c

我希望使用值z[0]作为参数b的输入来调用此函数。如果我尝试以以下方式调用该函数:

代码语言:javascript
复制
a(x,y,z[0])

我得到一个错误,因为变量'z‘是在函数内部定义的,直到函数运行时才存在。

我认为当一个函数被调用时,python会简单地将插入的输入替换为函数内部的相关参数,以执行所需的计算,而不依赖于输入变量的预先存在。我的意思是,例如,在我的函数中,如果我插入作为输入的z[0],我会期望python简单地接受数字z,并将它们复制到函数中,代替b,然后通过接受数组z的第一个元素来执行乘法。

我用函数的期望输出一步一步地做了一个例子来澄清这个问题:在定义了上面描述的函数之后,我用这些输入调用它

代码语言:javascript
复制
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的一段简单代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 06:08:11

太可怕了,但我开始觉得这就是你想要的。但是不要这样做。真的。

代码语言:javascript
复制
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之后,而不是在调用者的作用域中无法计算它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61687191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档