我是sympy的新手,我搞不懂
from sympy.core import SS到底是什么?S.true是什么意思?
发布于 2022-10-11 11:28:18
In
S.true是一个单例,用于表示真值,并且与Python True有区别。
print(f'The inverse of True is {~S.true}, not {~True}')指纹:
The inverse of True is False, not -2然而,这种差异通常是隐藏在用户身上的,而且在大多数情况下,不需要直接使用S.true,因为对于我们在内部使用函数S() ( sympify()的简写),渐近处理了这一点。
这个函数和相关的单子是S,单例登记的一部分。
详情如下。
S 是单子的注册表。
在您的上下文中,S是单例登记 (sympy.core.singleton.SingletonRegistry)的常规快捷方式。这个类本身是由基于元类辛格尔顿的渐近创建的。
单例依赖于对象的唯一性而不是值的相等,例如单例S.Half用于rational值1/2,无论它是如何获得的,例如通过除以2/4或作为cos(5*pi/3)的结果。通过使用这个单例,可以根据单例ID/地址(而不是基于值)进行等式检查,因此使用操作符is。这样的比较更容易、更快。更多关于单例模式的报道。
为了实用目的,SingletonRegistry以单子形式保存对常量(如0、1、False、True、EmptySet等)的引用,并且可以使用快捷S访问。
S 也是 simpify的快捷方式。
注意,作为函数使用的S也是函数归化的快捷方式,函数归化用于使程序使用的所有内容都与渐近兼容,例如,它识别与符号相关的字符串并给它们正确的类型。这种归一化任务的一部分是,当常量存在时,将其转换为它们的单例等效项,而当遇到True时,则自动转换为S.true。
S.true 是单身人士控股的
因此,S.true (小写t)访问渐近用于表示True值的单例。通常,在调用True时,不需要使用单例而不需要使用布尔值,不管怎么说,sympify()的计算结果都是渐近的sympify()。但是,关于Sympy 布尔函数的文档中有一些详细的异常。
SymPy版本的
True,一个可以通过S.true访问的单例。 这是SymPy版本的True,用于逻辑模块。使用true而不是True的主要优点是,像~和>>这样的速记布尔操作在该类上将按预期工作,而对于True,它们在1上按位操作。逻辑模块中的函数在计算值为true时将返回这个类。
何时使用S.true**?**
来自同一页:
对于什么时候应该使用
True,什么时候应该在整个SymPy的不同上下文中使用S.true,可能会有一些混淆。需要记住的一件重要事情是,sympify(True)返回S.true。这意味着,在大多数情况下,您只需使用True,它将在必要时自动转换为S.true,类似于通常可以使用1而不是S.One的方式。 经验法则是: “如果可以用任意符号布尔(如Or(x, y)或x > 1)替换所讨论的布尔值,则使用S.true。否则,使用True“
https://stackoverflow.com/questions/41860294
复制相似问题