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

你想要的 Python 編程技巧,我都給你整理好了

新聞 后端
Python 是我作為數(shù)據(jù)科學(xué)家日常生活中不可或缺的一部分。在學(xué)習(xí) Python 的過程中,我領(lǐng)悟到了很多的方法和技巧。

 Python 是這個世界上***的按需編程語言之一。其中包含很多原因:

  • 易學(xué)習(xí) 

  • 應(yīng)用范圍廣 

  • 具備非常多的模型和庫

Python 是我作為數(shù)據(jù)科學(xué)家日常生活中不可或缺的一部分。在學(xué)習(xí) Python 的過程中,我領(lǐng)悟到了很多的方法和技巧。

在這里,我嘗試用 A-Z 的格式來做一些分享。

大部分的技巧是我在日常工作中使用的或是偶然發(fā)現(xiàn)的。 其中一些是在瀏覽 Python Standard Library docs 找到的。其他的一些是我在 PyPi 中搜索找到的。

但事實上,還是應(yīng)該歸功于 awesome-python.com ,因為我在上面找到了四個或五個實用的技巧。這是數(shù)百個有趣的 Python 工具和模塊。非常值得瀏覽以獲取靈感。

all or any 

Python 受歡迎的眾多原因之一是它的可讀性和易表達(dá)性。

