一份超级实用的 Python ”技巧“清单

梦幻python 2021-11-25 17:24:45
技巧 Python 实用 一份 超级

image

Python是世界上最受欢迎,最流行的编程语言之一。这有很多原因:

  • 它很容易学习
  • 它是超级多用途的
  • 它有大量的模块和库

每天使用Python是我内在工作的一部分。在这个过程中,我学会了一些有用的技巧和心得。

在这里,我尝试以A~Z顺序共享其中一些。

大多数这些“技巧”是我在日常工作中使用或偶然发现的事情。一些是我在浏览Python标准库文档时发现的。另外一些是通过PyPi搜索到的。

但是,应该归功于它 - 我在awesome-python.com上发现了其中的四个或五个。这是数百个有趣的Python工具和模块的精选列表。这是值得浏览的灵感!

all or any

Python是如此流行的编程语言的原因之一是因为具有可读性和表现力。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以价位(同音):762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

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

x = [True, True, False]
if any(x):
print("At least one True")
if all(x):
print("Not one False")
if any(x) and not all(x):
print("At least one True and one False")

bashplotlib

您想在控制台中绘制图表吗?

$ pip install bashplotlib

您可以在控制台中显示图表。

collections

Python有一些很棒的默认数据类型,但有时候它们的行为并不像你想要的那样。

幸运的是,Python标准库提供了集合模块。这个方便的附加组件为您提供了更多的数据类型。

from collections import OrderedDict, Counter
# Remembers the order the keys are added!
x = OrderedDict(a=1, b=2, c=3)
# Counts the frequency of each character
y = Counter("Hello World!")

DIR

曾经想知道如何查看Python对象并查看它具有哪些属性?你当然有。

从命令行:

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

当以交互方式运行Python以及动态浏览您正在使用的对象和模块时,这可能是一个非常有用的功能。

$ pip install emoji
from emoji import emojize
print(emojize(":thumbs_up:"))

fromfutureimport

Python受欢迎的一个后果是一直有新的版本在开发中。新版本意味着新功能 - 除非您的版本已过时。

但是,不要害怕。该 ***future 模块 ***,让您可以用Python导入未来版本的功能。它实际上就像时间旅行,魔术或其他东西。

from future import print_function
print(“Hello World!”)

为什么不去导入花括号?

geopy

对于程序员来说,地理位置可能是一个具有挑战性的领域(ha,a pun!)。但是geopy模块让它变得非常简单。
pip install geopy

它的工作原理是抽象出一系列不同地理编码服务的API。它使您可以获得一个地方的完整街道地址,纬度,经度,甚至高度。

还有一个有用的距离类。它会计算您最喜欢的测量单位中两个位置之间的距离。

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

howdoi

遇到编码问题而忘记了之前看到过的解决方案?需要检查StackOverflow,但不想离开终端?

然后你需要 这个有用的命令行工具

$ pip install howdoi

问你有什么问题,它会尽力回答。

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

请注意 - 它从StackOverflow的顶级答案中删除代码。它可能并不总能提供最有用的信息…

$ howdoi退出vim

inspect 检查

Python的检查模块非常适合理解幕后发生的事情。你甚至可以自己调用它的方法!

下面的代码示例 inspect.getsource() 用于打印自己的源代码。它还 inspect.getmodule()用于打印定义它的模块。最后,如果你的时间不是很紧张,并且又想快速的python提高,最重要的是不怕吃苦,建议你可以价位(同音):762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

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

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

当然,除了这些微不足道的用途之外,检查模块对于理解代码的作用非常有用。您也可以使用它来编写自我记录代码。

Jedi

Jedi库是一个代码辅助和代码分析的库。它使编写代码更快,更高效。

除非您正在开发自己的IDE,否则您可能最感兴趣的是将Jedi用作编辑器插件。幸运的是,已经可用了!

但是,您可能已经在使用Jedi了。IPython项目利用Jedi实现其代码自动完成功能。

**** kwargs**

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

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

Python直播学习群:556370268,这里有资源共享,技术解答,还有小编从最基础的Python资料到项目实战的学习资料都有整理,希望能帮助你更好的学习python。

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

dictionary = {"a": 1, "b": 2}
def someFunction(a, b):
print(a + b)
return
# these do the same thing:
someFunction(**dictionary)
someFunction(a=1, b=2)

当您想要编写可以处理未事先定义的命名参数的函数时,这非常有用。

List comprehensions

我最喜欢用Python编程的一点是列表推导。

