Python最重要的5大功能,​要是能早点了解就好了!

简介: Python作为近几年超级热门的新兴编程语言,其语言功能十分强大的特点,大家有目共睹,想必不用赘述。

云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

image

Python作为近几年超级热门的新兴编程语言,其语言功能十分强大的特点,大家有目共睹,想必不用赘述。

Python功能众多,小芯曾用Python的交互式地图和区块链等功能创建了许许多多的应用程序,令人振奋。

但也正因其功能繁多,初学者一开始是很难掌握所有功能的。

即使你是一名从其他语言(比如C语言或MATLAB语言)转换过来的程序员,用更加抽象的Python编写代码对你来说也绝对是一次不同的体验。

image

但功能虽多,总有主次之分。

为了方便大家早点了解Python的一些大功能,小芯特别整理出了其中5大最重要的功能。

1.生成器——内存效率

打算计算大量的结果,但同时又想避免同时分配所有结果所需内存,这时候会使用生成器。换句话说,它们即时生成值,但不会将先前生成的值存储在内存中,因此只需要将其迭代一次。

生成器常用于读取大型文件或使用关键字yield生成无穷序列。在大多数数据科学项目中,笔者发现它颇有用处。

def  gen(n):    # an infinite sequence  generator that generates integers >= n
    while True:
        yield n
        n += 1
G =  gen(3)     # starts at 3
print(next(G))  # 3
print(next(G))  # 4
print(next(G))  # 5
print(next(G))  # 6

python-generator hosted with ❤ by GitHub

2.虚拟环境——隔离

若读完本文,只能记住其中一条,那应该是虚拟环境的使用。

image

Python的应用程序经常使用很多不同的软件包,而这些软件包由具有复杂依赖关系的开发人员开发。不同的应用程序由一种特定的库设置开发出来,其结果无法由其他版本的库复制。没有一种安装程序可以满足所有应用程序的要求。

conda create -n venv pippython=3.7  # select python version
source activate venv
...
source deactivate

因此,为每个应用程序创建单独的虚拟环境venv至关重要,可以用 pip或conda完成。

3.列表推导——紧致码

很多人认为lambda、map和filter是每个初学者都应该学习的函数。虽然笔者认为这些函数值得关注,但是由于它们缺乏灵活性,大多时候不是特别有用。

Lambda是将一次性使用的函数生成为一行的方法。若函数被多次调用,性能就会降低。另一方面,map将一种函数应用于列表中的所有元素,而filter则会获取集合中满足用户定义条件的元素子集。

add_func  = lambda z: z ** 2
is_odd =  lambda z: z%2 == 1
multiply  = lambda x,y: x*y
aList =  list(range(10))
print(aList)
4
# [0, 1,  2, 3, 4, 5, 6, 7, 8, 9]

python-lambda hosted with ❤ by GitHub

列表推导是一种简洁灵活的方法,可从其他具有灵活表达式和条件的列表中创建新列表。它由一个带有表达式或函数的方括号构成,只有当元素满足特定条件时,才能应用于列表中的每个元素。它也可以通过嵌套来处理嵌套列表,这比用map和filter要灵活得多。

# Syntax of list comprehension
[ expression(x) for x in aList if optional_condition(x)]
print(list(map(add_func,  aList)))
print([x  ** 2 for x in aList])
# [0, 1,  4, 9, 16, 25, 36, 49, 64, 81]
# [0, 1,  4, 9, 16, 25, 36, 49, 64, 81]
print(list(filter(is_odd,  aList)))
print([x  for x in aList if x%2 == 1])
# [1, 3,  5, 7, 9]
# [1, 3,  5, 7, 9]

python-list-comprehension hosted with ❤ by GitHub

4.列表操作——循环列表

Python允许在aList[-1]== aList[len(aList)-1]中出现负索引。因此,可以通过调用aList[-2]等其他元素来获取列表中的倒数第二个元素。

还可以用aList[start:end:step]语法对列表进行切片,该语法包括起始元素,但不包括终止元素。因此,调用aList[2:5]会得到[2, 3, 4]。也可以通过调用aList[::-1]来反转列表,笔者发现这种技巧非常简洁。

image

列表也可以解压缩为单独的元素,或者解压缩为元素和子列表,两者混在一起,用星号标出。

a, b, c,  d = aList[0:4]
print(f'a  = {a}, b = {b}, c = {c}, d = {d}')
# a = 0,  b = 1, c = 2, d = 3
a, *b,  c, d = aList
print(f'a  = {a}, b = {b}, c = {c}, d = {d}')
# a = 0,  b = [1, 2, 3, 4, 5, 6, 7], c = 8, d = 9

python-unpacking hosted with ❤ by GitHub

5.压缩(Zipping)和列举(enumerate) ——for循环

压缩 (Zip)函数创建了一种迭代程序,该程序可聚合来自多个列表的元素。它允许在for循环中并行遍历列表并进行并行分类。用星号即可将其解压缩。

numList  = [0, 1, 2]
engList  = ['zero', 'one', 'two']
espList  = ['cero', 'uno', 'dos']
print(list(zip(numList,  engList, espList)))
# [(0,  'zero', 'cero'), (1, 'one', 'uno'), (2, 'two', 'dos')]
for num,  eng, esp in zip(numList, engList, espList):
    print(f'{num} is {eng} in English and  {esp} in Spanish.')
