24个好用到爆的Python实用技巧

74bdb68ae267ffc7e57f2104fe5dc1f1.png

作为一名数据工作者,我们每天都在使用 Python处理大多数工作。在此过程中,我们会不断学到了一些有用的技巧和窍门。

在这里,我尝试以 A - Z 开头的格式分享这些技巧中的一些,并且在本文中简单介绍这些方法,如果你对其中一个或多个感兴趣,你可以通过文末参考资料查看官方文档。希望对你能有所帮助。

A - Z

all or any

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

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

x = [True, True, False]
if any(x):print("至少有一个True")
if all(x):print("全是True")
if any(x) and not all(x):print("至少一个True和一个False")

bashplotlib

你有没有想过在控制台中绘制图形吗?

Bashplotlib 是一个 Python 库,他能够帮助我们在命令行(粗旷的环境)中绘制数据。

# 模块安装
pip install bashplotlib
# 绘制实例
import numpy as np
from bashplotlib.histpgram import plot_hist
arr = np.ramdom.normal(size=1000, loc=0, scale=1)
plot_hist(arr, bincount=50)

collections

Python 有一些很棒的默认数据类型,但有时它们的行为并不完全符合你的期望。

幸运的是,Python 标准库提供了 collections 模块[1]。这个方便的附加组件为你提供了更多的数据类型。

from collections import OrderedDict, Counter
# 记住键的添加顺序!
x = OrderedDict(a=1, b=2, c=3)
# 统计每个字符出现的频率
y = Counter("Hello World!")

dir

有没有想过如何查看 Python 对象内部并查看它具有哪些属性?在命令行中输入:

dir() 
dir("Hello World") 
dir(dir)

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

emoji

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

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

👍

from __future__ import

Python 流行的结果之一,总是有新版本正在开发中。新版本意味着新功能 —— 除非你的版本已过时。

不过不要担心。使用该__future__模块[4]可以帮助你用Python的未来版本导入功能。从字面上看,这就像时间旅行、魔法或其他东西。

from __future__ import print_function
print("Hello World!")

geogy

地理,对大多数程序员来说是一个具有挑战性的领域。在获取地理信息或者绘制地图时,也会遇到不少问题。这个geopy 模块[5]让地理相关内容变得非常容易。

pip install geopy

它通过抽象一系列不同地理编码服务的 API 来工作。通过它,你能够获得一个地方的完整街道地址、纬度、经度甚至海拔高度。

还有一个有用的距离类。它以你偏好的测量单位计算两个位置之间的距离。

from geopy import GoogleV3
place = "221b Baker Street, London"
location = GoogleV3().geocode(place)
print(location.address)
print(location.location)

howdoi

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

pip install howdoi

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

howdoi vertical align css
howdoi for loop in java
howdoi undo commits in git

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

howdoi exit vim

inspect

Python 的inspect模块[7]非常适合了解幕后发生的事情。你甚至可以调用它自己的方法!

下面的代码示例inspect.getsource() 用于打印自己的源代码。 inspect.getmodule() 还用于打印定义它的模块。

最后一行代码打印出它自己的行号。

import inspect
print(inspect.getsource(inspect.getsource))
print(inspect.getmodule(inspect.getmodule))
print(inspect.currentframe().f_lineno)

当然,除了这些微不足道的用途,inspect 模块可以证明对理解你的代码在做什么很有用。你还可以使用它来编写自文档化代码。

Jedi

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

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

**kwargs

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

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

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

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

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

列表(list)推导式

关于 Python 编程,我最喜欢的事情之一是它的列表推导式[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)

map

Python 通过许多内置功能支持函数式编程。最有用的map()功能之一是函数——尤其是与lambda 函数[11]结合使用时。

x = [1, 2, 3] 
y = map(lambda x : x + 1, x)
# 打印出 [2,3,4]
print(list(y))

在上面的示例中,map()将一个简单的 lambda 函数应用于x. 它返回一个映射对象,该对象可以转换为一些可迭代对象,例如列表或元组。

newspaper3k

如果你还没有看过它,那么准备好被Python newspaper module [12]模块震撼到。它使你可以从一系列领先的国际出版物中检索新闻文章和相关的元数据。你可以检索图像、文本和作者姓名。它甚至有一些内置的 NLP 功能[13]

因此,如果你正在考虑在下一个项目中使用 BeautifulSoup 或其他一些 DIY 网页抓取库,使用本模块可以为你自己节省不少时间和精力。

