相关疑难解决方法(0)

检查Python代码的正确性

在C++中,我有编译器告诉我重构后代码是否有问题.如何确保Python代码在更改后至少是正确的?可能有一些愚蠢的错误,如错误的函数名称等,在编译时很容易找到.

谢谢

python compiler-construction correctness

6
推荐指数
1
解决办法
2047
查看次数

成员函数的Python @precondition/@postcondition - 如何?

我正在尝试对类的成员函数返回的值使用@postcondition装饰器,如下所示:

def out_gt0(retval, inval):
    assert retval > 0, "Return value < 0"

class foo(object):
    def __init__(self, w, h):
        self.width = w
        self.height = h
    @postcondition(out_gt0)
    def bar(self):
        return -1
Run Code Online (Sandbox Code Playgroud)

当我尝试调用成员函数'bar'(并因此激发@postcondition提供警告)时,我得到了这个:

>>> f = foo(2,3)
>>> f.bar()
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    f.bar()
  File "<pyshell#8>", line 106, in __call__
    result = self._func(*args, **kwargs)
TypeError: bar() takes exactly 1 argument (0 given)
>>> 
Run Code Online (Sandbox Code Playgroud)

我对@postcondition的定义是http://wiki.python.org/moin/PythonDecoratorLibrary#Pre-.2FPost-Conditions.

我认为错误的产生是因为作为@postcondition基础的函数不期望处理成员函数(当然我见过的所有例子都只是使用普通的旧函数)但是我不知道如何修复它所以我可以这样做吗?

将不胜感激任何建议.

python decorator

6
推荐指数
2
解决办法
4720
查看次数

何时在Matlab中使用assert()?

由于Matlab被解释,通常会在执行函数签名的函数开头花费大量时间.例如

if nargin ~= 2; error('must provide two input args a and b'); end
if a < 0||a ~=floor(a); error('input arg1 must be positive non-zero integer'); end 
if ~isa(b,'cell') ...
Run Code Online (Sandbox Code Playgroud)

相反,使用Matlab的assert()会更好吗?如果没有,何时适合在Matlab中使用assert()?

有对在生产中使用代码断言的大讨论在这里,但我不能肯定这适用于解释的代码.同样,这里有另一个很好的讨论,我同意@Dan Dyer关于断言表达对当前状态的看法.然而,在这里看一下类似的Python讨论人们说,只使用断言来应对永远不会发生的情况(例如异常情况的异常),这与之前的引用有点矛盾.

也许这更像是一个关于断言在解释语言中扮演的角色的问题,而不是关于Matlab的问题.

matlab assert exception-handling

6
推荐指数
1
解决办法
4196
查看次数

在Python优化模式下运行gunicorn

通过优化模式,我的意思是没有断言,可能没有文档字符串,.pyo而不是.pyc.

简而言之,我有一个 django 项目,以标准样式 ( ) 通过 Gunicorn(v18.0)gunicorn 'module.wsgi:application'运行

我无法在文档或在线其他地方找到参考。

django performance gunicorn

5
推荐指数
1
解决办法
1668
查看次数

使用 Python 和 Tkinter 从剪贴板复制

我正在尝试从 Windows 剪贴板中获取一个字符串并将其粘贴到 Tkinter GUI 中的列表框中。在尝试复制图像之前它效果很好。

clipboardData = root.selection_get(selection="CLIPBOARD")
listbox.insert(0, clipboardData)
Run Code Online (Sandbox Code Playgroud)

我尝试过使用 Tkinter、pyperclip 和剪贴板。如何避免非文本内容?

python clipboard tkinter

5
推荐指数
1
解决办法
2964
查看次数

使用assert验证python中有关参数的假设是不好的做法吗?

我正在编写一个类,它__init__使用id或slug参数,但不能同时使用.我想验证参数是否符合预期.使用一个assert用于验证关于参数的假设的特定目的是否合适和良好实践,或者如果参数不符合预期,我是否应该提出异常?

例如,

def __init__(self, id=None, slug=None):
    assert((id or slug) and not (id and slug))
Run Code Online (Sandbox Code Playgroud)

python

4
推荐指数
2
解决办法
1124
查看次数

将 float 转换为 int 并在舍入的情况下引发异常

所以例如我有:

a = np.array(...)
a[idx / 3] = 5
Run Code Online (Sandbox Code Playgroud)

idx / 3将是 a float,即使它在该程序中始终具有整数值。这将引发VisibleDeprecationWarning或 较新的 Python 版本已不再支持。

是否有内置函数可以将浮点数转换为整数,并且如果输入值不是整数,则可以引发异常?或者正确的方法是什么?

我知道这也可能会导致一些关于整数“有多接近”的问题,这就是为什么我问而不只是相信floor/ ceil

python floating-point numpy

3
推荐指数
1
解决办法
371
查看次数