小李飛刀:python的2018年倒數二殺!

隨便叨叨

真的是很話嘮的在下了。
昨天沒有很完整的學習,就沒有發佈筆記了。
昨天主要是匆匆忙忙的回家了,買了好吃的法棍回家,好吃的法棍簡直是戰鬥力的最佳保證!
而後和家裏人聊聊天,其實平時對着電腦多了,對着電腦聊天老是不如面對面來的有感受。
PS:可是仍是很討厭接到工做上的徹底沒邏輯的電話的。
2018的最後兩天。
我很想念小胡哥哥,大概這個地方他都看不到的吧,畢竟學術上咱們倆的交叉是極少的。
但願2019年會變成更好的本身,也能擁有更多掌握本身生活的能力。python

開始認真學習的分割

簡單打點雞血吧!
大學時候很喜歡的一段話。
每個優秀的人,都有一段沉默的時光。那一段時光,是付出了不少努力,忍受孤獨和寂寞,不抱怨,不訴苦,往後提及時,連本身都能被感動的日子。編程

偏函數Partial function

不一樣於高數裏的偏函數。
這個屬於Python的functools裏提供的一個頗有用的功能。
主要用於,設定函數的默認值,但並不改變原有的函數。
好比對int()函數設定額外的參數base=8改成八進制來進行整數轉化。windows

#正常狀況下
int('12345',base = 8)
#或者咱們考慮本身定義個函數int2
def int2(x,base=8):
    return int(x,base)

functools.partial就不須要本身另外定義函數。app

import functools
int2 = functools.partial(int,base=2)

此時int2()就是建立出來的一個全新的函數。函數

簡單總結functools.partial的做用就是,把一個函數的某些參數給固定住(也就是設置默認值),返回一個新的函數,調用這個新函數會更簡單。

然鵝這個偏函數,還能夠在另外加入參數。工具

當函數的參數個數太多,須要簡化時,使用functools.partial能夠建立一個新的函數,這個新函數能夠固定住原函數的部分參數,從而在調用時更簡單。

在使用中應該要多考慮下使用場景,又是反覆使用偏函數可能會產生反效果(我的感受,還須要實踐測試)。學習

模塊

模塊要儘量的不和內置函數產生衝突。
爲了避免和別人的模塊衝突,因此有了包。包名不衝突,那全部的模塊就不會衝突了。
每個包目錄下面都會有一個__init__.py的文件,這個文件是必須存在的,不然,Python就把這個目錄當成普通目錄,而不是一個包。
由於有了包,有了模塊,因此能夠產生多級的文件樹。測試

使用模塊

clipboard.png

sys模塊下有一個argv參數,用list存儲命令行的全部參數。
因此argv一定有至少一個參數,就是文件名。spa

if __name__=='__main__':
    test()

當命令行運行hello模塊文件時候,Python解釋器把特殊變量__name__置爲__main__,而若是在其餘地方導入該hello模塊時候,if判斷將失效。命令行

clipboard.png

好比當進入交互模式時候,導入hello模塊,不會直接執行test()函數,須要調用。

clipboard.png

做用域

在Python裏,咱們經過_前綴來實現私有變量。
分爲正常的朋友、特殊的朋友、和暗搓搓的朋友。
正常的朋友就是正常能夠直接引用的。
特殊的朋友,好比__xx__這個樣子的,雖然能夠被直接引用,可是有特殊用途。好比能夠暴露我身份的__author__就是特殊變量啦。
而後_xx這個樣子的朋友,就是暗搓搓的朋友們啦,非公開的,不該該直接被引用。

def _private_1(name):
    return 'Hello, %s' % name

def _private_2(name):
    return 'Hi, %s' % name

def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)

在模塊內公開greeting()函數,可是內部邏輯用私有函數隱藏,這樣調用的時候就不考慮內部邏輯。
很是有用的代碼封裝和抽象的方法
外部須要引用的函數才定義爲public,不須要引用的所有定義成private

安裝第三方模塊

在Python中,安裝第三方模塊,是經過包管理工具pip完成的。

然鵝這一步,在Mac或者Linux下是不須要安裝pip的。(悲傷的windows鵝,幸虧安裝Python的時候妥妥安裝了

第三方庫通常都有官方註冊

安裝經常使用模塊

Anaconda,一個基於Python的數據處理和科學計算平臺,已經內置不少有用的第三方庫。

Anaconda會把系統Path中的python指向本身自帶的Python,而且,Anaconda安裝的第三方模塊會安裝在Anaconda本身的路徑下,不影響系統已安裝的Python目錄。

能夠嘗試直接import numpy等已安裝的第三方模塊

模塊搜索路徑

添加本身的搜索目錄,有倆辦法

  • 修改sys.path,添加要搜索的目錄
import sys
sys.path.append('/user/gaga/my_py_scriptss')

-設置環境變量PYTHONPATH,不影響Python自身的搜索路徑。

面向對象編程

emmm,真是個使人悲傷的標題。
Object Oriented Programming--->因此OOP纔是一種程序設計思想嗎?....只是思想....

OOP把對象做爲程序的基本單元,一個對象包含了數據和操做數據的函數。

忽然以爲OOP是一個很浪漫的思想。(題外話)

面向對象的設計思想是抽象出Class,根據Class建立Instance。
面向對象的抽象程度又比函數要高,由於一個Class既包含數據,又包含操做數據的方法。

類和實例

類的定義是使用class關鍵字。

-----困了的分界線,明日繼續分解下一回合...(好像明日2019年??? 今晚小酌一杯再來繼續!

相關文章
相關標籤/搜索