我试过pprint
,print
前者只打印Unicode版本,后者不做漂亮的打印.
from sympy import symbols, Function
import sympy.functions as sym
from sympy import init_printing
init_printing(use_latex=True)
from sympy import pprint
from sympy import Symbol
x = Symbol('x')
# If a cell contains only the following, it will render perfectly.
(pi + x)**2
# However I would like to control what to print in a function,
# so that multiple expressions can be printed from a single notebook cell.
pprint((pi + x)**2)
Run Code Online (Sandbox Code Playgroud) 我想像配置文件一样使用.py文件.因此,使用{...}
符号我可以使用字符串作为键创建字典,但定义顺序在标准python字典中丢失.
我的问题:是否有可能覆盖{...}
符号,以便我得到一个OrderedDict()
而不是dict()
?
我希望用OrderedDict(dict = OrderedDict
)简单地覆盖dict构造函数会起作用,但事实并非如此.
例如:
dict = OrderedDict
dictname = {
'B key': 'value1',
'A key': 'value2',
'C key': 'value3'
}
print dictname.items()
Run Code Online (Sandbox Code Playgroud)
输出:
[('B key', 'value1'), ('A key', 'value2'), ('C key', 'value3')]
Run Code Online (Sandbox Code Playgroud) 我被要求测试第三方提供的图书馆.众所周知,该库对于n个有效数字是准确的.可以安全地忽略任何不太重要的错误.我想写一个函数来帮助我比较结果:
def nearlyequal( a, b, sigfig=5 ):
Run Code Online (Sandbox Code Playgroud)
此函数的目的是确定两个浮点数(a和b)是否大致相等.如果a == b(完全匹配),或者当以十进制写入舍入为sigfig有效数字时a和b具有相同的值,则该函数将返回True .
任何人都可以建议一个好的实施?我写了一个迷你单元测试.除非你能在我的测试中看到一个错误,否则一个好的实现应该传递以下内容:
assert nearlyequal(1, 1, 5)
assert nearlyequal(1.0, 1.0, 5)
assert nearlyequal(1.0, 1.0, 5)
assert nearlyequal(-1e-9, 1e-9, 5)
assert nearlyequal(1e9, 1e9 + 1 , 5)
assert not nearlyequal( 1e4, 1e4 + 1, 5)
assert nearlyequal( 0.0, 1e-15, 5 )
assert not nearlyequal( 0.0, 1e-4, 6 )
Run Code Online (Sandbox Code Playgroud)
补充说明:
文件说明:
装饰器还提供
cache_clear()
清除或使缓存无效的功能.
它没有提供有关如何使用的任何示例或指导 cache_clear()
我有两个问题:
cache_clear()
从不同的功能运行?cache_clear()
有条件地将一个调用放在正在缓存的函数中,它会被执行吗?numpy中是否有任何函数可以将第一列下面的数组分组?
我在互联网上找不到任何好的答案..
>>> a
array([[ 1, 275],
[ 1, 441],
[ 1, 494],
[ 1, 593],
[ 2, 679],
[ 2, 533],
[ 2, 686],
[ 3, 559],
[ 3, 219],
[ 3, 455],
[ 4, 605],
[ 4, 468],
[ 4, 692],
[ 4, 613]])
Run Code Online (Sandbox Code Playgroud)
通缉输出:
array([[[275, 441, 494, 593]],
[[679, 533, 686]],
[[559, 219, 455]],
[[605, 468, 692, 613]]], dtype=object)
Run Code Online (Sandbox Code Playgroud) 如何在MATLAB中定义3D矩阵?
例如,尺寸(8 x 4 x 20)的矩阵或者将第三维添加到现有的2D矩阵中?
我们都知道这eval
很危险,即使你隐藏了危险的函数,因为你可以使用Python的内省功能深入挖掘并重新提取它们.例如,即使您删除__builtins__
,也可以使用它来检索它们
[c for c in ().__class__.__base__.__subclasses__()
if c.__name__ == 'catch_warnings'][0]()._module.__builtins__
Run Code Online (Sandbox Code Playgroud)
但是,我见过的每个例子都使用属性访问.如果我禁用所有内置函数并禁用属性访问(通过使用Python令牌化程序对输入进行标记,并在具有属性访问令牌时拒绝它),该怎么办?
在你问之前,不,对于我的用例,我不需要其中任何一个,所以它不会太瘫痪.
我想要做的是让SymPy的同情功能更安全.目前,它对输入进行了标记,对其进行了一些转换,并在命名空间中对其进行了演绎.但它不安全,因为它允许属性访问(即使它真的不需要它).
我正在调试f()
没有的方法return
.
class A(object):
def __init__(self):
self.X = []
def f(self):
for i in range(10):
self.X.append(i)
Run Code Online (Sandbox Code Playgroud)
我需要看看这个方法X
在调用后如何修改变量.为此,我return
在方法的末尾插入一个,并在那里设置断点:
这样,一旦方法到达它return
,我就可以看到我的变量的值X
.
这样做,但我很确定有更好的方法.每次我需要调试它时编辑方法或函数似乎很愚蠢.
问题:
是否有不同的方法(例如调试器中的选项)在没有的方法结束时设置断点return
?
(请注意,在鼠标悬停时,在函数调用和使用时设置断点Step Over不会显示X
,因为该函数是从其他模块调用的.)
我想知道在一些单元测试中使用随机值的缺点是什么.
我说的是一个大型系统,有许多服务器和高容量的非确定性输入.当我说非确定性时,我正在谈论发送的消息,你抓住你能做到的,尽你所能.有许多类型的消息,因此输入可能非常复杂.我无法想象为这么多场景编写代码,而简单的非随机(确定性)消息的生成器也不够好.这就是为什么我想要进行随机单元测试或服务器测试,以便在出现故障时写入日志.我更喜欢unittest而不是随机注射器,因为我希望它作为夜间构建自动化测试的一部分运行.
我喜欢在Windows 7下使用Scapy和Python v2.7.
我使用的特定Python发行版是Enthought Python发行版7.02.
python ×8
numpy ×2
arrays ×1
breakpoints ×1
built-in ×1
debugging ×1
dictionary ×1
eval ×1
jupyter ×1
math ×1
matlab ×1
matrix ×1
overriding ×1
pretty-print ×1
pycharm ×1
python-2.7 ×1
python-3.4 ×1
python-3.x ×1
scapy ×1
sympy ×1
unit-testing ×1
windows ×1