Python 快捷键
Python里面有很多小技巧,可以让编程变得更简单。
比如说:
self.data = map(lambda x: list(x), data)
还有一些(虽然看起来不太好看)
tuple(t[0] for t in self.result if t[0] != 'mysql' and t[0] != 'information_schema')
以及其他无数的技巧。
在聊天频道里,有人说“太多了,没办法全部记住”。
我觉得我们应该在这里列出一些,因为我喜欢用这些小技巧来简化和优化我的代码。我相信这对很多人都有帮助。
4 个回答
3
Alex Martelli 给出了你第一个例子的一个更简短的版本。我将提供你第二个例子的一个(稍微)更短的版本:
tuple(t[0] for t in self.result if t[0] not in ('mysql', 'information_schema'))
显然,当你要测试的值越多,使用 in 操作符就越有优势。
我还想强调,缩短和重构代码只有在能提高清晰度和可读性的情况下才是好的。(除非你是在进行代码高尔夫比赛。;)
3
我不确定这算不算捷径,但我非常喜欢这个:
>>> class Enum(object):
def __init__(self, *keys):
self.keys = keys
self.__dict__.update(zip(keys, range(len(keys))))
def value(self, key):
return self.keys.index(key)
>>> colors = Enum("Red", "Blue", "Green", "Yellow", "Purple")
>>> colors.keys
('Red', 'Blue', 'Green', 'Yellow', 'Purple')
>>> colors.Green
2
(我不知道是谁想出来的,但不是我。)
11
self.data = map(lambda x: list(x), data)
这段代码不好用 -- 用下面的方式更好
self.data = map(list, data)
如果你是个喜欢用 map
的人(现在一般更推荐用列表推导式)。更一般来说,lambda x: somecallable(x)
这个写法在任何情况下都可以简单改成 somecallable
,这样做总是有好处的。
至于其他快捷方式,我和我妻子尽力在《Python Cookbook》第二版的前面部分列出了最重要和最有用的快捷方式 -- 这可以作为一个开始。