pip install newspaper3k

Operator overloading

Python 提供对运算符重载的[14]支持,这是让你听起来像一个合法的计算机科学家的术语之一。

这实际上是一个简单的概念。有没有想过为什么 Python 允许你使用+运算符来添加数字以及连接字符串?这就是操作符重载的作用。

你可以定义以自己的特定方式使用 Python 的标准运算符符号的对象。并且你可以在与你正在使用的对象相关的上下文中使用它们。

class Thing:def __init__(self, value):self.__value = valuedef __gt__(self, other):return self.__value > other.__valuedef __lt__(self, other):return self.__value < other.__value
something = Thing(100)
nothing = Thing(0)
# True
something > nothing
# False
something < nothing
# Error
something + nothing

pprint

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

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

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

Queue

Python 标准库的 Queue 模块实现支持多线程。这个模块让你实现队列数据结构。这些是允许你根据特定规则添加和检索条目的数据结构。

“先进先出”(FIFO)队列让你可以按添加顺序检索对象。“后进先出”(LIFO) 队列让你可以首先访问最近添加的对象。

最后,优先队列让你可以根据对象的排序顺序检索对象。

这是一个如何在 Python 中使用队列Queue[16]进行多线程编程的示例。

__repr__

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

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

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

class someClass: def __repr__(self): return "<some description here>"
someInstance = someClass()
# 打印 <some description here>
print(someInstance)

sh

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

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

import sh
sh.pwd()
sh.mkdir('new_folder')
sh.touch('new_file.txt')
sh.whoami()
sh.echo('This is great!')

Type hints

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

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

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

你还可以定义类型别名。

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。如果你正在处理大型、复杂的项目,这是很有用的!

uuid

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

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,重复存在的可能性也远低于十亿分之一。

Virtual environments

你可能同时在多个 Python 项目上工作。不幸的是,有时两个项目将依赖于相同依赖项的不同版本。你在你的系统上安装了什么?

幸运的是,Python支持对 虚拟环境[20] 的让你可以两全其美。从命令行:

python -m venv my-project 
source my-project/bin/activate 
pip install all-the-modules

现在,你可以在同一台机器上运行 Python 的独立版本和安装。

wikipedia

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

import wikipedia
result = wikipedia.page('freeCodeCamp')
print(result.summary)
for link in result.links:print(link)

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

xkcd

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

import antigravity

YAML

YAML[23]指的是 “ 非标记语言” 。它是一种数据格式化语言,是 JSON 的超集。

与 JSON 不同,它可以存储更复杂的对象并引用它自己的元素。你还可以编写注释,使其特别适合编写配置文件。该PyYAML模块[24]可让你使用YAML使用Python。

安装并然后导入到你的项目中:

pip install pyyamlimport yaml

PyYAML 允许你存储任何数据类型的 Python 对象,以及任何用户定义类的实例。

zip

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

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

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

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

写在最后

Python 是一种非常多样化且发展良好的语言,因此肯定会有许多我没有考虑的功能。如果你想了解更多的python模块,可以参考awesome-python[25]

参考资料

[1] 

collections 模块: https://docs.python.org/3/library/collections.html

[2] 

functions: https://docs.python.org/3/library/functions.html#dir

[3] 

emoji: https://pypi.org/project/emoji/

[4] 

__future__模块: https://docs.python.org/2/library/future.html

[5] 

geopy 模块: https://geopy.readthedocs.io/en/latest/

[6] 

howdoi: https://github.com/gleitz/howdoi

[7] 

inspect模块: https://docs.python.org/3/library/inspect.html

[8] 

Jedi : https://jedi.readthedocs.io/en/latest/docs/usage.html

[9] 

**kwargs: https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments

[10] 

列表推导式: https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions

[11] 

lambda 函数: https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions

[12] 

Python newspaper module : https://pypi.org/project/newspaper3k/

[13] 

内置的 NLP 功能: https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.html#performing-nlp-on-an-article

[14] 

运算符重载的: https://docs.python.org/3/reference/datamodel.html#special-method-names

[15] 

pprint: https://docs.python.org/3/library/pprint.html

[16] 

Queue: https://www.tutorialspoint.com/python3/python_multithreading.htm

[17] 

SH库: http://amoffat.github.io/sh/

[18] 

Python 3.5: https://docs.python.org/3/library/typing.html

