Python的實用技巧有哪些-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“Python的實用技巧有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的林甸網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

ALL OR ANY

Python之所以成為這么一門受歡迎的語言一個原因是它的可讀性和表達能力非常強。Python也因此經(jīng)常被調(diào)侃為“可執(zhí)行的偽代碼”。不信你看:

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")

BASHPLOTIB

你想要在控制臺繪圖嘛?

$ pip install bashplotlib

現(xiàn)在,你的控制臺中就可以有圖了

COLLECTIONS

Python有一些很棒的默認數(shù)據(jù)類型,但是有時候他們并不會像你所希望的那樣發(fā)揮作用。
幸運的是,Python 標準庫提供了collection模塊。它讓你可以使用更為多樣數(shù)據(jù)類型。

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的時候一個非常有用的功能,用于動態(tài)探索你所使用的對象和模塊。更多詳情,可以查看這里:/tupian/20230522/functions.html class="python language-python hljs">from emoji import emojize
print(emojize(":thumbs_up:"))

FROM_GUTURE_IMPORT

Python非常受歡迎,這也就導(dǎo)致了它的版本更新非???,新的版本往往會有很多新特性。你不更新,就無法使用。

然而,不要害怕。__future__ 模塊可以讓你導(dǎo)入未來版本的功能。有點像時空穿梭有木有!

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

GEOPY

對于程序猿來說地理可能是一個非常有挑戰(zhàn)性的領(lǐng)域。但是,geopy模塊則讓它變得非常簡單。

$ pip install geopy

它通過提取一系列不同地理編碼服務(wù)的api來工作,讓你能夠獲得一個地方的完整街道地址、緯度、經(jīng)度,甚至海拔。

這里面同時還包含一個有用的“距離”類別。它能使用你選定的度量去計算了兩個地點之間的距離。

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

HOWDOI

有時候你碰到了一個編程問題,覺得自己之前明明見過它的解決方法,但是卻記不起來具體是怎么樣的了。于是你想要去StackOverflow上找,但又不想離開這個終端。這個時候,你需要下面這個工具——howdoi

$ pip install howdoi

你所遇到的任何問題都可以問它,它會盡他所能給你返回一個答案。

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

需要注意的是——它只從StackOverflow最頂端的答案中抓取代碼。所以它給你返回的不總是最有用的信息...

$ howdoi exit vim

INSPECT

Python的inspect模塊用于收集Python對象的信息,可以獲取類或函數(shù)的參數(shù)的信息,源碼,解析堆棧等等

下方的代碼樣例使用了 inspect.getsource() 來打印它自身的源碼。同樣還使用了 inspect.getmodule()來打印定義了inspect.getmodule()的模塊。最后一行代碼則是打印了本行代碼所在的行號。在本例中,就是 4 。

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

inspect模塊可以有效地讓你知道你的代碼是如何工作的,你也可以利用它來完成一些個人的源碼。

JEDI

Jedi庫是一個代碼自動補齊和靜態(tài)分析的庫。它可以使你更快更高效地書寫代碼。
除非你在開發(fā)自己的編輯器,否則你可能會非常喜歡將Jedi作為自己的編輯插件。

你可能已經(jīng)正在使用Jedi而只是沒發(fā)現(xiàn)。IPython項目就是利用Jedi來實現(xiàn)其自動補全功能。

**KWARGS

無論你學(xué)習(xí)那種語言,在這條學(xué)習(xí)之路上總有那么一些里程碑。在Python的編程學(xué)習(xí)中,理解神秘的**kwargs語法應(yīng)該算是一個重要的里程碑。

雙星“**”放在字典的前面可以讓你將字典的內(nèi)容作為命名參數(shù)傳遞給函數(shù)。字典的鍵是參數(shù)的名字,鍵的值作為參數(shù)的值傳遞給函數(shù)。如下所示:

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)

當(dāng)你想要創(chuàng)建一個函數(shù),它需要能處理事先沒有定義過的參數(shù),那么就要用到前面提到的技巧了。

LIST COMPREHENSIONS

List comprehensions(列表推導(dǎo)式)

列表推導(dǎo)式可以說是我最喜歡的Python技巧之一。這種表達式可以讓你寫出像自然語言一樣易于理解并且還很簡潔的代碼。

你可以通過這個鏈接了解更多關(guān)于列表推導(dǎo)式的用法。地址:https://www.learnpython.org/en/List_Comprehensions

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有許多非常有用的內(nèi)置函數(shù)。其中一個就是map()——特別是和lambda函數(shù)相結(jié)合的時候。

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

在這個例子中,map()對x中的每一個元素都應(yīng)用了一個簡單的lambda函數(shù)。它會返回一個map對象,這個對象可以被轉(zhuǎn)化成可迭代對象,如列表或者元組。

NEWSPAPER3K

