前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >程序员必知的 10 个 Python 技巧

程序员必知的 10 个 Python 技巧

原创
作者头像
码农向前冲
修改2021-12-23 10:32:00
3530
修改2021-12-23 10:32:00
举报
文章被收录于专栏:Python学习必看Python学习必看

Python是一门流行且应用广泛的通用编程语言,其应用包括数据科学、机器学习、科学计算等领域,以及后端Web开发、移动和桌面应用程序等方面。许多知名的公司都使用Python,如Google、Dropbox、Facebook、Mozilla、IBM、Quora、Amazon、Spotify、NASA、Netflix、Reddit等。

Python是免费且开源的,与它有关的大多数产品也都是。此外,它拥有庞大、专注且友善的编程者和使用者社区。

它的语法设计目标就是简单、易读且优雅。

本文将向你展示20条非常实用的Python使用技巧。

1

Python之禅

Python之禅(又名PEP20)是由Tim Peters编写的一小段文字,文中展示了设计和使用Python的指导原则。你可以在Python网站上找到这段文字,也可以在控制台或Jupyter notebook中通过一条语句来显示这段话。

代码语言:txt
复制
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

2

链式赋值

如果需要让多个变量引用同一个对象,则可以使用链式赋值:

代码语言:txt
复制
>>> x = y = z = 2
>>> x, y, z
(2, 2, 2)

非常有逻辑且优雅,对吧?

3

链式比较

多个比较语句也可以合成一个Python表达式,只需将多个比较运算符连起来即可。下面的表达式只有在所有比较都成立时返回True,否则返回False:

代码语言:txt
复制
>>> x = 5
>>> 2 < x ≤ 8
True
>>> 6 < x ≤ 8
False

这个表达式相当于(2 < x)且 (x ≤ 8) 且 (x ≤ 8),但更为紧凑,而且只需执行一次x求值。

如下写法也是正确的:

代码语言:txt
复制
>>> 2 < x > 4
True

甚至可以将多个比较连起来:

代码语言:txt
复制
>>> x = 2
>>> y = 8
>>> 0 < x < 4 < y < 16
True

4

多重赋值

你可以使用元组解包,在一条语句中给多个变量赋值:

代码语言:txt
复制
>>> x, y, z = 2, 4, 8
>>> x
2
>>> y
4
>>> z
8

注意第一条语句中的2, 4, 8相当于一个元组(2, 4, 8)。

5

更高级的多重赋值

Python的多重赋值远不止于普通赋值。赋值左右两侧的元素数量甚至可以不一样:

代码语言:txt
复制
>>> x, *y, z = 2, 4, 8, 16
>>> x
2
>>> y
[4, 8]
>>> z
16

在这段代码中,x对应于第一个值2,因为2是首先出现的。z是最后一个,所以取最后一个值8。y以列表形式取中间的所有值,因为它带有星号(y*)。

6

交变量

利用多重赋值可以精确、优雅地交换任何两个变量,而且无需引入第三个变量:

代码语言:txt
复制
>>> x, y = 2, 8
>>> x
2
>>> y
8
>>> x, y = y, x
>>> x
8
>>> y 2

7

合并字典

合并两个字典的方法之一就是将它们解包到一个新的字典中:

代码语言:txt
复制
>>> x = {'u': 1}
>>> y = {'v': 2}
>>> z = {**x, **y, 'w': 4}
>>> z
{'u': 1, 'v': 2, 'w': 4}

8

连接字符串

如果需要连接多个字符串,每个字符串之间使用同一个字符或同一组字符来连接,则可以使用str.join方法:

代码语言:txt
复制
>>> x = ['u', 'v', 'w']
>>> y = '-*-'.join(x)
>>> y'u-*-v-*-w'

9

高级遍历

如果需要遍历一个序列,同时还需要每个元素和相应的索引,则可以使用enumerate:

代码语言:txt
复制
>>> for i, item in enumerate(['u', 'v', 'w']):
... print('index:', i, 'element:', item)
...
index: 0 element: u
index: 1 element: v
index: 2 element: w

每次遍历你都会获得一个元组,其中包括索引值和对应的元素。

10

反向遍历

如果你需要反向遍历一个序列,则可以使用reversed:

代码语言:txt
复制
>>> for item in reversed(['u', 'v', 'w']):
... print(item)
...
w
v
u

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档