python中 s是什么意思_python – “S”在同情中意味着什么

有一点混乱,因为S实际上是两件事.

首先是SingletonRegistry. SymPy中的几个类经常出现,它们是单例化的,也就是说,使用一些元编程,它们只能被实例化一次.例如,每次创建Integer(0)时,这将返回相同的实例Zero.所有单例实例都是S对象的属性,因此Integer(0)也可以作为S.Zero访问.

单一化有两个优点:它可以节省内存,并且可以进行快速比较.它节省了内存,因为无论单例化对象在内存中的表达式中出现多少次,它们都指向内存中的相同单个实例.快速比较来自于您可以使用的是比较Python中的精确实例(通常,您需要使用==来比较事物).因此,您可以测试一个是S.Zero来检查a是否是Integer(0)实例.

在大多数情况下,某些对象是单例化的这一事实是一个您不必担心的实现细节. S对最终用户的主要优点是可以方便地访问难以输入的某些实例,如S.Half(而不是Rational(1,2))或S.true(旁注:S.true是SymPy版本的True.与True不同,它不是int的子类,所以你可以写像~S.true(不是真的)这样的东西,它会给出S.false(与〜的对比,它给出-2,这是’t false作为布尔值).

第二件事是同情的捷径. sympify是将Python对象(如int(1))转换为SymPy对象(如Integer(1))的函数.它还将表达式的字符串形式转换为SymPy表达式,如sympify(x ** 2) – >符号( “X”)** 2. S(1)与sympify(1)相同(基本上,S .__ call__已被定义为呼叫同意).

这是为了方便,因为S是单个字母.它主要用于定义有理数.考虑像x 1/2这样的表达式.如果你直接在Python中输入它,它将评估1/2并给出0.5(或者在Python 2中仅为0,因为整数除法),因为两个参数都是整数.但是,在SymPy中,通常需要两个整数的商来给出一个精确的有理数. Python的评估工作方式,操作符的至少一方需要成为SymPy评估接管的SymPy对象.你可以把它写成x Rational(1,2),但是这更多的是打字.较短的版本是x S(1)/ 2.由于S(1)返回Integer(1),因此除法将返回一个Rational类型,因为它将调用Integer .__ div __,它知道如何返回Rational.

你可能感兴趣的:(python中,s是什么意思)