gpt4 book ai didi

python - 我应该将 sympy 符号传递给函数吗?

转载 作者:行者123 更新时间:2023-11-30 22:38:17 24 4
gpt4 key购买 nike

不将 sympy 符号传递给函数有什么缺点吗?

def compute(alpha,a): #or def compute(a)
return 3*alpha+a

alpha = sympy.symbols("alpha")
expr = compute(alpha,3)

我不必将 alpha 传递给 compute() (我假设是因为它是一个全局变量),现在,我认为它使代码变得更好当我省略它时可读。这被认为是糟糕的设计吗?我想这是一个一般性的“如何处理 python 中的全局变量”问题,正如已被问到的 here ,但答案说这取决于具体的用例。

在调用该函数之前,我仍然必须创建 alpha 符号,如果我不包含它,它就不明显。

最佳答案

与列表(另一个问题有关)相反,SymPy treats symbols (and expressions) as immutable 。此外,它们由您传递给 Symbolsymbols 的字符串唯一标识。为了便于说明,请考虑以下内容:

from sympy import Symbol
print({Symbol("a"), Symbol("a")})
>>> {a}

因此,将 SymPy 符号声明为全局变量并不会造成这么大的问题 - 就像全局定义一些数学常量一样。例如,使用此符号的某些合理代码不会更改它。

因此,根据上下文,以下内容是有意义的:

  1. 全局定义alpha
  2. alpha 作为参数传递给函数,
  3. 在每次调用时在函数内定义 alpha(这是可能的,因为符号仅依赖于关联的字符串)。

如果没有进一步的背景信息,就不可能说出哪一种适用于您的情况。

<小时/>

¹ 请注意,不合理的代码仍然可以执行此操作,例如:

from sympy.abc import a
from sympy.abc import a as a_2
a.name = "b"
print(a_2)
>>> b

关于python - 我应该将 sympy 符号传递给函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634280/

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