Python實(shí)用技巧有哪些及怎么用

今天小編給大家分享一下Python實(shí)用技巧有哪些及怎么用的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、湯原ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的湯原網(wǎng)站制作公司

Python實(shí)用技巧有哪些及怎么用

all or any

Python 語言如此流行的眾多原因之一,是因?yàn)樗哂泻芎玫目勺x性和表現(xiàn)力。

人們經(jīng)常開玩笑說 Python 是可執(zhí)行的偽代碼。當(dāng)你可以像這樣寫代碼時(shí),就很難反駁。

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

bashplotlib

你有沒有想過在控制臺中繪制圖形嗎?

Bashplotlib 是一個(gè) Python 庫,他能夠幫助我們在命令行(粗曠的環(huán)境)中繪制數(shù)據(jù)。

# 模塊安裝
pip install bashplotlib
# 繪制實(shí)例
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 有一些很棒的默認(rèn)數(shù)據(jù)類型,但有時(shí)它們的行為并不完全符合你的期望。

幸運(yùn)的是,Python 標(biāo)準(zhǔn)庫提供了 collections 模塊**[1]**。這個(gè)方便的附加組件為你提供了更多的數(shù)據(jù)類型。

from collections import OrderedDict, Counter
# 記住鍵的添加順序!
x = OrderedDict(a=1, b=2, c=3)
# 統(tǒng)計(jì)每個(gè)字符出現(xiàn)的頻率
y = Counter("Hello World!")

dir

有沒有想過如何查看 Python 對象內(nèi)部并查看它具有哪些屬性?在命令行中輸入:

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

當(dāng)以交互方式運(yùn)行 Python 以及動(dòng)態(tài)探索你正在使用的對象和模塊時(shí),這可能是一個(gè)非常有用的功能。在這里閱讀更多**functions****[2]**相關(guān)內(nèi)容。

emoji

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

# 安裝模塊
pip install emoji
# 做個(gè)嘗試
from emoji import emojize
print(emojize(":thumbs_up:"))

from __future__ import

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

不過不要擔(dān)心。使用該**__future__模塊****[4]**可以幫助你用Python的未來版本導(dǎo)入功能。從字面上看,這就像時(shí)間旅行、魔法或其他東西。

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

geogy

地理,對大多數(shù)程序員來說是一個(gè)具有挑戰(zhàn)性的領(lǐng)域。在獲取地理信息或者繪制地圖時(shí),也會遇到不少問題。這個(gè)**geopy 模塊****[5]**讓地理相關(guān)內(nèi)容變得非常容易。

pip install geopy

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

還有一個(gè)有用的距離類。它以你偏好的測量單位計(jì)算兩個(gè)位置之間的距離。

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

howdoi

當(dāng)你使用terminal終端編程時(shí),通過在遇到問題后會在StackOverflow上搜索答案,完后會回到終端繼續(xù)編程,此時(shí)有時(shí)會不記得你之前查到的解決方案,此時(shí)需要重新查看StackOverflow,但又不想離開終端,那么此時(shí)你需要用到這個(gè)有用的命令行工具howdoi****[6]。

pip install howdoi

無論你有什么問題,都可以問它,它會盡力回復(fù)。

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

但請注意——它會從 StackOverflow 的最佳答案中抓取代碼。它可能并不總是提供最有用的信息…

howdoi exit vim

inspect

Python 的**inspect模塊****[7]**非常適合了解幕后發(fā)生的事情。你甚至可以調(diào)用它自己的方法!

下面的代碼示例inspect.getsource() 用于打印自己的源代碼。 inspect.getmodule() 還用于打印定義它的模塊。

最后一行代碼打印出它自己的行號。

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

當(dāng)然,除了這些微不足道的用途,inspect 模塊可以證明對理解你的代碼在做什么很有用。你還可以使用它來編寫自文檔化代碼。

Jedi

Jedi 庫是一個(gè)自動(dòng)完成和代碼分析庫。它使編寫代碼更快、更高效。

除非你正在開發(fā)自己的 IDE,否則你可能對使用Jedi**[8]**作為編輯器插件比較感興趣。幸運(yùn)的是,這已經(jīng)有可用的負(fù)載!

**kwargs

