python學習筆記

Python學習筆記

 

因爲是搞nlp的,而python作爲腳本語言對處理語料等方面有着先天的優勢,所以近期好好學習了下它,下面是一些我的筆記,比較粗略,主要爲了以後好複習。

Sys.path環境變量

數字,字符串,列表,字典,元組,文件

自動跟蹤類型,不聲明代碼

Lambda args: expression 生成匿名函數

拷貝對象

字符串格式化 'a%s parrot'%type

列表解析 [.. for .. in .. if ..]

內部暫時存儲並重複使用短字符串

try/except/finally

raise 觸發異常

不要用;(),一行有多個語句則;

.. .. = .. .. 

使用列表作爲堆棧的數據結構:

L = [1,2,3,4]

While L:

front, L = L[0], L[1:]

Print(front,L)

重定向利用print中的file默認指向sys.stdout

文件迭代:for line in open(..).readlines():

List(..), tuple(..), dict(..)

zip().....make an iterator that aggregates elements from each of the iterator

dir(..)抓取對象內所有可用屬性列表

不要期待進行在原處的修改的函數會返回結果

函數僅僅是對象,可以賦值給不同的變量名,並通過新的變量名進行調用

一個函數所有變量名都是與函數的命名空間相關聯內部變量名都是本地化的除非聲明爲全局變量(global)

變量名解析:LEGB原則

本地作用域(L)之後是上一層結構中deflambda本地作用域(E),之後是全局作用域(G),最後是內置作用域(B)並且在第一處能夠找到這個變量名的地方停下來

不可變參數是“通過值”進行傳遞,可變對象時通過“指針”進行傳遞

lambda用來編寫跳轉表(jump table)也就是行爲的列表或字典

L = [(lambda x: x**2),(lambda x: x**3),(lambda x: x**4)]

for f in L:

Print(f(2))

print(L[0](3))

lambda中表達式:(lambda x,y: x if x<y else y)

filter: x = filter((lambda x: x>0),range(-5,5))

for y in iter(x):

Print(y)

對返回迭代器的使用:for x in iter:

Print(x)

交互模式下命令空間是名爲__main__的命名空間

模塊搜索路徑:程序主目錄,pythonpath目錄,標準鏈接庫目錄,任何.pth文件內容,上述四個組件合起來就成爲sys.path

from 複製而來的變量名和其來源文件之間並沒有聯繫,爲實際修改另一個文件全局變量名,必須使用import

包導入:import dir1.dir2.mod

        from dir1.dir2.mod import x

包導入語句的路徑內每個目錄內都必須有__init__.py這個文件

__name__當以頂層腳本執行這個文件時爲__main__在導入模塊時常以此來判斷是否導入

運算符重載:class Number:

def __init__(self,start):

self.data = start

                  def __sub__(self,other):

return Number(self.data - other)

__getitem__攔截索引運算:

class indexer:

def __getitem__(self,index):

return index**2 

測試:x =  index()

      x[2] #.......4

如果__str__不存在,會轉向__repr__(反過來不會),相當於javatoString()方法

__init__用於初始化,__call__應用函數調用表達式運行

如下:class Prod:

def  __init__(self,value):

self.value = value

           def __call__(self,othe):

Return self.value*other

>>> x = Prod(2)

>>> x(3)    #........調用__call__

6

__del__析構器,__class__ is the instance's class

__getattr__(), __setattr__(),__delattr__()

方法是對象:1, 無綁定類方法對象:無self

            2, 綁定實例方法對象:self+函數對

先獲取綁定而不用實際進行調用:

class Spam:

def  doit(self,message):

print(message)

可以獲取綁定方法而不用實際進行調用

Object1 = Spam()

x = object1.doit  #獲取綁定

x('hello world') #調用

異常基礎:try/except, try/finally , raise手動觸發異常,assert有條件在代碼中觸發異常   

 

 

 

 

發佈了82 篇原創文章 · 獲贊 3 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章