# 0 is  zero in English and cero in Spanish.
# 1 is  one in English and uno in Spanish.
# 2 is  two in English and dos in Spanish.

python-zip-1 hosted with ❤ by GitHub

Eng =  list(zip(engList, espList, numList))
Eng.sort()  # sort by engList
a, b, c  = zip(*Eng)
print(a)
print(b)
print(c)
#  ('one', 'two', 'zero')
#  ('uno', 'dos', 'cero')
# (1, 2,  0)

乍一看,列举(Enumerate) 可能有点吓人,但是后来就会发现,在很多情况下使用列举都很方便。它是一种经常用于for循环的自动计数器,因此无需在counter = 0 和counter += 1的情况下创建并初始化变量计数器。列举(enumerate) 和压缩(zip)是创建for循环时会用到的两种功能最强大的工具。

upperCase  = ['A', 'B', 'C', 'D', 'E', 'F']
lowerCase  = ['a', 'b', 'c', 'd', 'e', 'f']
for i,  (upper, lower) in enumerate(zip(upperCase, lowerCase), 1):
    print(f'{i}: {upper} and {lower}.')
# 1: A  and a.
# 2: B  and b.
# 3: C  and c.
# 4: D  and d.
# 5: E  and e.
# 6: F  and f.

python-enumerate hosted with ❤ by GitHub

image

当然,除了这5种功能,Python还有许许多多其他好用的功能,欢迎大家给小芯留言自己最感兴趣的功能。根据大家的留言,小芯会在下次Python文章中继续为大家介绍更多大家感兴趣的功能~

原文发布时间:2020-01-13
本文作者:
本文来自阿里云云栖号合作伙伴“读芯术”,了解相关信息可以关注“读芯术

云栖号:https://yqh.aliyun.com
第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

相关文章
|
17天前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
25 6
|
27天前
|
IDE 数据挖掘 开发工具
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
Python作为一种广受欢迎的高级编程语言,以其简洁的语法和强大的功能吸引了众多初学者和专业开发者
36 7
|
1月前
|
存储 缓存 测试技术
Python中的装饰器:功能增强与代码复用的利器
在Python编程中,装饰器是一种强大而灵活的工具,它允许开发者以简洁优雅的方式增强函数或方法的功能。本文将深入探讨装饰器的定义、工作原理、应用场景以及如何自定义装饰器。通过实例演示,我们将展示装饰器如何在不修改原有代码的基础上添加新的行为,从而提高代码的可读性、可维护性和复用性。此外,我们还将讨论装饰器在实际应用中的一些最佳实践和潜在陷阱。
|
2月前
|
计算机视觉 Python
Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
这篇文章介绍了如何使用Python和OpenCV库从不同格式的视频文件中按关键帧提取图片,并展示了图片裁剪的方法。
90 0
|
19天前
|
测试技术 Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界中,装饰器是那些能够为我们的代码增添魔力的小精灵。它们不仅让代码看起来更加优雅,还能在不改变原有函数定义的情况下,增加额外的功能。本文将通过生动的例子和易于理解的语言,带你领略装饰器的奥秘,从基础概念到实际应用,一起开启Python装饰器的奇妙旅程。
33 11
|
15天前
|
Python
探索Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器就像是给函数穿上了一件神奇的外套,让它们拥有了超能力。本文将通过浅显易懂的语言和生动的比喻,带你了解装饰器的基本概念、使用方法以及它们如何让你的代码变得更加简洁高效。让我们一起揭开装饰器的神秘面纱,看看它是如何在不改变函数核心逻辑的情况下,为函数增添新功能的吧!
|
24天前
|
设计模式 监控 程序员
Python中的装饰器:功能增强与代码复用的利器####
本文深入探讨了Python中装饰器的工作原理、应用场景及其在提升代码可读性、减少重复劳动方面的优势。不同于传统方法的冗长和复杂,装饰器提供了一种优雅且高效的方式来增强函数或方法的功能。通过具体实例,我们将揭示装饰器如何简化错误处理、日志记录及性能监控等常见任务,使开发者能够专注于核心业务逻辑的实现。 ####
|
25天前
|
机器人 计算机视觉 Python
Python作为一种高效、易读且功能强大的编程语言,在教育领域的应用日益广泛
Python作为一种高效、易读且功能强大的编程语言,在教育领域的应用日益广泛
39 5
|
28天前
|
开发框架 缓存 测试技术
Python中的装饰器:魔法般的功能增强
在Python编程中,装饰器是一种强大而灵活的工具,它允许开发者修改或扩展函数和类的行为。本文将深入探讨Python装饰器的工作原理,并通过实例演示如何创建和使用自定义装饰器来增强代码的功能性和可读性。我们将从基础概念讲起,逐步深入到高级应用,揭示装饰器背后的“魔法”,并展示它们在实际开发中的多种用途。
|
25天前
|
Python
探索Python中的装饰器:简化代码,增强功能
本文将引导你了解Python装饰器的奇妙世界。我们将从基础概念入手,逐步深入到装饰器的应用实例,展示如何通过这一强大工具简化代码并增加新功能。文章不仅介绍理论知识,还将提供实用的代码示例,帮助你在实际项目中运用装饰器提升开发效率。
下一篇
DataWorks