您好,登錄后才能下訂單哦!
今天小編給大家分享一下Python實用技巧有哪些及怎么用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
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 是一個 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)
Python 有一些很棒的默認數據類型,但有時它們的行為并不完全符合你的期望。
幸運的是,Python 標準庫提供了 collections 模塊**[1]**。這個方便的附加組件為你提供了更多的數據類型。
from collections import OrderedDict, Counter # 記住鍵的添加順序! x = OrderedDict(a=1, b=2, c=3) # 統計每個字符出現的頻率 y = Counter("Hello World!")
有沒有想過如何查看 Python 對象內部并查看它具有哪些屬性?在命令行中輸入:
dir() dir("Hello World") dir(dir)
當以交互方式運行 Python 以及動態探索你正在使用的對象和模塊時,這可能是一個非常有用的功能。在這里閱讀更多**functions****[2]**相關內容。
emoji**[3]** 是日本在無線通信中所使用的視覺情感符號,繪指圖畫,文字指的則是字符,可用來代表多種表情,如笑臉表示笑、蛋糕表示食物等。在中國大陸,emoji通常叫做“小黃臉”,或者直稱emoji。
# 安裝模塊 pip install emoji # 做個嘗試 from emoji import emojize print(emojize(":thumbs_up:"))
Python 流行的結果之一,總是有新版本正在開發中。新版本意味著新功能 —— 除非你的版本已過時。
不過不要擔心。使用該**__future__模塊****[4]**可以幫助你用Python的未來版本導入功能。從字面上看,這就像時間旅行、魔法或其他東西。
from __future__ import print_function print("Hello World!")
地理,對大多數程序員來說是一個具有挑戰性的領域。在獲取地理信息或者繪制地圖時,也會遇到不少問題。這個**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)
當你使用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
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 庫是一個自動完成和代碼分析庫。它使編寫代碼更快、更高效。
除非你正在開發自己的 IDE,否則你可能對使用Jedi **[8]**作為編輯器插件比較感興趣。幸運的是,這已經有可用的負載!
在學習任何語言時,都會有許多里程碑。使用 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)
當你想編寫可以處理未預先定義的命名參數的函數時,這很有用。
關于 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)
Python 通過許多內置功能支持函數式編程。最有用的map()
功能之一是函數——尤其是與**lambda 函數****[11]**結合使用時。
x = [1, 2, 3] y = map(lambda x : x + 1, x) # 打印出 [2,3,4] print(list(y))
在上面的示例中,map()
將一個簡單的 lambda
函數應用于x
. 它返回一個映射對象,該對象可以轉換為一些可迭代對象,例如列表或元組。
如果你還沒有看過它,那么準備好被Python newspaper module [12]模塊震撼到。它使你可以從一系列領先的國際出版物中檢索新聞文章和相關的元數據。你可以檢索圖像、文本和作者姓名。它甚至有一些內置的 NLP 功能**[13]**。
因此,如果你正在考慮在下一個項目中使用 BeautifulSoup
或其他一些 DIY 網頁抓取庫,使用本模塊可以為你自己節省不少時間和精力。
pip install newspaper3k
Python 提供對**運算符重載的****[14]**支持,這是讓你聽起來像一個合法的計算機科學家的術語之一。
這實際上是一個簡單的概念。有沒有想過為什么 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
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)
Python 標準庫的 Queue 模塊實現支持多線程。這個模塊讓你實現隊列數據結構。這些是允許你根據特定規則添加和檢索條目的數據結構。
“先進先出”(FIFO)隊列讓你可以按添加順序檢索對象。“后進先出”(LIFO) 隊列讓你可以首先訪問最近添加的對象。
最后,優先隊列讓你可以根據對象的排序順序檢索對象。
這是一個如何在 Python 中使用隊列**Queue****[16]**進行多線程編程的示例。
在 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)
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!')
Python 是一種動態類型語言。定義變量、函數、類等時不需要指定數據類型。這允許快速的開發時間。但是,沒有什么比由簡單的輸入問題引起的運行時錯誤更煩人的了。
從 Python 3.5**[18]** 開始,你可以選擇在定義函數時提供類型提示。
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)
盡管不是強制性的,但類型注釋可以使你的代碼更易于理解。
它們還允許你使用類型檢查工具,在運行前捕獲那些雜散的 TypeError。如果你正在處理大型、復雜的項目,這是很有用的!
通過Python 標準庫的 uuid 模塊**[19]**生成通用唯一 ID(或“UUID”)的一種快速簡便的方法。
import uuid user_id = uuid.uuid4() print(user_id)
這將創建一個隨機的 128 位數字,該數字幾乎肯定是唯一的。事實上,可以生成超過 2122 種可能的 UUID。這超過了五個十進制 (或 5,000,000,000,000,000,000,000,000,000,000,000,000)。
在給定的集合中發現重復的概率極低。即使有一萬億個 UUID,重復存在的可能性也遠低于十億分之一。
你可能同時在多個 Python 項目上工作。不幸的是,有時兩個項目將依賴于相同依賴項的不同版本。你在你的系統上安裝了什么?
幸運的是,Python支持對 虛擬環境**[20]** 的讓你可以兩全其美。從命令行:
python -m venv my-project source my-project/bin/activate pip install all-the-modules
現在,你可以在同一臺機器上運行 Python 的獨立版本和安裝。
維基百科有一個很棒的 API,它允許用戶以編程方式訪問無與倫比的完全免費的知識和信息。在**wikipedia模塊****[21]**使訪問該API非常方便。
import wikipedia result = wikipedia.page('freeCodeCamp') print(result.summary) for link in result.links: print(link)
和真實站點一樣,該模塊提供了多語言支持、頁面消歧、隨機頁面檢索,甚至還有一個donate()
方法。
幽默是 Python 語言的一個關鍵特征,它是以英國喜劇小品劇**Python飛行馬戲團****[22]**命名的。Python 的許多官方文檔都引用了該節目最著名的草圖。不過,Python 的幽默并不僅限于文檔。試試運行下面的行:
import antigravity
YAML**[23]**指的是 “ 非標記語言” 。它是一種數據格式化語言,是 JSON 的超集。
與 JSON 不同,它可以存儲更復雜的對象并引用它自己的元素。你還可以編寫注釋,使其特別適合編寫配置文件。該**PyYAML模塊****[24]**可讓你使用YAML使用Python。
安裝并然后導入到你的項目中:
pip install pyyamlimport yaml
PyYAML 允許你存儲任何數據類型的 Python 對象,以及任何用戶定義類的實例。
壓軸出場的也是很棒的一個模塊。你曾經遇到過需要從兩個列表中形成字典嗎?
keys = ['a', 'b', 'c'] vals = [1, 2, 3] zipped = dict(zip(keys, vals))
該zip()
內置函數需要一系列可迭代的對象,并返回一個元組列表中。每個元組按位置索引對輸入對象的元素進行分組。
你還可以通過調用對象來“解壓縮”對象*zip()
。
以上就是“Python實用技巧有哪些及怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。