在學(xué)習(xí)任何語言時(shí),都會有許多里程碑。使用 Python 并理解神秘的**kwargs語法可能算作一個(gè)重要的里程碑。

字典對象前面的雙星號****kwargs****[9]**允許你將該字典的內(nèi)容作為命名參數(shù)傳遞給函數(shù)。

字典的鍵是參數(shù)名稱,值是傳遞給函數(shù)的值。你甚至不需要調(diào)用它kwargs!

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

當(dāng)你想編寫可以處理未預(yù)先定義的命名參數(shù)的函數(shù)時(shí),這很有用。

列表(list)推導(dǎo)式

關(guān)于 Python 編程,我最喜歡的事情之一是它的列表推導(dǎo)式****[10]

這些表達(dá)式可以很容易地編寫非常順暢的代碼,幾乎與自然語言一樣。

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()功能之一是函數(shù)——尤其是與**lambda 函數(shù)****[11]**結(jié)合使用時(shí)。

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

在上面的示例中,map()將一個(gè)簡單的 lambda 函數(shù)應(yīng)用于x. 它返回一個(gè)映射對象,該對象可以轉(zhuǎn)換為一些可迭代對象,例如列表或元組。

newspaper3k

如果你還沒有看過它,那么準(zhǔn)備好被Python newspaper module[12]模塊震撼到。它使你可以從一系列領(lǐng)先的國際出版物中檢索新聞文章和相關(guān)的元數(shù)據(jù)。你可以檢索圖像、文本和作者姓名。它甚至有一些內(nèi)置的 NLP 功能**[13]**。

因此,如果你正在考慮在下一個(gè)項(xiàng)目中使用 BeautifulSoup 或其他一些 DIY 網(wǎng)頁抓取庫,使用本模塊可以為你自己節(jié)省不少時(shí)間和精力。

pip install newspaper3k

Operator overloading

Python 提供對**運(yùn)算符重載的****[14]**支持,這是讓你聽起來像一個(gè)合法的計(jì)算機(jī)科學(xué)家的術(shù)語之一。

這實(shí)際上是一個(gè)簡單的概念。有沒有想過為什么 Python 允許你使用+運(yùn)算符來添加數(shù)字以及連接字符串?這就是操作符重載的作用。

你可以定義以自己的特定方式使用 Python 的標(biāo)準(zhǔn)運(yùn)算符符號的對象。并且你可以在與你正在使用的對象相關(guā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 的默認(rèn)print函數(shù)完成了它的工作。但是如果嘗試使用print函數(shù)打印出任何大的嵌套對象,其結(jié)果相當(dāng)難看。這個(gè)標(biāo)準(zhǔn)庫的漂亮打印模塊**pprint****[15]**可以以易于閱讀的格式打印出復(fù)雜的結(jié)構(gòu)化對象。

這算是任何使用非平凡數(shù)據(jù)結(jié)構(gòu)的 Python 開發(fā)人員的必備品。

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

Queue

Python 標(biāo)準(zhǔn)庫的 Queue 模塊實(shí)現(xiàn)支持多線程。這個(gè)模塊讓你實(shí)現(xiàn)隊(duì)列數(shù)據(jù)結(jié)構(gòu)。這些是允許你根據(jù)特定規(guī)則添加和檢索條目的數(shù)據(jù)結(jié)構(gòu)。

“先進(jìn)先出”(FIFO)隊(duì)列讓你可以按添加順序檢索對象。“后進(jìn)先出”(LIFO) 隊(duì)列讓你可以首先訪問最近添加的對象。

最后,優(yōu)先隊(duì)列讓你可以根據(jù)對象的排序順序檢索對象。

這是一個(gè)如何在 Python 中使用隊(duì)列**Queue****[16]**進(jìn)行多線程編程的示例。

__repr__

在 Python 中定義類或?qū)ο髸r(shí),提供一種將該對象表示為字符串的“官方”方式很有用。例如:

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

這使得調(diào)試代碼更加容易。將其添加到你的類定義中,如下所示:

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

sh

Python 是一種很棒的腳本語言。有時(shí)使用標(biāo)準(zhǔn)的 os 和 subprocess 庫可能有點(diǎn)頭疼。