newspaper3k,如果你還沒有見過它,那么你可能會被這個Python newspaper模塊所驚艷到。
它可以讓你檢索到一系列國際領(lǐng)先出版物中的新聞和相關(guān)的元數(shù)據(jù)。你可以檢索圖片、文本和作者名。它甚至有一些內(nèi)置的自然語言處理功能。所以,如果你正在考慮使用BeautifulSoup 或其他自制的爬蟲庫來應(yīng)用于你的下一個項目。那么,省省時間和精力吧,你其實只需要$ pip install newspaper3k。

OPERATOR OVERLOADING(操作符重載)

Python支持操作符重載?!安僮鞣剌d”其實是個簡單的概念,你是否曾經(jīng)想過為什么Python可以讓你使用“+”操作符來同時實現(xiàn)加法和連接字符串?這就是操作符重載在發(fā)揮作用。

你可以定義使用Python標準操作符符號的對象,這可以讓你在特定的環(huán)境中使用特定的對象,就像下方的例子一樣。

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函數(shù)可以滿足日常的輸出任務(wù),但如果要打印更大的、嵌套式的對象,那么使用默認的print函數(shù)打印出來的內(nèi)容會很丑陋。

這個時候我們就需要pprint了,它可以讓復(fù)雜的結(jié)構(gòu)型對象以可讀性更強的格式顯示。這對于經(jīng)常要面對非普通數(shù)據(jù)結(jié)構(gòu)的Python開發(fā)者來說是必不可少的工具。

import requests
import pprint
url = '/tupian/20230522/results=1& class="python language-python hljs">>>> file = open('file.txt', 'r')
>>> print(file)
<open file 'file.txt', mode 'r' at 0x10d30aaf0>

這使得debug更加方便,具體的定義方式如下:

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

SH

sh庫讓你像調(diào)用方法那樣調(diào)用系統(tǒng)中的命令。

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

TYPE HINT(類型提示)

Python是一種動態(tài)類型語言。當(dāng)你定義變量、函數(shù)、類別的時候,你不需要指定數(shù)據(jù)的類型。這可以大大提升你的開發(fā)速度,但也是有代價的。你可能會因為一個簡單的輸入問題而導(dǎo)致運行出錯。

在Python3.5之后,這就不是問題了,在定義函數(shù)的時候你可以自主選擇要不要提供類型提示。

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)

雖然不是強制性的,類型注釋可以讓你的代碼理解起來更加簡單。它們也允許你使用類型檢測工具在運行之前捕獲這些零散的類型錯誤。如果你正在從事大型、復(fù)雜的項目,那么類型注釋也許會非常有幫助

UUID

通過Python標準庫中的uuid模塊,可以快速并簡單地生成統(tǒng)一的唯一ID(又稱UUID).

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

UUID是128位的全局唯一標識符,通常由32字節(jié)的字符串表示。它可以保證時間和空間的唯一性,也稱為GUID,全稱為:UUID —— Universally Unique IDentifier,Python 中叫 UUID。它通過MAC地址、時間戳、命名空間、隨機數(shù)、偽隨機數(shù)來保證生成ID的唯一性。

VRITUAL ENVIRONMENTS

這可能是我最喜歡的Python技巧了。你可能經(jīng)常要處理不止一個Python項目,不幸的是,有時候不同項目會依賴不同的Python版本。這個時候,你應(yīng)該在系統(tǒng)里安裝哪個Python版本呢?

幸運的是,Python可以支持建立不同的虛擬環(huán)境來滿足不同的版本需求。

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

現(xiàn)在你可以在一臺機器上安裝和運行各個獨立版本的Python。太棒了!

WIKIPEDIA

Wikipedia有一個很棒的API,它可以讓用戶通過編程訪問到維基的詞條內(nèi)容。使用Python中的wikipedia模塊可以讓你以最便捷的方式訪問該API。

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

與真實站點一樣,該模塊支持多種語言、頁面消除歧義、隨機頁面檢索,甚至還有donate()方法。

YAML

YAML是“YAML不是一種標記語言”的外語縮寫。它是一個數(shù)據(jù)格式語言,是JSON的父集。和JSON不同的是,它可以存儲更復(fù)雜的對象,并且可以引用自身的元素。你還可以寫注釋,這讓YAML特別適合于書寫配置文件。

PyYAML模塊可以讓你使用Python調(diào)用YAML。使用下列語句安裝:

$ pip install pyyaml

然后導(dǎo)入到項目中:

import yaml

PyYAML 使你能夠儲存任何數(shù)據(jù)類型的Python對象,以及任何用戶定義類的實例。

ZIP

最后一個技巧也非常酷。你是否曾想要讓兩個列表中的元素逐個映射,組合成字典?那么你應(yīng)該使用zip。

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

內(nèi)置函數(shù)zip()接收若干可迭代對象,然后返回一個由多個元組組成的列表。每個元組根據(jù)輸入對象的位置索引對其元素進行分組。還可以使用*zip()來“解壓”對象。

“Python的實用技巧有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

網(wǎng)頁標題:Python的實用技巧有哪些-創(chuàng)新互聯(lián)
文章鏈接:http://bm7419.com/article32/ddppsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、微信小程序品牌網(wǎng)站設(shè)計、外貿(mào)建站網(wǎng)站制作、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營