阅读 113

分享15 超级好用得 Python 实用技巧

这篇文章主要分享了15 超级好用得 Python 实用技巧,如果你对其中一个或多个感兴趣,可以参考一下,希望对你能有所帮助

目录
  • 01 all or any

  • 02 dir

  • 03 列表(list)推导式

  • 04 pprint

  • 05 repr

  • 06 sh

  • 07 Type hints

  • 08 uuid

  • 09 wikipedia

  • 10 xkcd

  • 11 zip

  • 12 emoji

  • 13 howdoi

  • 14 Jedi

  • 15 **kwargs

01 all or any

Python 语言如此流行的众多原因之一,是因为它具有很好的可读性和表现力。

人们经常开玩笑说 Python 是可执行的伪代码。当你可以像这样写代码时,就很难反驳。

1
2
3
4
5
6
7
x = [True, True, False]
if any(x):
    print("至少有一个True")
if all(x):
    print("全是True")
if any(x) and not all(x):
    print("至少一个True和一个False")

02 dir

有没有想过如何查看 Python 对象内部查看它具有哪些属性?

在命令行中输入:

1
2
3
dir()
dir("Hello World")
dir(dir)

当以交互方式运行 Python 以及动态探索你正在使用的对象和模块时,这可能是一个非常有用的功能。在这里阅读更多functions相关内容。

03 列表(list)推导式

关于 Python 编程,我最喜欢的事情之一是它的列表推导式。

这些表达式可以很容易地编写出非常顺畅的代码,几乎与自然语言一样。

1
2
3
4
5
6
7
8
9
10
numbers = [1,2,3,4,5,6,7]
evens = [x for x in numbers if x % 2 is 0]
odds = [y for y in numbers if y not in evens]
cities = ['London', 'Dublin', 'Oslo']
 
def visit(city):
    print("Welcome to "+city)
     
for city in cities:
    visit(city)

04 pprint

Python 的默认print函数完成了它的工作。但是如果尝试使用print函数打印出任何大的嵌套对象,其结果相当难看。这个标准库的漂亮打印模块pprint可以以易于阅读的格式打印出复杂的结构化对象。

这算是任何使用非平凡数据结构的 Python 开发人员的必备品。

1
2
3
4
5
import requests
import pprint
url = 'https://randomuser.me/api/?results=1'
users = requests.get(url).json()
pprint.pprint(users)

05 repr

在 Python 中定义类或对象时,提供一种将该对象表示为字符串的“官方”方式很有用。

例如:

1
2
3
>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>

这使得调试代码更加容易。将其添加到你的类定义中,如下所示:

1
2
3
4
5
6
class someClass:
    def __repr__(self):
        return "<some description here>"
someInstance = someClass()
# 打印 <some description here>
print(someInstance)

06 sh

Python 是一种很棒的脚本语言。有时使用标准的 os 和 subprocess 库克可能有点头疼。

该SH库让你可以像调用普通函数一样调用任何程序——对于自动化工作流和任务非常有用。

1
2
3
4
5
6
import sh
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')

07 Type hints

Python 是一种动态类型的语言。定义变量、函数、类等时不需要指定数据类型。这允许快速的开发时间。但是,没有什么比由简单地输入问题引起的运行时错误更烦人的了。

从 Python 3.5开始,你可以选择在定义函数时提供类型提示。

1
2
def addTwo(x : Int) -> Int:
    return x + 2

我们还可以定义类型别名。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from typing import List
Vector = List[float]
Matrix = List[Vector]
def addMatrix(a : Matrix, b : Matrix) -> Matrix:
  result = []
  for i,row in enumerate(a):
    result_row =[]
    for j, col in enumerate(row):
      result_row += [a[i][j] + b[i][j]]
    result += [result_row]
  return result
x = [[1.0, 0.0], [0.0, 1.0]]
y = [[2.0, 1.0], [0.0, -2.0]]
z = addMatrix(x, y)

尽管不是强制性的,但类型注释可以使你的代码更易于理解。

它们还允许你使用类型检查工具,在运行前捕获那些杂散的 TypeError。如果你正在处理大型、复杂的项目,这是很有用的!

