gpt4 book ai didi

python - 在函数内部评估方法,其中方法参数尚未传递

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:52 24 4
gpt4 key购买 nike

考虑以下 Python3 代码,我在其中定义了函数 f(t)^2 并对其求微分:

import sympy as sp


def differentiate(func):
return func.diff(arg)


fct = sp.symbols('f', cls=sp.Function)
arg = sp.symbols('t')

expr = fct(arg) ** 2

print(differentiate(expr)) # returns 2*f(t)*Derivative(f(t), t)

我的问题是,为什么没有必要也将 Python 变量的名称 arg 传递给 differentiate 函数?

(我只传递表达式 expr,我相信它是 sympy 为我创建的对象。应用于此的方法 diff 如何知道 arg? )

最佳答案

我认为这只是糟糕的代码,因为它依赖于全局变量 arg 而它应该是 differentiate 的参数之一。例如,如果您将此变量称为 argument,则该函数将不起作用。

此代码有效是因为arg 是一个全局 变量,任何函数都可以访问。因此,解释器“看到”函数中名称 arg 的用法并问自己:“在本地范围内是否有一个名为 arg 的变量?” - 没有; “global 范围内是否有一个名为 arg 的变量?” - 是的;因此,它将它作为参数传递给 func.diff

关于python - 在函数内部评估方法,其中方法参数尚未传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47858096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com