目錄
all or any
bashplotlib
collections
dir
emoji
from __future__ import
geogy
howdoi
inspect
Jedi
列表(list)推导式
map
newspaper3k
Operator overloading
pprint
Queue
__repr__
sh
Type hints
uuid
Virtual environments
wikipedia
xkcd
YAML
zip
首頁 後端開發 Python教學 歸納整理! Python實用技巧總結

歸納整理! Python實用技巧總結

Mar 07, 2022 pm 05:10 PM
python

本篇文章為大家帶來了關於python的相關知識,其中主要總結了24個非常實用的Python開發技巧,包括了all or any、bashplotlib、collections等等,希望對大家有幫助。

歸納整理! Python實用技巧總結

推薦學習:python教學

在Python的學習過程中,很多小夥伴可能會想,我學了這麼多,哪些是常用、實用的?怎樣增加工作效率?

今天,我就總結了24個好用到爆的Python實用技巧,希望能對小夥伴們有幫助! 迎收藏學習,喜歡按讚支持,文末提供技術交流群。

在這裡,我嘗試以A - Z 開頭的格式分享這些技巧中的一部分,並且簡單介紹這些方法,如果你對其中一個或多個感興趣,你可以透過文末參考資料查看官方文件哦~

all or any

Python 語言如此流行的眾多原因之一,是因為它具有很好的可讀性和表現力。

人們常開玩笑說 Python 是可執行的偽代碼。當你可以像這樣寫程式碼時,就很難反駁。

1

2

3

4

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 函式庫,他能夠幫助我們在命令列(粗曠的環境)中繪製資料。

1

2

3

4

5

6

7

# 模块安装

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]**。這個方便的附加元件為你提供了更多的資料類型。

1

2

3

4

5

from collections import OrderedDict, Counter

# 记住键的添加顺序!

x = OrderedDict(a=1, b=2, c=3)

# 统计每个字符出现的频率

y = Counter("Hello World!")

登入後複製

dir

有沒有想過如何查看 Python 物件內部並查看它具有哪些屬性?在命令列中輸入:

1

2

3

dir() 

dir("Hello World"

dir(dir)

登入後複製

當以互動方式運行 Python 以及動態探索你正在使用的物件和模組時,這可能是一個非常有用的功能。在這裡閱讀更多**functions****[2]**相關內容。

emoji

emoji**[3]** 是日本在無線通訊中所使用的視覺情緒符號,繪圖圖畫,文字指的則是字符,可用來代表多種表情,如笑臉表示笑、蛋糕表示食物等。在中國大陸,emoji通常叫做“小黃臉”,或直稱emoji。

1

2

3

4

5

# 安装模块

pip install emoji

# 做个尝试

from emoji import emojize

print(emojize(":thumbs_up:"))

登入後複製

from __future__ import

Python 流行的結果之一,總是有新版本正在開發中。新版本意味著新功能 —— 除非你的版本已過時。

不過別擔心。使用該**__future__模組****[4]**可以幫助你用Python的未來版本導入功能。從字面上看,這就像時間旅行、魔法或其他東西。

1

2

from __future__ import print_function

print("Hello World!")

登入後複製

geogy

#地理,對大多數程式設計師來說是一個具有挑戰性的領域。在取得地理資訊或繪製地圖時,也會遇到不少問題。這個**geopy 模組****[5]**讓地理相關內容變得非常容易。

1

pip install geopy

登入後複製

它透過抽象化一系列不同地理編碼服務的 API 來運作。透過它,你能夠獲得一個地方的完整街道地址、緯度、經度甚至海拔高度。

還有一個有用的距離類別。它以你偏好的測量單位計算兩個位置之間的距離。

1

2

3

4

5

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 ]

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

登入後複製

inspect

Python 的**inspect模組****[7]**非常適合了解幕後發生的事。你甚至可以呼叫它自己的方法!

下面的程式碼範例inspect.getsource() 用來列印自己的原始程式碼。 inspect.getmodule() 也用來列印定義它的模組。

最後一行程式碼列印出它自己的行號。

1

2

3

4

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

1

2

3

dictionary = {"a": 1, "b": 2}def someFunction(a, b):

    print(a + b)

    return# 这些做同样的事情:someFunction(**dictionary)someFunction(a=1, b=2)

登入後複製

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

列表(list)推导式

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

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

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)

登入後複製

map

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

1

2

3

4

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 网页抓取库,使用本模块可以为你自己节省不少时间和精力。

1

pip install newspaper3k

登入後複製

Operator overloading

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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

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

1

2

3

4

5

import requests

import pprint

url = &#39;https://randomuser.me/api/?results=1&#39;

users = requests.get(url).json()

pprint.pprint(users)

登入後複製

Queue

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

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

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

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

__repr__

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

1

2

3

>>> file = open('file.txt''r'

>>> print(file) 

<open file &#39;file.txt&#39;, mode &#39;r&#39; at 0x10d30aaf0>

登入後複製

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

1

2

3

4

5

6

class someClass: 

    def __repr__(self): 

        return "<some description here>"

someInstance = someClass()

# 打印 <some description here>

print(someInstance)

登入後複製

sh

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

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

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!')

登入後複製

Type hints

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

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

1

2

def addTwo(x : Int) -> Int:

    return x +

登入後複製

你还可以定义类型别名。

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

uuid

通过Python 标准库的 uuid 模块**[19]**生成通用唯一 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,重复存在的可能性也远低于十亿分之一。

Virtual environments

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

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

1

2

3

python -m venv my-project 

source my-project/bin/activate 

pip install all-the-modules

登入後複製

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

wikipedia

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

1

2

3

4

5

import wikipedia

result = wikipedia.page('freeCodeCamp')

print(result.summary)

for link in result.links:

    print(link)

登入後複製

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

xkcd

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

1

import antigravity

登入後複製

YAML

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

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

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

1

pip install pyyamlimport yaml

登入後複製

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

zip

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

1

2

3

keys = ['a''b''c']

vals = [1, 2, 3]

zipped = dict(zip(keys, vals))

登入後複製

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

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

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

 推荐学习:python学习教程

以上是歸納整理! Python實用技巧總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1277
29
C# 教程
1257
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles