Python 快捷键

0 投票
4 回答
7977 浏览
提问于 2025-04-15 12:12

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》第二版的前面部分列出了最重要和最有用的快捷方式 -- 这可以作为一个开始。

撰写回答