前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >独家 | 16个Python技巧,轻松解锁编程新境界(附链接)

独家 | 16个Python技巧,轻松解锁编程新境界(附链接)

作者头像
数据派THU
发布2023-04-03 13:11:00
3320
发布2023-04-03 13:11:00
举报
文章被收录于专栏:数据派THU数据派THU
代码语言:javascript
复制
作者:Anmol Tomar
翻译:王闯(Chuck)校对:赵茹萱
本文约2700字,建议阅读7分钟本文介绍了16个 Python 编程技巧。

标签:数据科学、Python

掌握这些技巧不仅能够提高编程效率,还能使你的代码更加优美和高效,让人眼前一亮!如果你想在编程路上更进一步,那么不妨一试。

让Python开发者生活更加轻松的技巧

图片来源: Unsplash

简介

Python作为一种编程语言,拥有大量的库和框架,获得广泛应用。然而,有些Python 编程技巧和库却鲜为人知,开发者如果能掌握这些技巧,会让生活更加轻松,代码更加高效。

在本文中,我们将探索一些鲜为人知却非常好用的 Python 小技巧。学习和实现这些技巧,可以帮你节省编码的时间和精力,让代码更加优雅、高效。 现在就让我们深入探寻 Python 语言的这些隐藏宝藏吧!

1. 三元运算符

三元运算符是 if-else 语句的简写形式。 其语法为:value_if_true if condition else value_if_false。它可以代替多行 if-else 语句,使得代码更加简洁。

代码语言:javascript
复制
a = 5 b = 10 max = a if a > b else b  ##value_if_true if condition else value_if_false
print(max)#10

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

2. 枚举函数

enumerate() 枚举函数可以为可迭代对象添加一个计数器,并将其返回为一个枚举对象。当你想要遍历列表并且同时跟踪索引时,这个函数非常有用。

代码语言:javascript
复制
fruits = ['apple', 'banana', 'mango'] for index, fruit in enumerate(fruits):     print(index, fruit)
#0 apple#1 banana#2 mango

3. zip函数

zip() 函数可以从多个可迭代对象中聚合元素,并返回一个由元组组成的迭代器。当你想要同时遍历两个及以上的列表时,这个函数非常有用。

代码语言:javascript
复制
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 循环,让代码更加高效易读。

代码语言:javascript
复制
squared_numbers = [x**2 for x in range(1, 6)]
print(squared_numbers)#[1, 4, 9, 16, 25]

5. Lambda 函数

Lambda 函数是使用 lambda 关键字定义的匿名函数。当你要编写小型、一次性函数,并且不想使用 def 关键字定义命名函数时,这个函数非常有用。

代码语言:javascript
复制
add = lambda x, y: x + y 
result = add(3, 4)
print(result)#7

6. Any 和 all 函数

any() 和 all() 函数基于可迭代对象中元素的真实性(truthiness)返回 True 或 False。any() 函数在可迭代对象中任何元素为真时返回 True,而 all() 函数在可迭代对象中所有元素均为真时返回 True。

代码语言:javascript
复制
numbers = [1, 2, 3, 0, 4] result = any(numbers) #True result = all(numbers) # False. 0 is making it false

7. Itertools

itertools 模块提供了一组用于处理迭代器的函数,但并不广为人知。这个模块中的一些函数包括 chain、product 和 permutations。

代码语言:javascript
复制
import itertools numbers = [1, 2, 3] result = list(itertools.permutations(numbers)) 
#output all the permutations #[(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]

8. 生成器

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

代码语言:javascript
复制
### Generators created using yield keyword def fibonacci_series(n):    a, b = 0, 1    for i in range(n):        yield a        a, b = b, a + b
# Driver code to check above generator function for number in fibonacci_series(10):    print(number)
#0#1#1#2#3#5#8#13#21#34

9. 装饰器

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

代码语言:javascript
复制
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 + y

print(add(5,7))
#Running add#add returned 12#12

10. 多个函数参数

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

代码语言:javascript
复制
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 模块动态地导入一个模块。当你想要基于用户输入或配置导入一个模块时,这非常有用。

代码语言:javascript
复制
import importlib
module_name = 'math'module = importlib.import_module(module_name)result = module.sqrt(9)

12. 字典推导式

字典推导式是一种从现有字典或任何可迭代对象中创建字典的简洁方式。它是一种单行语句,可以替代 for 循环,使你的代码更有效和可读。

代码语言:javascript
复制
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__ 方法的对象。

代码语言:javascript
复制
class Adder:    def __call__(self, x, y):        return x + y
adder = Adder()result = adder(3, 4)
print(result)#7

14. 使用下划线分隔大数值/字符

大的数值一眼看去很难解读,因此 Python 提供了将下划线放在数字之间以使数值更易读的功能。

代码语言:javascript
复制
num_test = 100_345_405 # this is the number
print(num_test)
## 100345405

15. 快速合并两个字典

我们可以使用以下代码快速合并两个 Python 字典。

代码语言:javascript
复制
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. 可变列表、集合和字典

可变意味着我们可以更改或更新对象(列表、集合或字典)而不更改内存中对象的指针。让我们来看一个例子。

代码语言:javascript
复制
cities = ["Munich", "Zurich", "London"]print(id(cities)) # 2797174365184cities.append("Berlin")print(id(cities)) # 2797174365184
代码语言:javascript
复制
####Sets 
my_set = {1, 2, 3}print(id(my_set))  # 2797172976992my_set.add(4)print(id(my_set))  # 2797172976992
代码语言:javascript
复制
###Dictionary 
thisdict = {  "brand": "Ford",  "model": "Mustang",  "year": 1964}print(id(thisdict))  #2797174128256thisdict["engine"] = "2500cc"print(id(thisdict))  #2797174128256

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

希望你阅读本文后有所收获。

原文标题:

16 Python Tricks To Learn Before You Write Your Next Code

原文链接:

https://medium.com/codex/16-python-tricks-to-learn-before-you-write-your-next-code-bb91dd955f1b

编辑:王菁

校对:林亦霖

译者简介

王闯(Chuck),台湾清华大学资讯工程硕士。曾任奥浦诺管理咨询公司数据分析主管,现任尼尔森市场研究公司数据科学经理。很荣幸有机会通过数据派THU微信公众平台和各位老师、同学以及同行前辈们交流学习。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据派THU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档