python筆記一

tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變

“可變的”tuple    
t = (1,[2,3])     
t[1][1]='4'     
print(t);        
# (1, [2, '4'])    

要定義一個只有1個元素的tuple 
因爲括號()既可以表示tuple,又可以表示數學公式中的小括號,這就產生了歧義,因此,Python規定,這種情況下,按小括號進行計算,計算結果自然是1。
t = (1);
print(t) # 1 被當作括號

所以,只有1個元素的tuple定義時必須加一個逗號,,來消除歧義   
t = (1,) #  (1,)
   
% 格式化字符串  
%s表示用字符串替換,%d表示用整數替換,%f表示浮點數, 
%+顯示正負號,%-左對齊,%0 補零,%[-+0寬度.精度]
print('%0+7.2f' %(1.123456)) 7位,小數點後取2位,不夠補0,前面使用了正負號    
# +001.12   


set和dict類似,也是一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key。
print(set([1,2,2,2,2,3,4,5]))
# {1, 2, 3, 4, 5}   

      
定義函數時,需要確定函數名和參數個數;    
如果有必要,可以先對參數的數據類型做檢查;    
函數體內部可以用return隨時返回函數結果;     
函數執行完畢也沒有return語句時,自動return None。     
函數可以同時返回多個值,但其實就是一個tuple。 

def hello(x = 1,y = 2, *o) :  # *x 可變參數    
    '函數說明'
    pass
    return x, y

print(hello(3,4));
 # (3, 4)    


def world (l = []) :    # 默認參數指向對象的問題    
    l.append('hello');    
    return l;      
print(world())     
print(world())    
# ['hello']
# [‘hello', 'hello']   

def world (l = None) :       
    if l is None :   
        l = []     
        l.append('hello')    
    return l    
print(world())         
print(world())       
# ['hello']      
# ['hello']   


關鍵字參數
函數的調用者可以傳入任意不受限制的關鍵字參數。至於到底傳入了哪些,就需要在函數內部通過kw檢查      
def hello(x = 1,y = 2, **o) :  # **o 關鍵字參數           
    '函數說明'      
    if 'name' in o :    
        print (o['name'])     
    return    

hello(3,4, name = 'leyi')  
# leyi

命名關鍵字參數
如果要限制關鍵字參數的名字,就可以用命名關鍵字參數,
和關鍵字參數**kw不同,命名關鍵字參數需要一個特殊分隔符*,*後面的參數被視爲命名關鍵字參數 , 如果函數定義中已經有了一個可變參數,後面跟着的命名關鍵字參數就不再需要一個特殊分隔符*了,如果沒有可變參數,就必須加一個*作爲特殊分隔符    

def hello(x = 1,y = 2, *, name) :  # *name 爲命名關鍵字參數
    '函數說明'    
    print(name)     
    return    

hello(3,4, name = 'leyi')     
# leyi              
        
      
匿名函數  
l = lambda x, y : x *y       
print(l(2,3))    
# 6    

裝飾器   
在代碼運行期間動態增加功能的方式,稱之爲“裝飾器”(Decorator),
本質上,decorator就是一個返回函數的高階函數      

def middleFunction (fn) :        
    def wrapper(*args) :    
        print("插入的功能", fn.__name__)        
        return fn(*args) 
    return wrapper    

@ middleFunction
def hello () :            
    print('hello world')    
        
hello()    
    
  
模塊的標準文件模板     
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

‘module description’

__author__ = ‘leyi’

# code
def  hello () :
	pass 

# 命令行運行該模塊時執行     
if __name__=='__main__':
    hello()


__xxx__這樣的變量是特殊變量 
類似_xxx和__xxx這樣的函數或變量是非公開的(private)(規範)   

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章