分享

在编写下一段代码之前需要学习的 16 个 Python 技巧

 网摘文苑 2023-03-03 发布于新疆

作为 Python 开发人员,让你的生活更轻松的技巧

文章图片1

介绍

Python 是一种用途广泛且使用广泛的编程语言,具有大量的库和框架。但是,有一些鲜为人知的 Python 编码技巧和库可以让您作为开发人员的生活更轻松,让您的代码更高效。

在本文中,我们将探讨一些鲜为人知的 Python 技巧,这些技巧非常有用,但并不广为人知。通过学习和实施这些技巧,您可以节省编码时间和精力,并使您的代码更加优雅和高效。那么,让我们深入探索 Python 语言的这些隐藏宝藏吧!

1.三元运算符

三元运算符是 if-else 语句的简写。语法是value_if_true if condition else value_if_false. 它是一行代码,可以替代多行 if-else 语句,使您的代码更加简洁。

a = 5 b = 10 max = a if a > b else b ##value_if_true if condition else value_if_falseprint(max)#10

上面的查询检查“a”是否大于“b”,如果为真则返回“a”,如果为假则返回“b”。

2.枚举函数

enumerate()函数向可迭代对象添加一个计数器,并以枚举对象的形式返回它。当您想要遍历列表并跟踪索引时,此函数很有用。

fruits = ['apple', 'banana', 'mango'] for index, fruit in enumerate(fruits):     print(index, fruit)#0 apple#1 banana#2 mango

3. Zip 函数

zip()函数聚合来自每个可迭代对象的元素并返回一个元组迭代器。当您想同时遍历两个或多个列表时,此函数很有用。

list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] for x, y in zip(list1, list2): print(x, y)#1 a#2 b#3 c

4. 列表理解

列表理解是一种从现有列表或任何可迭代对象创建列表的简洁方法。它是一种可以替代 for 循环的单行代码,使您的代码更加高效和可读。

squared_numbers = [x**2 for x in range(1, 6)]print(squared_numbers)#[1, 4, 9, 16, 25]

5. Lambda 函数

Lambda 函数是使用lambda关键字定义的匿名函数。当您需要编写一次性的小函数并且不想使用关键字def来定义命名函数时,它们很有用。

add = lambda x, y: x + y result = add(3, 4)print(result)#7

6.Any 和 all 函数

any() 和 all() 函数根据可迭代对象中元素的真实性返回 True 或 False。 如果可迭代对象中元素为真,any() 函数返回 True,如果可迭代对象中所有元素都为真,all() 函数返回 True。

numbers = [1, 2, 3, 0, 4] result = any(numbers) #True result = all(numbers) # False 0 是假的

7. Itertools

itertools 模块提供了一组函数来处理迭代器,但并不广为人知。 该模块中的一些函数是 chainproduct permutations

import itertools numbers = [1, 2, 3] result = list(itertools.permutations(numbers)) #输出所有排列#[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

8. 生成器

生成器是一种可迭代的类型,它可以即时生成值,而不是将它们存储在内存中。它们是使用yield关键字定义的,可用于创建自定义迭代器。

### 使用 yield 关键字创建的生成器def fibonacci_series(n):    a, b = 0, 1    for i in range(n):        yield a        a, b = b, a + b# 检查上述生成器函数for number in fibonacci_series(10):    print(number)#0#1#1#2#3#5#8#13#21#34

9.装饰器

装饰器是一种修改函数或类行为的方法。它们使用@符号定义,可用于向功能添加功能,例如日志记录、计时或身份验证。

def log_function(func): def wrapper(*args, **kwargs): print(f'Running {func.__name__}') result = func(*args, **kwargs) print(f'{func.__name__} returned {result}') return result return wrapper@log_functiondef add(x, y): return x + yprint(add(5,7))#Running add#add returned 12#12

10. 多函数参数

在 Python 中,您可以使用 * 和 ** 运算符来处理多个函数参数。 * 运算符用于将参数列表作为单独的位置参数传递,而 ** 运算符用于传递关键字参数的字典。

def print_arguments(*args, **kwargs):    print(args)    print(kwargs)print_arguments(1, 2, 3, name='John', age=30)#(1, 2, 3)#{'name': 'John', 'age': 30}

11. 动态导入

您可以使用 importlib 模块动态导入模块。 当您想根据用户输入或配置导入模块时,这会很有用。

import importlibmodule_name = 'math'module = importlib.import_module(module_name)result = module.sqrt(9)

12. 字典理解

字典理解是一种从现有字典或任何可迭代对象创建字典的简洁方法。它是一种可以替代 for 循环的单行代码,使您的代码更加高效和可读。

squared_numbers = {x: x**2 for x in range(1, 6)}print(squared_numbers)#{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

13. 可调用对象

在 Python 中,任何可以称为函数的东西都称为可调用对象。 这包括定义 __call__ 方法的函数、方法、类,甚至对象。

class Adder: def __call__(self, x, y): return x + yadder = Adder()result = adder(3, 4)print(result)#7

14.你可以用下划线分隔大数字/字符

大数字不容易一眼就看对,所以 python 有一个很好的能力,可以加上下划线来使数字更易读。

num_test = 100_345_405  # 这是数字print(num_test)## 100345405

15.快速合并2个字典

我们可以使用以下代码在 python 中快速合并 2 个字典。

dictionary_one = {'a': 1, 'b': 2}dictionary_two = {'c': 3, 'd': 4}merged = {**dictionary_one, **dictionary_two}print(merged) # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

16. 列表、集合和字典是可变的

可变意味着我们可以更改或更新对象(列表、集合或字典)​而无需更改内存中对象的指针。让我们看看它的实际效果。

在下面的示例中,我们通过添加一个新城市来更新城市列表。我们可以看到 ID(对象指针)保持不变。集合和字典也是如此

cities = ['北京', '上海', '杭州']print(id(cities)) # 2797174365184cities.append('深圳')print(id(cities)) # 2797174365184
####Sets my_set = {1, 2, 3}print(id(my_set)) # 2797172976992my_set.add(4)print(id(my_set)) # 2797172976992
###Dictionary thisdict = {  'brand': 'Ford',  'model': 'Mustang',  'year': 1964}print(id(thisdict))  #2797174128256thisdict['engine'] = '2500cc'print(id(thisdict))  #2797174128256

最后

希望您能从本文中学到新东西。

快乐学习!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多