杂项¶
杂项内容,这些内容实际上并不适合放在其他任何地方。
- sympy.utilities.misc.as_int(n, strict=True)[源代码][源代码]¶
将参数转换为内置整数。
返回值保证与输入值相等。如果输入值为非整数值,则引发 ValueError。当
strict
为 True 时,使用 __index__,而当其为 False 时,使用int
。示例
>>> from sympy.utilities.misc import as_int >>> from sympy import sqrt, S
该函数主要关注于清理需要处理内置整数的函数的输入,因此任何明确是整数的内容都应作为 int 返回:
>>> as_int(S(3)) 3
浮点数由于精度有限,不被认为是精确的,除非
strict
标志为 False,否则会引发错误。这种精度问题在大浮点数中变得明显:>>> big = 1e23 >>> type(big) is float True >>> big == int(big) True >>> as_int(big) Traceback (most recent call last): ... ValueError: ... is not an integer >>> as_int(big, strict=False) 99999999999999991611392
输入可能是一个复杂整数值的表示时,默认情况下也会被拒绝:
>>> one = sqrt(3 + 2*sqrt(2)) - sqrt(2) >>> int(one) == 1 True >>> as_int(one) Traceback (most recent call last): ... ValueError: ... is not an integer
- sympy.utilities.misc.debug_decorator(func)[源代码][源代码]¶
如果 SYMPY_DEBUG 为 True,它将打印一个带有参数和所有装饰函数结果的漂亮的执行树,否则什么都不做。
- sympy.utilities.misc.debugf(string, args)[源代码][源代码]¶
如果 SYMPY_DEBUG 为 True,则打印
string%args
,否则不执行任何操作。这用于使用格式化字符串的调试消息。
- sympy.utilities.misc.filldedent(s, w=70, **kwargs)[源代码][源代码]¶
从
s
的副本中去除前导和尾随的空行,然后进行缩进、填充并返回。空行剥离用于处理像这样的文档字符串,它们在初始三重引号后以换行符开始,在字符串开头插入一个空行。
额外的关键字参数将被传递给
textwrap.fill()
。
- sympy.utilities.misc.find_executable(executable, path=None)[源代码][源代码]¶
尝试在 ‘path’ 中列出的目录中查找 ‘executable’(’path’ 是一个字符串,列出了由 ‘os.pathsep’ 分隔的目录;默认为 os.environ[‘PATH’])。返回完整的文件名,如果未找到则返回 None。
- sympy.utilities.misc.func_name(x, short=False)[源代码][源代码]¶
返回 \(x\) 的函数名(如果已定义),否则返回 \(type(x)\)。如果 short 为 True 且结果有更短的别名,则返回该别名。
示例
>>> from sympy.utilities.misc import func_name >>> from sympy import Matrix >>> from sympy.abc import x >>> func_name(Matrix.eye(3)) 'MutableDenseMatrix' >>> func_name(x < 1) 'StrictLessThan' >>> func_name(x < 1, short=True) 'Lt'
- sympy.utilities.misc.rawlines(s)[源代码][源代码]¶
返回一个可复制粘贴的字符串,当打印时,与输入等效。当字符串中有多行时使用此方法。返回的字符串格式化后可以在测试中很好地缩进;在某些情况下,它被包装在dedent函数中,该函数必须从textwrap导入。
参见
示例
注意:因为下面的示例中有需要转义的字符,因为它们本身位于三重引号的文档字符串中,所以下面的表达式看起来比在解释器窗口中打印时更复杂。
>>> from sympy.utilities.misc import rawlines >>> from sympy import TableForm >>> s = str(TableForm([[1, 10]], headings=(None, ['a', 'bee']))) >>> print(rawlines(s)) ( 'a bee\n' '-----\n' '1 10 ' ) >>> print(rawlines('''this ... that''')) dedent('''\ this that''')
>>> print(rawlines('''this ... that ... ''')) dedent('''\ this that ''')
>>> s = """this ... is a triple ''' ... """ >>> print(rawlines(s)) dedent("""\ this is a triple ''' """)
>>> print(rawlines('''this ... that ... ''')) ( 'this\n' 'that\n' ' ' )
- sympy.utilities.misc.replace(string, *reps)[源代码][源代码]¶
返回
string
,其中reps
中的所有键都被其对应的值替换,优先替换较长的字符串,无论它们给出的顺序如何。reps
可以作为元组或单个映射传递。参考文献
[1]https://stackoverflow.com/questions/6116978/如何替换字符串中的多个子字符串
示例
>>> from sympy.utilities.misc import replace >>> replace('foo', {'oo': 'ar', 'f': 'b'}) 'bar' >>> replace("spamham sha", ("spam", "eggs"), ("sha","md5")) 'eggsham md5'
如果映射中的键重叠(即长度相同且在开头/结尾有相同的序列),则无法保证会得到唯一的答案:
>>> reps = [ ... ('ab', 'x'), ... ('bc', 'y')] >>> replace('abc', *reps) in ('xc', 'ay') True
- sympy.utilities.misc.strlines(s, c=64, short=False)[源代码][源代码]¶
返回一个可复制粘贴的字符串,当打印时,与输入等效。行将被括号包围,且每行长度不超过 c(默认 64)个字符。如果行包含换行符,将返回 \(rawlines\) 结果。如果
short
为 True(默认是 False),那么如果只有一行,将返回不带边界括号的字符串。参见
示例
>>> from sympy.utilities.misc import strlines >>> q = 'this is a long string that should be broken into shorter lines' >>> print(strlines(q, 40)) ( 'this is a long string that should be b' 'roken into shorter lines' ) >>> q == ( ... 'this is a long string that should be b' ... 'roken into shorter lines' ... ) True
- sympy.utilities.misc.translate(s, a, b=None, c=None)[源代码][源代码]¶
返回
s
,其中字符已被替换或删除。示例
>>> from sympy.utilities.misc import translate >>> abc = 'abc' >>> translate(abc, None, 'a') 'bc' >>> translate(abc, {'a': 'x'}, 'c') 'xb' >>> translate(abc, {'abc': 'x', 'a': 'y'}) 'x'
>>> translate('abcd', 'ac', 'AC', 'd') 'AbC'
如果在映射中键重叠的长度相同并且在开头/结尾有一些相同的序列,则无法保证会得到唯一的答案:
>>> translate(abc, {'ab': 'x', 'bc': 'y'}) in ('xc', 'ay') True