[19] 

uuid 模块: https://docs.python.org/3/library/uuid.html

[20] 

虚拟环境: https://docs.python.org/3/tutorial/venv.html

[21] 

wikipedia模块: https://wikipedia.readthedocs.io/en/latest/quickstart.html

[22] 

Python飞行马戏团: https://en.wikipedia.org/wiki/Monty_Python's_Flying_Circus

[23] 

YAML: http://yaml.org/

[24] 

PyYAML模块: https://pyyaml.org/wiki/PyYAMLDocumentation

[25] 

awesome-python: https://awesome-python.com/

最后推荐一下我们的星球
我们会重新开放我们原来的Python入门星球,我们的星球特色是结合了入门 Python + ChatGPT这两大技术,让大家在学Python的同时可以玩ChatGPT, 玩ChatGPT可以利用python做一些深入的工具和程序。
正式运营会涨价到219 ,试运营的价格是一年159,有兴趣的同学可以火速加入。加入星球的福利 送价值200多元的干货:
1.送价值99元的3周入门python课程视频课程(菜鸟团队独家录制的)5G的视频(9折券),星球同学可9.9元购买 (限时福利)2.送市场价格30元的某礼品
3.送专栏群“玩转chatgpt秘籍”的28堂教程内容。
4.另外每周星球抽奖送书5本,星球内抽奖,一共准备了200本Python好书。一年的福利都来了!
以上福利都是加入星球4天之后领取,前面3项加起来就有200多块了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38618.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【研究那些事】 是谁可以当律师、看梗图、写代码、看论文还有创意?

0326 ChatGPT4 3月15日凌晨&#xff0c;OpenAI 正式公布了它的多模态大语言模型 GPT-4。 GPT-4 是世界第一款高体验、强能力的先进AI系统。ChatGPT用的语言模型是 GPT-3.5&#xff0c;OpenAI 称当任务的复杂性达到足够的阈值&#xff0c;GPT-4对比之前的版本的优势就会非常明显…

新星计划、原力计划新动态,大波的奖牌来袭速来领取

catalogue &#x1f31f; 写在前面&#x1f31f; 原力计划&#x1f31f; 新星计划&#x1f31f; 大波奖牌来袭&#x1f31f; 微软学生开发者峰会&#x1f31f; 写在最后 &#x1f31f; 写在前面 哈喽&#xff0c;大家好&#xff0c;我是几何心凉&#xff0c;这是一份全新的专栏…

与AI相遇 | 在ChatGPT中输入“情人节”,我们会得到......?

最近ChatGPT可谓是风靡全球&#xff0c;大家彼此的问候从“你吃饭了吗”变成“你玩ChatGPT了吗”。 这款当今最火爆的AI语言模型&#xff0c;是美国人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具&#xff0c;使用了Transformer神经网络架构&#xf…

JAVA在线考试管理系统(源代码+论文+开题报告+外文翻译+英文文献+答辩PPT)

附件5&#xff1a; 毕业论文&#xff08;设计&#xff09;外文资料译文 论文题目 在线考试系统 . 学生姓名&#xff1a; 年级&#xff08;学号&#xff09;&#xff1a; . 二级学院&#xff1a; 专业&#xff1a; 指导教师&#xff1a; 职称&#xff1a; . 填表日期&…

计算机辅助翻译实践总结,trados计算机辅助翻译实践报告材料

trados计算机辅助翻译实践报告材料 (22页) 本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01; 19.90 积分 &#xfeff;实用文档研究生课程考核试卷(适用于课程论文、提交报告)科 目&#xff1a; 计算机…

热门精选!10款学习办公必备的AI笔记工具

​人工智能随着时间的推移不断发展并改变各行各业的方式令人印象深刻&#xff0c;chatGPT的出现让我们使用AI人工智能提高工作效率变得更简单。你是否厌倦了在会议期间手动记笔记&#xff1f; 在 AI 笔记工具的帮助下&#xff0c;我们可以通过自动识别和分类关键信息、总结文本…

vxe-table高级导出功能,导出表格样式

做为技术人员我们得感谢那么提出各种奇葩需求的人&#xff0c;因为他们才使我们更快成长。如果你干不掉那些提出需求的人&#xff0c;那么就接受吧&#xff0c;废话止于此。 先看下导出表格的效果 vxe-table的高级导出功能的弹窗里虽然有样式的勾选项&#xff0c;但是还需要你…