这些表达式可以很容易地编写非常干净的代码,几乎就像自然语言一样。

您可以在此处详细了解如何使用它们。

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函数结合使用。

x = [1, 2, 3]
y = map(lambda x : x + 1 , x)
# prints out [2,3,4]
print(list(y))

在上面的示例中, map() 将简单的lambda函数应用于每个元素 x 。它返回一个map对象,可以将其转换为某个可迭代对象,例如list或tuple。

newspaper3k

如果你还没有看过它,那么请准备好让你的思绪被 Python的报纸模块所震撼

它允许您从一系列领先的国际出版物中检索新闻文章和相关的元数据。您可以检索图像,文本和作者姓名。

它甚至还有一些内置的NLP功能。

因此,如果您正在考虑将BeautifulSoup或其他DIY网页爬虫库用于您的下一个项目,请节省您自己的时间和精力,用`$ pip install newspaper3k 代替。

Operator overloading 运算符重载

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

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

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

class Thing:
def __init__(self, value):
self.__value = value
def __gt__(self, other):
return self.__value > other.__value
def __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 函数可以完成它的工作。但是尝试打印出任何大的嵌套对象,结果相当丑陋。

这是 标准库的漂亮打印模块(Standard Library’s pretty-print module)的 用武之地。它以易于阅读的格式打印出复杂的结构化对象。

任何使用非常规数据结构的Python开发人员必备的。

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

Queue 队列

Python支持多线程,标准库的队列模块为此提供了便利。

此模块允许您实现队列数据结构。这些是允许您根据特定规则添加和检索条目的数据结构。

‘先进先出’(或FIFO)队列允许您按照添加的顺序检索对象。“后进先出”(LIFO)队列允许您首先访问最近添加的对象。

最后,优先级队列允许您根据对象的排序顺序检索对象。

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

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()
# prints <some description here>
print(someInstance)

SH

Python是一种很棒的脚本语言。有时使用标准的操作系统和子进程库可能会让人头疼。

该SH库提供了一个整洁的替代品。

它允许您调用任何程序,就像它是一个普通函数一样 - 对于自动化工作流和任务非常有用,所有这些都来自Python。

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开始,您可以选择在定义函数时提供类型提示。

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)

虽然不是强制性的,但类型注释可以使您的代码更容易理解。

它们还允许您使用类型检查工具在运行时捕获那些杂散的TypeErrors。如果您正在开展大型复杂项目,那可能是值得的!

uuid

生成通用唯一ID(或“UUID”)的快捷方法是通过 Python标准库的uuid模块

import uuid
user_id = uuid.uuid4()
print(user_id)

这会创建一个随机的128位数字,几乎肯定是唯一的。

实际上,可以生成超过2 12 2个可能的UUID。这超过五亿十亿(或5,000,000,000,000,000,000,000,000,000,000,000,000,000)。

在给定集合中找到重复的概率非常低。即使有万亿UUID,重复存在的可能性也远远低于十亿分之一。

两行代码相当不错。

Virtual environments

这可能是我最喜欢的Python的地方。

您有可能在任何时候都在处理多个Python项目。不幸的是,有时两个项目将依赖于同一依赖项的不同版本。你在系统上安装了哪些?

幸运的是,Python对虚拟环境的支持让您拥有两全其美的优势。从命令行:

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

现在,您可以在同一台计算机上运行独立版本和Python安装。

wikipedia 维基百科

维基百科有一个很棒的API,允许用户以编程方式访问无与伦比的完全免费的知识和信息。

在维基百科模块,使访问该API几乎令人意想不到的方便。

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

与真实网站一样,该模块提供对多种语言的支持,页面消歧,随机页面检索,甚至还有一种 donate() 方法。

XKCD

幽默是Python语言的一个关键特征 - 毕竟,它是以英国喜剧素描 ***Monty Python的飞行马戏团***命名的。Python的大部分官方文档都引用了该剧最着名的草图。

但幽默感并不局限于文档。请按以下方式运行:

import antigravity

永远不要改变,Python。从不改变。

YAML

YAML代表’ YAML Is Not Markup Language '。它是一种数据格式化语言,是JSON的超集。

与JSON不同,它可以存储更复杂的对象并引用它自己的元素。您还可以编写注释,使其特别适合编写配置文件。

该PyYAML模块可让您使用YAML使用Python。安装:

$ pip install pyyaml

然后导入到您的项目中:

import yaml

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

zip 压缩

技巧的最后一招,真的很酷。曾经需要从两个列表中形成字典吗?

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

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

您也可以通过调用 *zip() 它们来“解压缩”对象。
image

福利:私信回复【01】可免费获取python入门教程视频

版权声明
本文为[梦幻python]所创,转载请带上原文链接,感谢
https://blog.csdn.net/zihong525/article/details/121542352

  1. Debugging mm32f3277 from zhufei, transplanted with micro Python development board
  2. Recognizing numbers using OpenCV and python
  3. 真的太香了,Python速查表终于出中文版了
  4. Django REST Framework(DRF)教程:快速入门
  5. python django objects filter过滤查询:startswith year
  6. Data encapsulation of Excel test cases in Python
  7. 学员管理系统python
  8. 肝了一夜,8000字概括精髓,pandas必知必会50例!
  9. Python竟然可以画漫画!漫画版的故宫导游图,来袭!
  10. Networkx graph theory Dijkstra algorithm shortest path implementation, Python
  11. Draw a HelloWorld with Python turtle Library
  12. 运行django的服务器内存使用偶尔跳高一点,重启服务马上下来,是内存泄露吧
  13. Basic usage of Python tqdm module in machine learning training
  14. Python -- basic usage method and basic template of argparse module
  15. python-sockertserver并发编程思想
  16. Programmation simultanée du serveur de sockets Python
  17. Vue+Django 旅游网项目 首页前端实现
  18. [learning notes] Python - pyecarts
  19. Python automated operation and maintenance -- actual combat (I)
  20. Classic usage of pandas: iloc and LOC of data filtering
  21. Python 多分支语句的三种结构
  22. Calendar module of Python time series
  23. Python 输出指定范围的闰年
  24. A super easy to use Python standard library. It's great to operate directories and files
  25. Fatal Python error: init_ fs_ encoding: failed to get the Python codec of the filesystem encoding
  26. Using Python to obtain a video address is as simple as
  27. #yyds干货盘点# 6. Python 元组,不可变的列表,滚雪球学 Python
  28. Yyds Dry Inventory # 6. Python tuples, invariant List, snowball Learning Python
  29. You cannot enter the registration page using Django registration redux
  30. 笨办法学Python第十八天:更多文件操作
  31. Python编辑代码,帮个忙呗
  32. pandas转换object为int失败了,有人能解答吗
  33. python解释题,解释这串,所代表的意思
  34. 用python用while语句写1000以内能被5和9整除的数和个数
  35. #python 我写了一个“饭店”程序
  36. Comprehensive application of Python foundation -- Development
  37. Écrivez en python le nombre et le nombre d'entiers qui peuvent être divisés par 5 et 9 jusqu'à 1000 dans une instruction while
  38. python3.7 FileNotFoundError: [WinError 2] 系统找不到指定的文件。
  39. 最全面的Python重点知识汇总
  40. You can learn Python articles without reading online classes (day 4)
  41. You can learn Python articles without reading online classes (the third day)
  42. python中 我想爬取一个网页,我在cmd中pip list中已经把requests 以及bs4 弄好了 但是他还是提示我没有那个模块
  43. You can learn Python articles without reading online classes (the next day)
  44. You can learn Python articles without reading online classes (the first day)
  45. 在Python和Go项目之后使用Rust的经验分享 - scaleway
  46. 使用PyO3从Python调用 Rust:加速Python
  47. Python 3.7 filenotfounderror: [winerror 2] le système n'a pas pu trouver le fichier spécifié.
  48. Python 一切皆对象
  49. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  50. 求各位亲们可以解答一下嘛,为什么跑不出来呀,大学Python
  51. 【Pandas学习笔记01】强大的分析结构化数据的工具集
  52. python飞机大战如何让飞机始终在界面中,不能跑出界面
  53. Python代码阅读(第63篇):数字奇偶性
  54. python建立⼀個圖形介⾯應⽤(GUI app)
  55. python接口自动化的html格式报告以邮件形式发送展示的原文很丑怎么处理
  56. 针对初学者,我建议你学这 3 个 Python AutoEDA 工具包
  57. #yyds干货盘点#Python-爬虫_urlib一个类型和六个方法
  58. Pour les débutants, je vous recommande d'apprendre ces 3 kits autoeda Python
  59. 我想问python怎么入门嘞?求各路人士
  60. Summary of today's Django lessons: data reverse query triggers error field 'score_ jieshoufankui‘ expected a number but got ‘‘-20211109