成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

那些神奇的Python代碼技巧,你肯定還不知道,還不抓緊時間收藏?

開發(fā) 后端
被人工智能捧紅的 Python 已是一種發(fā)展完善且非常多樣化的語言,其中肯定有一些你尚未發(fā)現(xiàn)的功能。本文或許能夠讓你學到一些新技巧。

被人工智能捧紅的 Python 已是一種發(fā)展完善且非常多樣化的語言,其中肯定有一些你尚未發(fā)現(xiàn)的功能。本文或許能夠讓你學到一些新技巧。

 

Python 是世界上***、熱門的編程語言之一,原因很多,比如:

  • 易于學習
  • 超高的通用性
  • 具備大量模塊和庫

本文將分享一些使用 Python 的技巧,順序按照 A-Z 排列。

all or any

Python 非常受歡迎的原因之一是其可讀性和表達性。

人們還經(jīng)常把 Python 笑稱為「可執(zhí)行偽碼(executable pseudocode)」。但是,當你可以編寫這樣的代碼時,很難去反駁這種言論:

  1. x = [TrueTrueFalse
  2. if any(x): 
  3.  print("At least one True"
  4. if all(x): 
  5.  print("Not one False"
  6. if any(x) and not all(x): 
  7.  print("At least one True and one False"

bashplotlib

想在控制臺中繪圖嗎?

  1. $ pip install bashplotlib 

使用上面的行,即可在控制臺中繪圖。

collections

Python 有一些很棒的默認數(shù)據(jù)類型,但有時候它們可能不會盡如你意。

不過,Python 標準庫提供了 collections 模塊。這個方便的附加組件可以為你提供更多數(shù)據(jù)類型。

collections 模塊:https://docs.python.org/3/library/collections.html

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

dir

你是否想過如何查看 Python 對象內(nèi)部及其具有哪些屬性?

輸入以下命令行:

  1. >>> dir() 
  2. >>> dir("Hello World"
  3. >>> dir(dir) 

當以交互方式運行 Python 時,這可能是一個非常有用的功能,并且可以動態(tài)地探索你正在使用的對象和模塊。

想要了解更多,點這里:https://docs.python.org/3/library/functions.html#dir

emoji

是的,真的有。請點擊這里:https://pypi.org/project/emoji/

  1. $ pip install emoji 

別以為我不知道你會偷偷試它→→

  1. from emoji import emojize 
  2. print(emojize(":thumbs_up:")) 

from __future__ import

Python 流行的一個結果是,總有新版本正在開發(fā)中。新版本意味著新功能——除非你的版本已經(jīng)過時。

不過,別擔心。__ future__模塊允許用戶導入新版 Python 的功能。這簡直就像時間旅行,或者魔法什么的。

__ future__模塊:https://docs.python.org/2/library/*future*.html

  1. from __future__ import print_function 
  2. print("Hello World!"

geopy

地理(Geography)對于程序員來說可能是一個具有挑戰(zhàn)性的領域。但是 geopy 模塊讓它變得異常簡單。

geopy 模塊:https://geopy.readthedocs.io/en/latest/

  1. $ pip install geopy 

它通過抽取一系列不同地理編碼服務的 API 來工作,使用戶獲取一個地方的完整街道地址、緯度、經(jīng)度,甚至海拔高度。

另外一個有用的功能是距離:它可以用你喜歡的度量單位計算出兩個位置之間的距離。

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

howdoi

陷入編碼問題,卻不記得以前見過的解決方案?需要檢查 StackOverflow,但不想離開終端?

那么你需要這個有用的命令行工具:https://github.com/gleitz/howdoi。

  1. $ pip install howdoi 

無論你有什么問題都可以問它,它會盡力回答。

  1. $ howdoi vertical align css 
  2. $ howdoi for loop in java 
  3. $ howdoi undo commits in git 

但是請注意——它會從 StackOverflow 的***票答案中抓取代碼。也就是說它提供的信息并非總是有用……

  1. $ howdoi exit vim 

inspect

Python 的 inspect 模塊非常有助于理解問題背后的詳情。你甚至可以在 inspect 模塊上調(diào)用其方法!

inspect 模塊:https://docs.python.org/3/library/inspect.html

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

***一行代碼打印出自己的行號。

  1. import inspect 
  2. print(inspect.getsource(inspect.getsource)) 
  3. print(inspect.getmodule(inspect.getmodule)) 
  4. print(inspect.currentframe().f_lineno) 

當然,除了這些瑣碎的用途之外,inspect 模塊還能幫助你理解代碼正在做的事。你還可以用它編寫自文檔化代碼。

Jedi

Jedi 庫是一個自動完成和代碼分析的庫。它使代碼編寫變得更快、效果更高。

除非你正在開發(fā)自己的 IDE,否則你肯定會對使用 Jedi 庫作為編輯插件很感興趣。

Jedi:https://jedi.readthedocs.io/en/latest/docs/usage.html

你可能已經(jīng)在使用 Jedi 了。IPython 項目就使用 Jedi 實現(xiàn)代碼自動完成功能。

**kwargs

學習任何語言時都會遇到很多里程碑。對于 Python 來說,理解神秘的**kwargs 語法可能算是其中之一。

詞典對象前面的雙星號可以讓你把該詞典的內(nèi)容作為命名參數(shù)輸入到函數(shù)中。

詞典的秘鑰是參數(shù)名,值是傳遞給函數(shù)的值。你甚至不需要稱它為 kwargs!

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

當你想編寫能夠處理事先未定義的命名參數(shù)的函數(shù)時,這個很有用。

列表推導式(List comprehensions)

我最喜歡 Python 編程的原因之一是它的列表推導式(https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)。

這些表達式使得編寫干凈易讀的代碼變得很容易,那些代碼讀起來幾乎像自然語言一樣。

關于它們的更多使用信息請查看:https://www.learnpython.org/en/List_Comprehensions

  1. numbers = [1,2,3,4,5,6,7] 
  2. evens = [x for x in numbers if x % 2 is 0] 
  3. odds = [y for y in numbers if y not in evens] 
  4. cities = ['London''Dublin''Oslo'
  5. def visit(city): 
  6.  print("Welcome to "+city) 
  7. for city in cities: 
  8.  visit(city) 

map

Python 通過許多內(nèi)置功能支持函數(shù)式編程。map() 函數(shù)是最有用的函數(shù)之一——特別是當它與 lambda 函數(shù)結合使用時。

lambda 函數(shù):https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions

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

在上面的例子中,map() 將一個簡單的 lambda 函數(shù)應用于 x 中的每個元素。它返回一個 map 對象,該對象可以被轉換成可迭代的對象,如列表或元組。

newspaper3k

如果你之前沒有見過它,那么我建議你先查看:https://pypi.org/project/newspaper3k/。

它可以幫助你從大量***國際出版物中檢索到新聞文章和相關元數(shù)據(jù)。你可以檢索圖像、文本和作者名。

它還有一些內(nèi)置的 NLP 功能。

地址:https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.html#performing-nlp-on-an-article

如果你想在下一個項目中使用 BeautifulSoup 或其它 DIY 網(wǎng)頁抓取庫,那么不如使用$ pip install newspaper3k,既省時又省事,何樂而不為呢?

運算符重載(Operator overloading)

Python 支持運算符重載。

它實際上是一個簡單的概念。你有沒有想過為什么 Python 允許用戶使用 + 運算符來將數(shù)字相加,并級聯(lián)字符串?這就是運算符重載在發(fā)揮作用。

你可以使用 Python 的標準運算符號來定義對象,這樣你可以在與這些對象相關的語境中使用它們。

  1. class Thing: 
  2.  def __init__(self, value): 
  3.  self.__value = value 
  4.  def __gt__(self, other): 
  5.  return self.__value > other.__value 
  6.  def __lt__(self, other): 
  7.  return self.__value < other.__value 
  8. something = Thing(100) 
  9. nothing = Thing(0) 
  10. True 
  11. something > nothing 
  12. False 
  13. something < nothing 
  14. # Error 
  15. something + nothing 

pprint

Python 的默認 print 函數(shù)就可以實現(xiàn)打印功能。但如果嘗試打印較大的嵌套對象,就會發(fā)現(xiàn)打印結果很丑。

這時 Python 標準庫的 pretty printer 模塊就可以發(fā)揮作用了。該模塊可以將復雜的結構化對象以一種易讀的格式打印出來。

pretty printer 模塊:https://docs.python.org/3/library/pprint.html

Python 開發(fā)者的必備技能之一就是處理復雜的數(shù)據(jù)結構。

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

Queue

Python 支持多線程,而這是由 Python 標準庫的 Queue 模塊支持的。

該模塊允許用戶實現(xiàn)隊列(queue)數(shù)據(jù)結構。隊列數(shù)據(jù)結構允許用戶根據(jù)特定的規(guī)則添加和檢索條目。

『First in, first out』 (FIFO) 隊列允許用戶按照對象被添加的順序來檢索對象。『Last in, first out』 (LIFO) 隊列允許用戶首先訪問***添加的對象。

***,優(yōu)先級隊列(priority queue)允許用戶根據(jù)對象對應的優(yōu)先級類別來檢索對象。

如何使用 queue 在 Python 中實現(xiàn)多線程編程,示例詳見:https://www.tutorialspoint.com/python3/python_multithreading.htm。

__repr__

在 Python 中定義一個類別或對象時,以「官方」方式將對象表示為字符串很有用。例如:

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

這使代碼 debug 變得簡單很多。將字符串添加到類別定義,如下所示:

  1. class someClass: 
  2.  def __repr__(self): 
  3.  return "<some description here>" 
  4. someInstance = someClass() 
  5. # prints <some description here> 
  6. print(someInstance) 

sh

Python 是一種偉大的腳本語言,不過有時使用標準 os 和 subprocess 庫會有點棘手。

sh 庫提供了一種不錯的替代方案。

sh 庫:http://amoffat.github.io/sh/

該庫允許用戶像使用普通函數(shù)一樣調(diào)用任意程序,這對自動化工作流和任務非常有用。

  1. from sh import * 
  2. sh.pwd() 
  3. sh.mkdir('new_folder'
  4. sh.touch('new_file.txt'
  5. sh.whoami() 
  6. sh.echo('This is great!'

類型提示(Type hints)

Python 是動態(tài)語言。在定義變量、函數(shù)、類別等時無需指定數(shù)據(jù)類型。

這有利于縮短開發(fā)周期。但是,簡單的類型錯誤(typing issue)導致的運行時錯誤真的太煩了。

從 Python 3.5 版本開始,用戶可以選擇在定義函數(shù)時開啟類型提示。

  1. def addTwo(x : Int) -> Int
  2.  return x + 2 

你還可以定義類型別名:

  1. from typing import List 
  2. Vector = List[float
  3. Matrix = List[Vector] 
  4. def addMatrix(a : Matrix, b : Matrix) -> Matrix: 
  5.  result = [] 
  6.  for i,row in enumerate(a): 
  7.  result_row =[] 
  8.  for j, col in enumerate(row): 
  9.  result_row += [a[i][j] + b[i][j]] 
  10.  result += [result_row] 
  11.  return result 
  12. x = [[1.0, 0.0], [0.0, 1.0]] 
  13. y = [[2.0, 1.0], [0.0, -2.0]] 
  14. z = addMatrix(x, y) 

盡管非強制,但類型注釋可以使代碼更易理解。

它們還允許你在運行之前使用類型檢查工具捕捉 TypeError。在進行大型復雜項目時執(zhí)行此類操作是值得的。

uuid

生成通用唯一標識符(Universally Unique ID,UUID)的一種快速簡單方法就是使用 Python 標準庫的 uuid 模塊。

uuid 模塊:https://docs.python.org/3/library/uuid.html

  1. import uuid 
  2. user_id = uuid.uuid4() 
  3. print(user_id) 

這創(chuàng)建了一個隨機化后的 128 比特數(shù)字,該數(shù)字幾乎必然是唯一的。

事實上,可以生成 2¹²²可能的 UUID。這個數(shù)字超過了 5,000,000,000,000,000,000,000,000,000,000,000,000。

在給定集合中找出重復數(shù)字的可能性極低。即使有一萬億 UUID,重復數(shù)字存在的概率也遠遠低于十億分之一。

虛擬環(huán)境(Virtual environment)

這可能是 Python 中我最喜歡的事物了。

你可能同時處理多個 Python 項目。不幸的是,有時候兩個項目依賴于相同依賴項的不同版本。那你要安裝哪個版本呢?

幸運的是,Python 支持虛擬環(huán)境,這使得用戶能夠充分利用兩種環(huán)境。見下列行:

  1. python -m venv my-project 
  2. source my-project/bin/activate 
  3. pip install all-the-modules  

現(xiàn)在你在一臺機器上具備獨立的多個 Python 版本了。問題解決!

wikipedia

Wikipedia 擁有一個很棒的 API,允許用戶以編程方式訪問巨大體量的免費知識和信息。

wikipedia 模塊使得訪問該 API 非常便捷。

Wikipedia 模塊:https://wikipedia.readthedocs.io/en/latest/quickstart.html

  1. import wikipedia 
  2. result = wikipedia.page('freeCodeCamp'
  3. print(result.summary) 
  4. for link in result.links: 
  5.  print(link) 

和真實的維基百科網(wǎng)站類似,該模塊支持多種語言、頁面消歧、隨機頁面檢索,甚至還具備 donate() 方法。

xkcd

humour 是 Python 語言的一個關鍵特征,其名稱來自英國喜劇片《蒙提·派森的飛行馬戲團》(Monty Python and the Flying Circus)。Python 的很多官方文檔引用了該喜劇片***的劇情。

幽默感并不限于文檔。試著運行下列行:

  1. import antigravity 

將打開 xkcd 畫的 Python 漫畫。不要改變這一點,Python。不要改變。

YAML

YAML 代表 『YAML Ain』t Markup Language』。它是一種數(shù)據(jù)格式語言,是 JSON 的超集。

與 JSON 不同,它可以存儲更復雜的對象并引用自己的元素。你還可以編寫注釋,使其尤其適用于編寫配置文件。

PyYAML 模塊(https://pyyaml.org/wiki/PyYAMLDocumentation)可以讓你在 Python 中使用 YAML。安裝:

  1. $ pip install pyyaml 

然后導入到項目中:

  1. import yaml 

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

zip

給你支***一招,非常酷。還在用兩個列表來組成一部詞典嗎?

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

zip() 內(nèi)置函數(shù)使用多個可迭代對象作為輸入并返回元組列表。每個元組按位置索引對輸入對象的元素進行分組。

你也可以通過調(diào)用*zip() 來「解壓」對象。

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2018-09-02 15:43:56

Python代碼編程語言

2020-12-14 07:51:16

JS 技巧虛值

2022-05-05 12:02:45

SCSS函數(shù)開發(fā)

2016-07-22 17:55:07

云計算

2022-07-17 06:53:24

微服務架構

2014-12-01 09:41:25

2022-09-19 18:32:22

函數(shù)編程語言

2017-10-16 13:30:28

windows 10技巧輸入法

2021-10-22 09:41:26

橋接模式設計

2021-03-18 14:02:56

iOS蘋果細節(jié)

2019-12-24 09:49:02

微軟英語瀏覽器

2021-02-03 08:24:32

JavaScript技巧經(jīng)驗

2018-09-11 16:41:05

Python數(shù)據(jù)結構語言編程

2020-10-28 08:06:09

Vue3框架數(shù)據(jù)

2015-07-13 08:49:54

2024-03-07 07:58:26

Web開發(fā)響應媒體查詢工具

2021-05-12 10:48:02

蘋果技巧功能

2021-10-19 14:49:49

CSS前端

2025-02-27 08:33:13

2022-01-24 16:42:48

bpftraceLinux工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区二区免费视频 | 中文字幕不卡一区 | 精品欧美一区二区三区久久久 | 欧美1级 | 色网站入口 | 亚洲精品电影在线观看 | 国产黄色大片在线观看 | 99草免费视频 | 精品亚洲永久免费精品 | 日韩二三区 | 激情欧美一区二区三区 | 亚洲成人午夜在线 | 日韩一区二区三区在线观看 | 国产在线观看 | 欧美一级免费 | 精品美女久久久久久免费 | 亚州中文 | 日韩视频在线播放 | 91亚洲精品在线观看 | 人人草天天草 | 视频三区| 日日干夜夜操天天操 | 国产精品欧美一区二区 | 久久精品国产精品青草 | 毛片一级黄色 | 亚洲精选一区二区 | 又黑又粗又长的欧美一区 | 亚洲精品福利在线 | 午夜二区| 一区二区在线不卡 | 99精品国产一区二区青青牛奶 | 日韩激情免费 | 欧美一区免费在线观看 | 亚洲a视频| 亚洲精品乱码久久久久久久久 | 成人欧美一区二区三区在线播放 | 国产日产精品一区二区三区四区 | 成人网在线观看 | 国产伦一区二区三区视频 | 欧美综合久久 | 精品欧美乱码久久久久久 |