修改程序图标

看图&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;

修改应用程序图标

修改应用程序图标 众所周知&#xff0c;我们平常习惯用的Windows操作系统&#xff0c;我们可以根据个人喜好随意修改桌面图标&#xff08;可修改的图标有&#xff1a;我的电脑、我的文档、网上邻居和回收站。当然&#xff0c;其它应用程序的图标也可以修改&#xff0c;不过不是…

Launcher修改--修改底部图标

在android2.2中&#xff0c;launcher的底部被修改成这种模式&#xff0c;有时候修改launcher的时候需要去掉电话和浏览器两项&#xff0c;我们可以在res/layout-port/文件夹中找到launcher.xml文件&#xff0c;在其中有以下代码 <RelativeLayoutandroid:id"id/all_apps…

linux修改文件图标,Gnome怎么修改应用图标icon

icon元素包括两个可选的子元素&#xff1a;small-icon子元素和large-icon子元素。文件名是Web应用归档文件(WAR)的根的相对路径。部署描述符并没有使用icon元素。下面跟着学习啦小编一起来了解一下Gnome怎么修改应用图标icon的方法吧。 Gnome怎么修改应用图标icon 我在我机器上…

Android 实现App修改应用图标

Android 实现App修改应用图标 首先上一下效果图 是在不同的android版本下运行后的效果&#xff1a; 首先是8.0以上系统 运行后图标如下&#xff1a; 然后是在API为18的4.0android系统上的运行效果&#xff1a; 其他API也是兼容的。 实现过程 第一步&#xff0c;选择你喜…

修改app图标

修改app图标 1.准备三个尺寸的.png图片 &#xff08;注&#xff1a;一定要是.png后缀的图片&#xff09;,分别命名为xx.png, xx2x.png, xx3x.png; 2.在项目中找到项目->Resource->AppLogo,把三个尺寸的图片拉入项目中&#xff0c;选择Copy items if needed、Create gr…

bat文件修改图标

A、bat命令文件是什么 它是dos下的批处理文件&#xff0c;其扩展名为.bat 或 .cmd&#xff0c;一般使用bat使用称为bat文件。 其是一种无格式的文本文件&#xff0c;含有一条或多条命令&#xff0c;可如执行.exe文件一般直接执行bat命令文件&#xff0c;从而减去使用dos窗口和击…

更改Android软件图标

1配置环境 2.解压ADT Bundle 打开eclipse. 3.创建Android程序 4.创建Android模拟器&#xff0c;在安卓模拟器上运行。 5更改软件名和图标 按照1&#xff0c;2的步骤找到程序。在3处将其改为所要修改的图标名。在4处更改软件名称。在5处将所要的图标加入&#xff08;也可以在建…

修改exe中的Icon

示例&#xff1a;SheelTool( 用于源码保护&#xff0c;为exe加壳&#xff09; 小程序技术共享 using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using…

修改程序的图标与详细描述

利用Resource Hacker工具修改.rsrc节中的数据,达到修改程序的图标与详细描述的功能 目录 一、.rsrc节 二、修改程序图标(Resource Hacker) 二、修改程序详细描述(Resource Hacker) 总结 一、.rsrc节 .rsrc节存储着程序的图标和程序的详细描述 二、修改程序图标(Resource Hack…

修改windows软件图标

情况1.如果要修改桌面软件的图标&#xff0c;右键图标&#xff0c;选择"属性"&#xff0c;在"快捷方式"页签点击"更改图标"&#xff0c;图标需要是.ico格式。 (这里有个网站可以下载好看的图标&#xff1a;http://www.icosky.com/) 情况2.如果要…

如何修改软件名称及图标,非常详细

所需工具 MT管理器&#xff1a;下载 理论&#xff1a; 补充android:versionName"2.4"是版本号 实战&#xff1a; 修改图标 wzry.png就是刚刚复制进来的图片名称 图标修改完成 下面开始修改名称&#xff1a;

【帮男(女)朋友抢演唱会门票脚本】

大麦网抢票脚本 使用脚本抢票步骤1、在PC端浏览器中安装油猴脚本管理器2、选择对应的浏览器版本安装&#xff08;Chrome、Microsoft Edge、Firefox、Safari、Opera Next&#xff09;3、在油猴脚本管理器中搜索需要的脚本4、获取与浏览器相对应的脚本5、安装脚本6、安装完后查看…