人們經(jīng)常笑稱 Python 是可執(zhí)行的偽代碼。但當(dāng)你寫出下述代碼,很難去反駁這種言論。

  1. x = [TrueTrueFalseif 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"

bashplotlib

想在控制臺中繪圖嗎?

  1. $ pip install bashplotlib 

使用上述命令行,即可在控制臺中繪圖。

集合

Python 內(nèi)置默認(rèn)的數(shù)據(jù)類型,但有時它們的使用效果會不盡如人意。

幸運的是,Python 的標(biāo)準(zhǔn)庫提供了 collections 模塊,這個方便的附加庫提供了更多的數(shù)據(jù)類型。

  1. from collections import OrderedDict, Counter x = OrderedDict(a=1, b=2, c=3) y = Counter("Hello World!"

dir

你是否曾經(jīng)有過深入 Python 對象內(nèi)部并且觀察它具備哪些屬性的想法呢?

輸入下述命令行:

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

以交互式運行 Python 時,這是一個非常實用的特征,并且可以動態(tài)地搜索正在使用的對象和模塊。

emoji

Python 包含 emoji 模塊,在這里!

  1. $ pip install emoji 

別以為我不知道你會偷偷下載...

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

from _future_import

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

不過別擔(dān)心。_future_module 允許用戶通過函數(shù)導(dǎo)入新版本 Python 的功能。這就像是時間旅行,或是奇異魔法之類......

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

為什么不導(dǎo)入花括號呢?

geopy 

地理知識對于程序猿來說是非常大的挑戰(zhàn)是,但是 geopy 模塊讓它變得更簡單。

  1. $ pip install geopy 

它通過提取不同的地理編碼服務(wù) API 進(jìn)行工作,以此能獲取一個地方的完整街道地址,經(jīng)度,緯度,甚至是海拔高度。

geopy 還提供一個非常有用的距離類。它支持用戶喜歡的度量方式來計算兩個地點之間的距離。

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

howdoi 

受困于編程問題并且不記得之前看到過的解決方法?用戶需要使用 StackOverflow ,但是不想離開終端?

那么需要使用這個非常使用的命令行工具 howdoi 

  1. $ pip install howdoi 

無論你有什么問題,它都會幫你解答。

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

但是請注意,它會從 StackOverflow 的***票答案中抓取代碼,這意味著它的回答并不總是最有用的。

  1. $ howdoi exit vim 

inspect 

Python 的 inspects 模塊對于理解背后的原理是非常有幫助的。用戶甚至可以在 inspect 模塊上調(diào)用其方法!

下述代碼示例使用

inspect.getsource()   

來打印它的源代碼。同時它也使用

inspect.getmodule()   

來打印定義它的模塊。

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

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

當(dāng)然,除了這些瑣碎的用途之外 , inspect 模塊還支持理解用戶代碼正在做什么。用戶還可以利用 Inspect 模塊編寫自文檔化代碼。

Jedi

Jedi 是一個自動完成以及代碼分析庫。它使得編寫代碼更加快速以及更高產(chǎn)。

除非用戶正在自主開發(fā) IDE,否則肯定會對使用 Jedi 作為編輯器插件非常感興趣。幸運的是,已經(jīng)開放下載。

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

**kwargs

在學(xué)習(xí)任何編程語言時,一路上會遇到很多里程碑。在學(xué)習(xí) Python 時,理解神秘的 **kwargs 是其中一塊里程碑。

字典前面的雙星號支持把字典的內(nèi)容作為命名參數(shù)傳遞給函數(shù)。

字典的秘鑰是參數(shù)名,值是傳遞給函數(shù)的值,用戶甚至都不需要稱它為 kwargs

  1. dictionary = {"a"1"b"2def someFunction(a, b):     print(a + b)     return someFunction(**dictionary) someFunction(a=1, b=2

當(dāng)用戶編寫處理事先未定義的命名參數(shù)的函數(shù)時,這個很有用。

列表解析

在python編程中其中一個我喜歡的東西是它的列表解析 
這些表達(dá)式可以很容易的寫出非常簡潔的代碼,使其讀起來就像自然語言一樣 
你可以了解更多關(guān)于如何使用它

  1. 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()

特別是結(jié)合lambda函數(shù)使用時。

  1. x = [123] y = map(lambda x : x + 1 , x) print(list(y)) 

在上面的例子中 map() 對X中的每個元素應(yīng)用了簡單的lambda函數(shù)

它返回一個map object類型,可以被轉(zhuǎn)換成一些可迭代對象,例如列表或元組

newspaper3k

如果你之前沒有見過newspaper3k的話,那么請準(zhǔn)備好被這個Python的newspaper模塊所震撼吧

newspaper模塊允許你從一系列國際領(lǐng)先的出版物中檢索新聞文章和相關(guān)的元數(shù)據(jù)。你可以檢索圖像,文本和作者姓名。

newspaper模塊甚至有一些內(nèi)置的NLP功能。

因此,如果你想在下一個項目中使用BeautifulSoup或其他DIY網(wǎng)頁查詢庫,節(jié)省自己的時間和精力,并改為

  1. $ pip install newspaper3k 

Operator overloading

Python 支持操作符重載,這術(shù)語讓你聽上去像是計算機科學(xué)家。

事實上這是個非常普通的概念。是否曾經(jīng)想過為什么 Python 支持使用 + 運算符來對數(shù)值進(jìn)行相加以及連接字符串?這就是實際的操作符重載。

用戶可以按照自己特定的方式來定義使用 Python 標(biāo)準(zhǔn)運算符符號對象,這使得用戶可以在對象相關(guān)的上下文中使用它們。

  1. 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) something > nothing something < nothing something + nothing 

pprint

Python 的默認(rèn)函數(shù) print 可以實現(xiàn)打印功能,但是如果打印的嵌套對象體量比較大,就會發(fā)現(xiàn)打印結(jié)果不太美觀。

這時就需要用到標(biāo)準(zhǔn)庫pretty-print 模塊。它能用可讀性強的方式打印出復(fù)雜結(jié)構(gòu)的對象。

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

  1. 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 模塊來實現(xiàn)。Queue 模塊讓用戶可以實現(xiàn)隊列數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)允許用戶通過特定的方法添加和檢索數(shù)據(jù)。

“First in ,first out ”(或 FIFO) 隊列數(shù)據(jù)結(jié)構(gòu)允許用戶依據(jù)對象添加的順序檢索對象,“Last in,first out”(LIFO)數(shù)據(jù)結(jié)構(gòu)允許用戶先連接到最近添加的對象。

***,優(yōu)先隊列允許用戶依據(jù)存儲順序檢索對象。

這是 Python 中針對多線程編程使用queues 的一個實例。

_rep r_

在 Python中定義類或?qū)ο髸r,提供一種字符串表示對象的“官方”方法很實用。舉個例子:

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

這讓代碼調(diào)試變得更加簡單。如下圖所示添加類的定義:

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

Sh

Python 是一種很棒的腳本語言。有時使用標(biāo)準(zhǔn)操作系統(tǒng)以及子進(jìn)程庫是很令人頭疼的一個問題。

Sh 庫提供了一種簡介的替代方案。

它允許用戶在調(diào)用程序時如同調(diào)用函數(shù)一般,這對自動化工作流和任務(wù)非常有用。所有的都來自 Python 內(nèi)部。

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

類型提示

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

這個設(shè)定允許快速開發(fā),但是由于簡單的類型錯誤比運行錯誤更煩人。

從Python3.5開始,定義函數(shù)時用戶可以選擇開啟類型提示。

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

用戶也可以定義類型別名:

  1. 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.00.0], [0.01.0]] y = [[2.01.0], [0.0, -2.0]] z = addMatrix(x, y) 

盡管類型注釋是非強制性的,但是這能讓代碼更具可讀性。

Python3.5+ 還允許用戶使用類型提示工具在運行前知曉類型錯誤,這在大型的復(fù)雜項目中是非常值得的。

uuid

生成通用唯一標(biāo)識符的快速簡便方法是Python 標(biāo)準(zhǔn)庫中的 uuid 模塊。

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

它隨機生成 128位唯一數(shù)字。

事實上一共有 個可能生成的UUID。 這個數(shù)值超過了

