这是我试图变成列表理解的代码:
table = ''
for index in xrange(256):
if index in ords_to_keep:
table += chr(index)
else:
table += replace_with
Run Code Online (Sandbox Code Playgroud)
有没有办法将else语句添加到此理解中?
table = ''.join(chr(index) for index in xrange(15) if index in ords_to_keep)
Run Code Online (Sandbox Code Playgroud) 我在Python 2.7中创建了这个函数ipython:
def _(v):
return v
Run Code Online (Sandbox Code Playgroud)
以后,如果我打电话_(somevalue),我会_ = somevalue.
in[3]: _(3)
out[3]: 3
in[4]: print _
out[4]: 3
Run Code Online (Sandbox Code Playgroud)
功能消失了!如果我打电话给_(4)我:
TypeError: 'int' object is not callable`
Run Code Online (Sandbox Code Playgroud)
为什么?这个功能出了什么问题?
我在哪里可以找到Python中常用的所有双下划线变量/关键字的列表?
在Python中,以双下划线开头和结尾的变量通常用于存储元数据或内置到系统中.例如,
#!/usr/bin/env python
__author__ = 'Michael0x2a'
__license__ = 'GPL'
class Test(object):
def __init__(self):
print 'Hello World!'
if __name__ == '__main__':
t = Test()
Run Code Online (Sandbox Code Playgroud)
我很确定__author__,__license__而且非常有名.还有哪些双下划线元数据变量?有一个全面的清单,我可以检查一下吗?我可以自己编造,还是有一堆已成为我应该使用的事实标准?
之类的东西__init__,__name__和__doc__是几乎内置了Python.那些只是两个保留的双下划线关键字吗?还有吗?有些地方我可以获得一份清单吗?
在Windows上启动Python 2.7解释器后的第一行:
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
Run Code Online (Sandbox Code Playgroud)
输入dir()命令后,_应定义特殊变量:
>>> _
['__builtins__', '__doc__', '__name__', '__package__']
Run Code Online (Sandbox Code Playgroud)
但是,即使在输入之后_,当我尝试使用以下内容列出交互式命名空间中的所有名称时,它也不会显示dir():
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
Run Code Online (Sandbox Code Playgroud)
如果解释器不在解释器的命名空间中,解释器如何识别它?
获取这个简单的python代码,与re.compile实例相同.我注意到即使我使用的是相同的值,它也会创建两个实例,并相应地重复它们.
我想知道是否能说出这种行为的原因,
CLI代码:
>>> import re
>>>
>>> rec = re.compile("(?:[-a-z0-9]+\.)+[a-z]{2,6}(?:\s|$)")
>>>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb238>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb238>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb238>
>>> rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
Run Code Online (Sandbox Code Playgroud)
编辑:
正如@kimvais 回答的那样,原因在于_它保留了最新的任务.看,如果不分配,而不是打印,它始终是相同的.
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> print rec.match('www.example.com')
<_sre.SRE_Match object at 0x23cb1d0>
>>> …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何绕过在for循环中声明一个未使用的变量
在Python中,特别是对于for循环,如果你不关心它,有没有办法不创建变量,即i在这个不需要的例子中:
for i in range(10):
print('Hello')
Run Code Online (Sandbox Code Playgroud) 我正在使用type()Python中的方法,并遇到了这个:
>>> type(_)
<type 'type'>
Run Code Online (Sandbox Code Playgroud)
下划线(_)字符的"类型" type本身就是.那有什么意思?
_我已经覆盖了Python交互式解释器中的下划线变量。如何在不重新启动解释器的情况下使下划线再次工作?
假设有以下列表: foo = [(1, 2, 3, 4), (5, 6, 7, 8)]
有没有办法遍历列表并仅解包内部元组的前两个元素?
这是一个常见的模式:{a: b for a, b, _, _ in foo},但是如果foo被修改(程序更改)并且元组现在包含 5 个元素而不是 4 个元素(列表理解需要相应地修改),则会中断。我真的很喜欢命名元素而不是调用{f[0]: f[1] for f in foo},所以理想情况下,会有某种“吸收所有未解压的变量”,因此可以调用{a: b for a, b, absorb_rest in foo}. 如果可能的话,元组中包含多少个元素并不重要(只要至少有 2 个)。
我刚刚在Python解释器中发现了一些奇怪的东西.让我演示给你看:
$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> _
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_' is not defined
>>> 5 + 4
9
>>> _
9
>>> 'Hello world'
'Hello world'
>>> _
'Hello world'
>>> type(3.5)
<type 'float'>
>>> _
<type 'float'>
Run Code Online (Sandbox Code Playgroud)
你可以在翻译中试试这个; 这里没有招数!
最后执行的行的结果是否被赋值给名为_?的变量?
有人知道吗?有没有关于它的文件?在哪种情况下它可能有用吗?
有史以来第一个问题,对不起,如果有人问过 - 我做了搜索,但我找不到任何似乎回答它的东西.
我一直试图理解python __del__方法的行为,因为我需要它来对包装的C代码执行一些清理.
我的理解__del__是当对象的引用计数达到零时del调用,而不是在对象引用上调用时调用.这让我相信实例化一个没有赋值的对象会在__init__之后__del__立即调用,但事实并非如此,如下面的代码所示:
class Foo():
def __init__(self):
print "Hello"
def __del__(self):
print "Goodbye"
Foo()
Hello
<__main__.Foo instance at 0x7fb943075a28>
Run Code Online (Sandbox Code Playgroud)
谁能解释一下这里发生了什么?提前致谢.
python ×11
interpreter ×2
convention ×1
del ×1
function ×1
ipython ×1
metadata ×1
python-2.7 ×1
variables ×1