1. 程式人生 > >學python90%人的不知道的,python使用小計巧 (有程式碼)

學python90%人的不知道的,python使用小計巧 (有程式碼)

這些小技巧,小編用的非常上手,所以分享出來,希望對你有幫助。
顯示有限的介面到外部

當釋出python第三方package時, 並不希望程式碼中所有的函式或者class可以被外部import,在__init__.py中新增__all__屬性,該list中填寫可以import的類或者函式名,可以起到限制的import的作用,防止外部import其他函式或者類。

小編建了一個學習Q群883444106,裡面有很多的python學習大牛,歡迎小夥伴的加入

with的魔力

with語句需要支援上下文管理協議的物件, 上下文管理協議包含__enter__和__exit__兩個方法。with語句建立執行時上下文需要通過這兩個方法執行進入和退出操作。

其中上下文表達式是跟在with之後的表示式, 該表示大返回一個上下文管理物件。

詳細原理可以檢視這篇文章, 淺談 Python 的 with 語句。

知道具體原理,我們可以自定義支援上下文管理協議的類, 類中實__enter__和__exit__方法。

執行結果如下:

883444106
證明了會先執行__enter__方法,然後呼叫with內的邏輯,最後執行__exit__做退出處理,並且, 即使出現異常也能正常退出。
filter的用法

相對filter而言, map和reduce使用的會更頻繁一些, filter正如其名字, 按照某種規則過濾掉一些元素。

QQ群
一行作判斷

當條件滿足時, 返回的為等號後面的變數, 否則返回else後語句。

裝飾器之單例

使用裝飾器實現簡單的單例模式。

staticmethod裝飾器

類中兩種常用的裝飾,首先區分一下他們。

普通成員函式, 其中第一個隱式引數為物件;
classmethod裝飾器,類方法(給人感覺非常類似於OC中的類方法), 其中第一個隱式引數為類;
staticmethod裝飾器,沒有任何隱式引數。python中的靜態方法類似與C++中的靜態方法。

定義私有類屬性
將property與裝飾器結合實現屬性私有化(更簡單安全的實現get和set方法)。

fget是獲取屬性的值的函式,fset是設定屬性值的函式,fdel是刪除屬性的函式,doc是一個字串(like a comment)。從實現來看,這些引數都是可選的。

property有三個方法getter(),setter()和delete()來指定fget,fset和fdel。 這表示以下這行:

iter魔法

通過yield和__iter__的結合, 我們可以把一個物件變成可迭代的。
通過__str__的重寫,可以直接通過想要的形式列印物件。

partial使用上很像C++中仿函式(函式物件)。

在stackoverflow給出了類似與partial的執行方式。

利用用閉包的特性繫結預先繫結一些函式引數,返回一個可呼叫的變數, 直到真正的呼叫執行。

神祕eval

eval我理解為一種內嵌的python直譯器(這種解釋可能會有偏差), 會解釋字串為對應的程式碼並執行, 並且將執行結果返回。

看一下下面這個例子:

exec

exec在Python中會忽略返回值, 總是返回None,eval會返回執行程式碼或語句的返回值。
exec和eval在執行程式碼時,除了返回值其他行為都相同。
在傳入字串時,會使用compile(source, '

getattr

通過string型別的name,返回物件的name屬性(方法)對應的值,如果屬性不存在,則返回預設值,相當於object.name。

命令列處理

讀寫csv檔案

883444106
小編建了一個學習Q群883444106,裡面有很多的python學習大牛,歡迎小夥伴的加入

各種時間形式轉換
只發一張網上的圖, 然後差文件就好了, 這個是記不住的。

字串格式化

一個非常好用,很多人又不知道的功能。