5,000,000,000,000,000,000,000,000,000,000,000,000,000。

在給定集合中找到重復(fù)數(shù)字的概率非常低。 即使有一萬億個UUID,重復(fù)存在的可能性也遠(yuǎn)遠(yuǎn)低于十億分之一。

僅用兩行代碼即可生成通用唯一標(biāo)志符,非常棒!

虛擬環(huán)境

這是我最喜歡的 Python 部分。

用戶可能需要同時處理多個 Python 項目。不幸的是,有時候兩個項目依賴于相同依賴項的不同版本。那么用戶應(yīng)該下載哪個版本的依賴庫呢?

幸運的是,Python 支持虛擬環(huán)境,讓用戶能夠同時利用兩種環(huán)境。命令行如下:

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

現(xiàn)在一臺機器上可以支持兩個版本的 Python 了。問題解決!

Wikipedia

Wikipedia 具備非常棒的 API ,允許用戶以編程方式訪問龐大的知識和信息。

Wikipedia 模塊使得訪問 Wikipedia API 非常地方便。

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

和真實的 Wikipedia 類似,模塊支持多種語言,頁面消歧,隨機頁面檢索,甚至還有donate()方法

Xkcd

Humour 是 Python的關(guān)鍵特征——畢竟它的名字來源于英國喜劇片《Monty Python 的飛行馬戲團》,Python 的很多官方文檔引用了該片的情節(jié)。

Python 的幽默感并不局限于官方文檔 。運行下述命令行:

  1. import antigravity 

希望Python 不要改變它的幽默風(fēng)格

YAML

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

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

PyYAML模塊讓用戶在 Python 中使用 YAML 。安裝命令行如下:

  1. $ pip install pyyaml 

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

  1. import yaml 

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

Zip

***的一個 Python 技巧,它真的很棒。還在用兩個列表來組成字典這樣的方法嗎?

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

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

用戶也可以使用 *zip()  來解壓對象

感謝閱讀

以上就是 A-Z 的 Python 技巧——相信你已經(jīng)找到有用于下一個項目的技巧了。

Python 是一個非常多樣化并且發(fā)展良好的編程語言,所以我對 Python 許多非常棒的特征會有疏漏。

責(zé)任編輯:張燕妮 來源: 雷鋒網(wǎng)
相關(guān)推薦

2020-10-23 09:50:20

鏈表Java代碼

2023-01-05 17:55:39

分布式架構(gòu)

2020-06-19 09:01:48

Python開發(fā)工具

2020-11-24 11:30:51

SpringJava代碼

2021-11-02 08:14:36

個人信息保護(hù)法信息安全個人信息

2021-11-04 09:08:39

項目JS 解構(gòu)知識

2023-12-08 08:01:29

分布式IM即時通訊系統(tǒng)架構(gòu)設(shè)計

2025-04-23 09:21:10

2022-02-28 19:32:27

I/O磁盤

2015-07-03 10:04:03

2021-05-25 13:45:29

數(shù)據(jù)設(shè)計師vivo

2018-07-27 11:15:14

AI

2015-06-18 11:21:01

戴爾云計算

2021-02-23 15:54:23

編程技能開發(fā)

2018-08-03 10:49:00

2021-10-28 18:58:57

動態(tài)規(guī)劃數(shù)據(jù)結(jié)構(gòu)算法

2025-01-02 09:32:54

AI模型數(shù)據(jù)

2015-11-12 10:25:48

編程語言

2015-11-11 10:01:42

編程語言選擇
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产成人免费网站 | 日日夜精品视频 | 日韩免费av一区二区 | 一区二区三区中文字幕 | 精品香蕉一区二区三区 | 伊人艹 | 97影院在线午夜 | 国产一区二区三区四区五区加勒比 | 国产男女视频 | 三级特黄特色视频 | 国产成人在线播放 | 午夜久久 | 日韩欧美不卡 | 久久久国产一区二区三区 | 久久久久成人精品免费播放动漫 | 国产欧美一区二区三区在线看 | 亚洲风情在线观看 | 黄色毛片在线看 | 欧美精品一区三区 | 久久久久久网站 | 伦理一区二区 | 日韩中文字幕区 | 拍拍无遮挡人做人爱视频免费观看 | 欧美性生活一区二区三区 | 国产69精品久久99不卡免费版 | 亚洲一二视频 | 亚洲国产成人在线视频 | 日韩精品色网 | 国产欧美日韩综合精品一区二区 | 九色在线观看 | 日韩影音 | 国产精品一区二区久久 | 欧美天堂 | 综合久久久久 | 国产色| 成人精品一区二区三区中文字幕 | 自拍偷拍第一页 | 电影在线 | 97久久久久久 | 欧美午夜影院 | 精品成人佐山爱一区二区 |