小编ren*_*tov的帖子

如何在使用pdb调试Python时打印所有变量值,而不指定每个变量?

我正在使用pdb调试我的Python脚本,手册说我可以使用p变量命令在某个点打印指定变量的值.但是,如果我有很多变量,比如20个变量,我想追踪所有这些变量的价值呢?如何在不指定每个手动的情况下打印所有这些?以此脚本为例:

a = 1
b = 2
c = 3
Run Code Online (Sandbox Code Playgroud)

我可以使用pdb调试它并使用pa,b,c打印所有这些,如下所示:

$ python -m pdb test.py 
> /media/test.py(1)<module>()
-> a = 1
(Pdb) n
> /media/test.py(2)<module>()
-> b = 2
(Pdb) n
> /media/test.py(3)<module>()
(Pdb) n
--Return--
> /media/test.py(3)<module>()->None
-> c = 3
(Pdb) p a, b, c
(1, 2, 3)
(Pdb) 
Run Code Online (Sandbox Code Playgroud)

但我必须手动指定每个变量.有没有一种方法可以一次打印所有变量,而无需指定每一个变量?

python debugging pdb

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

与空列表比较时使用"=="运算符是错误的吗?

当我使用==运算符对空列表进行比较时,PyCharm(4.0.6)会抱怨,但是当我使用is运算符时它不会:

在此输入图像描述

我想这与PEP 8有关,但问题是当我使用is运算符时,正如PyCharm建议的那样,我有一个假阴性.这是iPython shell中的一个简单示例,表明在这种情况下,==运算符似乎更合适,因为is运算符返回错误否定:

In[2]: actions = []
In[3]: actions == []
Out[3]: True
In[4]: actions is []
Out[4]: False
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么PyCharm ==在与空列表进行比较时会抱怨运营商吗?我是否根据PEP 8做错了什么?

python list pep8 pycharm

28
推荐指数
1
解决办法
1927
查看次数

如何全局禁用Pylint特定错误消息?

我正在使用Sublime Text编辑器和Pylint作为Python代码解析器.它工作正常,但每当我定义一个变量时,我收到以下错误消息(C0103):

错误:常量名称无效.

在本主题中读到一个解决方案可能是# pylint: disable-msg=C0103在源代码中添加一个,但是这个解决方案对我来说还不够,因为我有很多变量定义,我不想通过调用Pylint来调查我的代码.我需要在所有Python的源文件中全局禁用错误消息C0103.我必须永远摆脱这个消息.我怎么能做到这一点?

error-handling pylint

10
推荐指数
2
解决办法
6093
查看次数

pip无法安装包,因为找不到swig2.0二进制文件

我在Windows 7 PowerShell上使用python 2.7.9(64位)和pip 1.5.6以及virtualenv 12.1.1.我创建了一个名为虚拟环境NeuralNetwork和我试图安装的软件包fann2 1.0.7:

PS C:\Python27\envs\NeuralNetwork\Scripts> pip.exe install fann2
Collecting fann2
(...)
Exception: Couldn't find swig2.0 binary!
Run Code Online (Sandbox Code Playgroud)

我想我必须swig2.0 binary为Windows 7 安装这个,但我无法弄清楚它是多么的精彩.我去了一个我在Google上找到的swig网站并下载了swigwin 2.0.12.zip文件附带预编译swig.exe.我阅读了Windows的文档,但我不明白我应该把这个文件放在哪里,以及后来如何继续.我是python的新手,我以前从未听说过swig.有人可以帮帮我吗?

swig pip python-2.7

4
推荐指数
1
解决办法
1813
查看次数

如何在Prolog中创建事实列表?

有这些事实:

man(john).
man(carl).
woman(mary).
woman(rose).
Run Code Online (Sandbox Code Playgroud)

我需要创建谓词人(List),它根据之前的事实返回一个包含每个男人和女人的名字的列表.这就是我需要的输出:

?- people(X).
X = [john, carl, mary, rose]
Run Code Online (Sandbox Code Playgroud)

这是我写的代码,但它不起作用:

people(X) :- man(X) ; woman(X).
people(X|Tail) :- (man(X) ; woman(X)) , people(Tail).
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

prolog

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

私有方法覆盖和可见性

我很难理解以下代码的输出:

class Bar 
{
    public function test() {
        $this->testPublic();
        $this->testPrivate();
    }

    public function testPublic() {
        echo "Bar::testPublic\n";
    }

    private function testPrivate() {
        echo "Bar::testPrivate\n";
    }
}

class Foo extends Bar 
{
    public function testPublic() {
        echo "Foo::testPublic\n";
    }

    private function testPrivate() {
        echo "Foo::testPrivate\n";
    }
}

$myFoo = new foo();
$myFoo->test();
Run Code Online (Sandbox Code Playgroud)

输出:

Foo::testPublic
Bar::testPrivate 
Run Code Online (Sandbox Code Playgroud)

Foo类重写testPublic()testPrivate(),并继承test()。当我调用test()时,有一条包含$ this伪变量的显式指令,因此在创建$ myFoo实例之后,test()函数的最终调用将是$ myFoo-> testPublic()$ myFoo-> testPrivate( ) …

php oop overriding visibility

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

标签 统计

python ×2

debugging ×1

error-handling ×1

list ×1

oop ×1

overriding ×1

pdb ×1

pep8 ×1

php ×1

pip ×1

prolog ×1

pycharm ×1

pylint ×1

python-2.7 ×1

swig ×1

visibility ×1