相关疑难解决方法(0)

是否可以在python列表理解中使用'else'?

这是我试图变成列表理解的代码:

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 list-comprehension

190
推荐指数
4
解决办法
10万
查看次数

在Python/IPython解释器中为单个下划线_赋值

我在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 interpreter function ipython read-eval-print-loop

68
推荐指数
2
解决办法
2894
查看次数

查找所有双下划线变量的列表?

相关:Python文件的常见标题格式是什么?

我在哪里可以找到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.那些只是两个保留的双下划线关键字吗?还有吗?有些地方我可以获得一份清单吗?

[编辑]
我正在浏览并遇到另一个问题,该问题链接到一堆双下划线变量的思维导图.

python convention metadata

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

为什么最后一个命令变量"_"不出现在dir()中?

在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

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

python以这种方式(成对)处理locals()的原因是什么?

获取这个简单的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)

python

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

忽略python变量

可能重复:
如何绕过在for循环中声明一个未使用的变量

在Python中,特别是对于for循环,如果你不关心它,有没有办法不创建变量,即i在这个不需要的例子中:

for i in range(10):
    print('Hello')
Run Code Online (Sandbox Code Playgroud)

python variables

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

Python中下划线字符的类型

我正在使用type()Python中的方法,并遇到了这个:

>>> type(_)
<type 'type'>
Run Code Online (Sandbox Code Playgroud)

下划线(_)字符的"类型" type本身就是.那有什么意思?

python python-2.7

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

如何在交互式会话中重置下划线?

_我已经覆盖了Python交互式解释器中的下划线变量。如何在不重新启动解释器的情况下使下划线再次工作?

python read-eval-print-loop

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

迭代元组列表并仅解压第一个元素

假设有以下列表: 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 list-comprehension iterable-unpacking

3
推荐指数
2
解决办法
2350
查看次数

变量分配给最后执行的行?

我刚刚在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 interpreter

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

__del__在未分配的python对象上的行为

有史以来第一个问题,对不起,如果有人问过 - 我做了搜索,但我找不到任何似乎回答它的东西.

我一直试图理解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 reference-counting del

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