【问题标题】:Use a variable created inside a function as function parameter使用在函数内部创建的变量作为函数参数
【发布时间】:2020-05-08 20:01:57
【问题描述】:

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

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) 它返回c=4

步骤号 2) 但是没有发生,因为变量 z 是在函数内部创建的。我在问是否有办法让函数在函数本身执行期间“复制”函数内部的输入数字z[0] 代替参数b,这样python 就不会考虑z[0]作为一个不存在的变量,但作为一个简单的代码来替换 b 。

【问题讨论】:

  • 你所要求的没有意义,一个参数是一个 name,你有一个表达式计算为某个值,你会如何引用 到你的函数内的参数?我根本不清楚你期望发生什么。如果您希望 b 等于 z[1] 则只需将 b = z[1] 放入您的函数中
  • "一般来说,有没有办法将在函数内部创建的变量作为函数参数插入?"不,没有。这甚至没有意义。请注意,z[1] 甚至不是变量,它是表达式
  • 函数参数不是文本替换。 b 不替换为文字 z[0],表示取表达式的值 z[0]
  • 你为什么要地球
  • @razorF 你能备份并解释这里的基本目标吗?为什么你认为这是必要的。你想解决什么问题?

标签: python function function-parameter


【解决方案1】:

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

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 在函数范围内定义之后,而不是在调用者范围内无法评估它。

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2020-06-05
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多