每个Python开发者需要学习的9个技巧

94 阅读3分钟

OIP-C.jpg

Python 很容易学,但很难精通。 你可能已经写了一些脚本,做了两三个项目。但如果你想更上一层楼,你需要那些区分初学者和专业人士的 Python 技巧。

现在,让我们开始吧。 🚀

1 . 像专业人士一样使用列表推导式

列表推导式适用于一行代码的场景。

示例:展平列表的列表

nested_list = [[1, 2], [3, 4], [5, 6]]
flat_list = [item for sublist in nested_list for item in sublist]
print(flat_list)  # 输出:[1, 2, 3, 4, 5, 6]

为什么这么酷:它去除了 for 循环,让你的代码更易读。

2. 不使用临时变量

大多数语言需要临时变量来交换值。Python?不需要。

示例:

a, b = 10, 20
a, b = b, a
print(a, b)  # 输出:20, 10

简单、干净,比使用第三个变量优雅得多。

3. 使用 zip() 合并列表

想将两个列表合并成对?zip() 让这变得轻而易举。

示例:将名字和年龄配对

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]

for name, age in zip(names, ages):
    print(f"{name} is {age} years old.")

输出:

Alice is 25 years old.
Bob is 30 years old.
Charlie is 35 years old.

zip() 让你的代码更紧凑、更易读。


4 . ****enumerate() 的力量

停止使用 range(len(some_list))enumerate() 是更干净的方式。

示例:带索引循环

languages = ["Python", "JavaScript", "Go"]

for index, lang in enumerate(languages, start=1):
    print(f"{index}. {lang}")

输出:

1. Python
2. JavaScript
3. Go

不再有 awkward for i in range(len(...)) 的麻烦。


5 . 使用字典推导式让代码更整洁

你见过列表推导式,但你知道字典也可以这样做吗?

示例:将列表转换为字典

fruits = ["apple", "banana", "cherry"]
fruit_dict = {fruit: len(fruit) for fruit in fruits}
print(fruit_dict)

输出:

{'apple': 5, 'banana': 6, 'cherry': 6}

当你需要快速转换数据时,这特别有用。


6 . 使用 collections.Counter 快速计数

如果你需要计数出现次数,不要浪费时间写循环——使用 Counter

示例:计数字符频率

from collections import Counter

word = "mississippi"
counter = Counter(word)
print(counter)

输出:

{'i': 4, 's': 4, 'p': 2, 'm': 1}

对于频率分析和快速统计来说非常完美。


7. 使用 * ** 解包

解包是一个杀手级特性,让函数调用和数据处理变得轻而易举。

示例:合并字典

dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
merged_dict = {**dict1, **dict2}
print(merged_dict)

输出:

{'a': 1, 'b': 2, 'c': 3, 'd': 4}

你也可以使用 * 将列表拆分为变量:

first, *middle, last = [1, 2, 3, 4, 5]
print(first, middle, last)  # 输出:1 [2, 3, 4] 5

这让你的代码更具灵活性。


8. 使用 breakpoint()****

厌倦了通过打印变量来调试?改用 breakpoint() 吧。

示例:让调试变得简单

def add(a, b):
    breakpoint()  # 打开交互式调试会话
    return a + b

add(5, 10)

现在,当你运行脚本时,Python 会打开一个交互式调试器,让你可以实时检查变量。


9 . 使用 functools.lru_cache 提高速度

如果你多次调用昂贵的函数,缓存可以 显著 提高性能。

示例:快速递归的记忆化

from functools import lru_cache

@lru_cache(maxsize=1000)
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

原文:dev.to/0x3d_site/p…