該**SH庫****[17]**讓你可以像調(diào)用普通函數(shù)一樣調(diào)用任何程序——對于自動(dòng)化工作流和任務(wù)非常有用。

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

Type hints

Python 是一種動(dòng)態(tài)類型語言。定義變量、函數(shù)、類等時(shí)不需要指定數(shù)據(jù)類型。這允許快速的開發(fā)時(shí)間。但是,沒有什么比由簡單的輸入問題引起的運(yùn)行時(shí)錯(cuò)誤更煩人的了。

Python 3.5**[18]** 開始,你可以選擇在定義函數(shù)時(shí)提供類型提示。

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

你還可以定義類型別名。

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)

盡管不是強(qiáng)制性的,但類型注釋可以使你的代碼更易于理解。

它們還允許你使用類型檢查工具,在運(yùn)行前捕獲那些雜散的 TypeError。如果你正在處理大型、復(fù)雜的項(xiàng)目,這是很有用的!

uuid

通過Python 標(biāo)準(zhǔn)庫的 uuid 模塊**[19]**生成通用唯一 ID(或“UUID”)的一種快速簡便的方法。

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

這將創(chuàng)建一個(gè)隨機(jī)的 128 位數(shù)字,該數(shù)字幾乎肯定是唯一的。事實(shí)上,可以生成超過 2122 種可能的 UUID。這超過了五個(gè)十進(jìn)制 (或 5,000,000,000,000,000,000,000,000,000,000,000,000)。

在給定的集合中發(fā)現(xiàn)重復(fù)的概率極低。即使有一萬億個(gè) UUID,重復(fù)存在的可能性也遠(yuǎn)低于十億分之一。

Virtual environments

你可能同時(shí)在多個(gè) Python 項(xiàng)目上工作。不幸的是,有時(shí)兩個(gè)項(xiàng)目將依賴于相同依賴項(xiàng)的不同版本。你在你的系統(tǒng)上安裝了什么?

幸運(yùn)的是,Python支持對 虛擬環(huán)境**[20]** 的讓你可以兩全其美。從命令行:

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

現(xiàn)在,你可以在同一臺機(jī)器上運(yùn)行 Python 的獨(dú)立版本和安裝。

wikipedia

維基百科有一個(gè)很棒的 API,它允許用戶以編程方式訪問無與倫比的完全免費(fèi)的知識和信息。在**wikipedia模塊****[21]**使訪問該API非常方便。

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

和真實(shí)站點(diǎn)一樣,該模塊提供了多語言支持、頁面消歧、隨機(jī)頁面檢索,甚至還有一個(gè)donate()方法。

xkcd

幽默是 Python 語言的一個(gè)關(guān)鍵特征,它是以英國喜劇小品劇**Python飛行馬戲團(tuán)****[22]**命名的。Python 的許多官方文檔都引用了該節(jié)目最著名的草圖。不過,Python 的幽默并不僅限于文檔。試試運(yùn)行下面的行:

import antigravity

YAML

YAML**[23]**指的是 “ 非標(biāo)記語言” 。它是一種數(shù)據(jù)格式化語言,是 JSON 的超集。

與 JSON 不同,它可以存儲更復(fù)雜的對象并引用它自己的元素。你還可以編寫注釋,使其特別適合編寫配置文件。該**PyYAML模塊****[24]**可讓你使用YAML使用Python。

安裝并然后導(dǎo)入到你的項(xiàng)目中:

pip install pyyamlimport yaml

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

zip

壓軸出場的也是很棒的一個(gè)模塊。你曾經(jīng)遇到過需要從兩個(gè)列表中形成字典嗎?

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

zip()內(nèi)置函數(shù)需要一系列可迭代的對象,并返回一個(gè)元組列表中。每個(gè)元組按位置索引對輸入對象的元素進(jìn)行分組。

你還可以通過調(diào)用對象來“解壓縮”對象*zip()。

以上就是“Python實(shí)用技巧有哪些及怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標(biāo)題名稱:Python實(shí)用技巧有哪些及怎么用
文章源于:http://bm7419.com/article38/pssosp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站導(dǎo)航、微信公眾號、商城網(wǎng)站、品牌網(wǎng)站制作外貿(mào)網(wǎng)站建設(shè)

廣告

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

成都做網(wǎng)站