如果Python中的语句允许您执行以下操作:
if not x:
print "X is false."
Run Code Online (Sandbox Code Playgroud)
如果您使用空列表,空字典,无,0等,这可以工作,但如果您有自己的自定义类怎么办?你能为该类分配一个假值,以便在相同的条件样式中,它将返回false吗?
我有一个代码库,我正在清理前一个开发人员的一些混乱的决定.通常,他做过类似的事情:
from scipy import *
from numpy import *
Run Code Online (Sandbox Code Playgroud)
...当然,这会污染名称空间,并且很难分辨出模块中的属性最初来自何处.
有没有办法让Python分析并为我解决这个问题?有没有人为此做过一个实用程序?如果没有,这样的实用程序怎么可能?
有没有一种有效的方法来查找列表中的最后一个匹配项?使用字符串时,您可以使用rindex找到最后一项:
>>> a="GEORGE"
>>> a.rindex("G")
4
Run Code Online (Sandbox Code Playgroud)
...但是这个方法对于列表不存在:
>>> a=[ "hello", "hello", "Hi." ]
>>> a.rindex("hello")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'rindex'
Run Code Online (Sandbox Code Playgroud)
有没有办法在不必构建大循环的情况下获得这个?如果可以避免的话,我宁愿不使用反向方法,因为顺序很重要,我还需要做一些额外的数学运算来找出对象/将来的位置.这似乎很浪费.
编辑:
为了澄清,我需要这个项目的索引号.
我希望能够以下列风格添加到自定义类:
x=myclass("Something", 7)
x + 3
Run Code Online (Sandbox Code Playgroud)
7,当然,对应于我想通过添加它来增加的内部属性.
该类包含一个引用列表中某个位置的数字.这似乎可以通过普通整数来完成,但我需要它作为一个单独的类型.这一切都是为了模仿旧的游戏语言.该类是其"变量"类,变量的值存储在上述列表中.显然,在较旧版本的游戏中,数组是通过对变量对象实例进行数学运算来伪造的,以获取不同的变量.所以我试图效仿.
我希望能够在页面模板中访问某人放置在GET变量中的一些信息(当然是HTML转义.)我将如何进行此操作?我知道你可以通过视图获取这些信息,但在这种情况下,我宁愿处理HTML方面.
我知道这是通常不应该做的事情,我知道它的原因.但是,我在一个类中创建一个调试函数,该函数应显示有关调用它的模块的一些信息.
我需要知道如何在名称空间中向上一级找到一个应该始终存在于既调用此模块又需要此函数的程序中的变量.
我知道可以通过以下方式获得主要名称空间:
import __main__
Run Code Online (Sandbox Code Playgroud)
但我猜这包括从第一个启动模块开始的所有内容,我只想要一个调用此模块的模块.
我尝试了几种不同的方法,但结果似乎总是相同的。我无法让 Python 读取到这里的文件末尾。大约只进行到一半就停止了。我尝试过二进制和 ASCII 模式,但这两种模式都有相同的结果。我还检查了文件中是否有任何特殊字符被切断,但没有。此外,我尝试指定要阅读的内容,但它仍然在同一个地方被切断。
事情是这样的:
f=open("archives/archivelog", "r")
logtext=f.read()
print logtext
Run Code Online (Sandbox Code Playgroud)
无论我是从 bash 还是从 python 调用它,无论我是普通用户还是 root,都会发生这种情况。
但是,如果该文件与我位于同一目录中,它就可以正常工作。
f=open("archivelog", "r")
logtext=f.read()
print logtext
Run Code Online (Sandbox Code Playgroud)
这就像做梦一样。知道为什么吗?