考虑:
blank_fn = lambda *args, **kwargs: None
def callback(x, y, z=''):
print x, y, z
def perform_task(callback=blank_fn):
print 'doing stuff'
callback('x', 'y', z='z' )
Run Code Online (Sandbox Code Playgroud)
这样做的动机是我不需要输入逻辑来检查是否已经分配了回调,因为它默认为blank_fn,它什么都不做.
这有效,但是有一些原因我不应该这样做吗?它是pythonic吗?有没有更好的方法呢?是否内置了:
lambda *args, **kwargs: None
Run Code Online (Sandbox Code Playgroud) 以下是使用符合Pythonic/pep8的逻辑表达式吗?
这个:
x = a or b
Run Code Online (Sandbox Code Playgroud)
代替:
if not a:
x = b
else:
x = a
Run Code Online (Sandbox Code Playgroud)这个:
x = a and b
Run Code Online (Sandbox Code Playgroud)
代替:
if not a:
x = a
else:
x = b
Run Code Online (Sandbox Code Playgroud)(曲线球?)这个:
x = x or y
Run Code Online (Sandbox Code Playgroud)
代替:
if not x:
x = y
Run Code Online (Sandbox Code Playgroud)在Python 2.7.5中:
from threading import Event
class State(Event):
def __init__(self, name):
super(Event, self).__init__()
self.name = name
def __repr__(self):
return self.name + ' / ' + self.is_set()
Run Code Online (Sandbox Code Playgroud)
我明白了:
TypeError:调用元类base
函数时出错()参数1必须是代码,而不是str
为什么?
我所知道的关于线程的一切.事件我从以下网站学习:http://docs.python.org/2/library/threading.html?highlight = threading # event-objects
当它说threading.Event()是类threading.Event ???的工厂函数时它是什么意思?(呃......看起来对我很平常).
在我的 Python 2.7.2 IDLE 解释器中:
>>> mylist = [1, 2, 3, 4, 5]
>>> for item in mylist:
mylist.remove(item)
>>> mylist
[2, 4]
Run Code Online (Sandbox Code Playgroud)
为什么?