08 uuid

通过Python 标准库的 uuid 模块生成通用唯一 ID(或“UUID”)的一种快速简便的方法。


1
2
3
import uuid
user_id = uuid.uuid4()
print(user_id)

这将创建一个随机的 128 位数字,该数字几乎肯定是唯一的。事实上,可以生成超过 2¹²² 种可能的 UUID。不过超过了五个十进制 (或 5,000,000,000,000,000,000,000,000,000,000,000,000)。

在给定的集合中发现重复的概率极低。即使有一万亿个 UUID,重复存在的可能性也远低于十亿分之一。

09 wikipedia

维基百科有一个很棒的 API,它允许用户以编程方式访问无与伦比的完全免费的知识和信息。在wikipedia模块使访问该API非常方便。

1
2
3
4
5
import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:
    print(link)

和真实站点一样,该模块提供了多语言支持、页面消歧、随机页面检索,甚至还有一个donate()方法。

10 xkcd

幽默是 Python 语言的一个关键特征,它是以英国喜剧小品剧Python飞行马戏团命名的。Python 的许多官方文档都引用了该节目最著名的草图。不过,Python 幽默并不仅限于文档。试试运行下面的功能:

1
import antigravity

11 zip

压轴出场的也是很棒的一个模块。你曾经遇到过需要从两个列表中形成字典吗?

1
2
3
keys = ['a', 'b', 'c']
vals = [1, 2, 3]
zipped = dict(zip(keys, vals))

该zip()内置函数需要一系列可迭代的对象,并返回一个元组列表中。每个元组按位置索引对输入对象的元素进行分组。

你还可以通过调用对象来“解压缩”对象*zip()。

12 emoji

emoji是日本在无线通信中所使用的视觉情感符号,绘制图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。在中国大陆,emoji通常叫做“小黄脸”,或者直称emoji

1
2
3
4
5
# 安装模块
pip install emoji
# 做个尝试
from emoji import emojize
print(emojize(":thumbs_up:"))

13 howdoi

当你使用terminal终端编程时,通过在遇到问题后会在StackOverflow上搜索答案,完后会回到终端继续编程,此时有时会不记得你之前查到的解决方案,此时需要重新查看StackOverflow,但又不想离开终端,那么此时你需要用到这个有用的命令行工具howdoi

1
pip install howdoi

无论你有什么问题,都可以问它,它会尽力回复。

1
2
3
howdoi vertical align css
howdoi for loop in java
howdoi undo commits in git

但请注意——它会重生 StackOverflow 的最佳答案中抓取代码。它可能并不总是提供最有用的信息......

1
howdoi exit vim

14 Jedi

Jedi 库是一个自动完成和代码分析库。它使编写代码更快、更高效。

除非你正在开发自己的东西 IDE,否则你可能对使用Jedi 作为编辑器插件比较感兴趣。幸运的是,这已经有可用的负载!

15 **kwargs

在学习任何语言时,都会有许多里程碑。使用 Python 并理解神秘的**kwargs语法可能算作一个重要的里程碑。

字典对象前面的双星号 ****kwargs**允许你将该字典的内容作为命名参数传递给函数。

字典的关键是参数名称,值是传递给函数的值。你甚至不需要调用它kwargs

1
2
3
4
5
6
7
dictionary = {"a": 1, "b": 2}
def someFunction(a, b):
    print(a + b)
    return
# 这些做同样的事情:
someFunction(**dictionary)
someFunction(a=1, b=2)

当你想编写可以处理未预先定义的命名参数的函数时,这很有用。

最后:

Python 是一种非常多样化且发展良好的语言,因此肯定会有许多我没有考虑过的功能。如果你想了解更多的python模块,可以点个赞和关注哦

到此这篇关于分享15 超级好用得 Python 实用技巧的文章就介绍到这了

原文链接:https://juejin.cn/post/7043970181000855565

    伪原创工具 SEO网站优化  https://www.237it.com/ 


    文章分类
    代码人生
    文章标签
    版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
    相关推荐