python 學習筆記 函數和類

來源:互聯網
上載者:User

標籤:

與java類似 python的函數也是出於可以複用才使用的 如果一段代碼沒有複用的價值就可以不用函數

一般的函數可以定義成這樣:

def func(a,b=123,*arg,**args):    for x in arg:#arg是一個list        print x    for x,y in args.items():#args是一個dict        print x,y    print ‘a:‘,a    print ‘b:‘,bfunc(1,1,2,3,4,c=1,d=2) 結果:234c 1d 2a: 1b: 1   

其中a是位置(必選)參數,b是選擇性參數

arg是接受不限個的參數,arg在接受後會成為一個list

args則是接受a=1,b=2...這種參數,接收之後args會成為一個dict

下面是一些函數相關練習題(包含一些檔案操作),

‘‘‘定義一個函數xulie(dirname,info) 參數:dirname:路徑名,info:需要序列化的資料,功能:將info資料序列化儲存到dirname路徑下隨機的檔案裡。 ‘‘‘#調用系統函數os.listdir擷取相應路徑的所有檔案名稱,將這些檔案名稱儲存在一個list中#然後使用random隨機擷取該list中的一個檔案名稱,更改該檔案import randomdef xulie(dirname,info):    list_dir_name=[]    for x in os.listdir(dirname):        list_dir_name.append(x)    temp_name=list_dir_name[random.randint(0, len(list_dir_name)-1)]    f=open(dirname+temp_name,‘ab‘)    f.write(info)    f.close()    xulie(‘d:\\test\\‘, ‘this is a test‘)
def func_3(name=None,**kargs):    result=[]    if len(kargs)>0:        for x,y in kargs.items():            result.append((x+‘:‘+y))    result.insert(0, name)    return resultprint func_3(name=‘lilei‘,age=‘20‘,city=‘hk‘)
結果 [‘lilei‘, ‘city:hk‘, ‘age:20‘]

類:類與java類似 自身也存在有建構函式(__init__,類執行個體化時候調用),解構函式(__exit__,退出上下文時候調用,一般與__enter__方法合用),有一個   __del__的魔術方法,在調用del刪掉類的執行個體時調用。此外還有靜態方法 是直接通過類調用,而不是類的執行個體調用。

 
class text_sort(object):    def __init__(self):        print ‘this is init‘    def __enter__(self):        print ‘this is enter‘    def __exit__(self,type,value,traceback):        # pass        if type!= None:            pass        else :            pass        print ‘this is exit‘    def __del__(self):        print ‘this is del‘    @staticmethod    def staticMethod():        print ‘this is staticMethod‘text_sort.staticMethod()test1=text_sort()with test1 as d:    del d結果:this is staticMethodthis is initthis is enterthis is exitthis is del

 

類的練習題,包含類中值得傳遞等:

‘‘‘Listinfo 包括的方法: 1 列表元素添加: add_key(keyname)  [keyname:字串或者整數類型]2 列表元素取值:get_key(num) [num:整數類型]3 列表合并:update_list(list)      [list:清單類型]4 刪除並且返回最後一個元素:del_key() ‘‘‘class listinfo(object):    def __init__(self,*lists):        #不使用魔術參數  self.args=args處理        #使用用魔術參數 如何處理(直接寫參數 不加括弧)        self.args=[]        for x in lists:            self.args.append(x)    def add_key(self,keyname):        if isinstance(keyname, str) or isinstance(keyname, int):            self.args.append(keyname)            return True        else:            return False    def get_key(self,num):        result =[]        if isinstance(num, int):            for x in self.args:                if len(result) <= num-1 :                    result.append(x)                else:                    pass        return result    def update_list(self,list_in):        if isinstance(list_in, list):            self.args.extend(list_in)            return self.args        else:            return ‘not list type‘        self.args    def del_key(self):        return self.args.pop()    def get_all(self):        return self.argslisttest=listinfo(4,222,111,33,4545,‘sss‘,‘332‘)listtest.add_key(9999)print listtest.get_key(3)print listtest.update_list([1])print listtest.del_key()結果[4, 222, 111][4, 222, 111, 33, 4545, ‘sss‘, ‘332‘, 9999, 1]1 

python的進階函數map,reduce和filter:它們都是對一個literable的對象進行處理。lambda類似於匿名函數,在一些地方可以和列表產生式互換。

foo=[12,24,36,48,11,33,55,77]map(lambda x:x*2+5,foo)#將第一個函數分別作用於後面的literable對象,並返回一個list結果:[29, 53, 77, 101, 27, 71, 115, 159]filter(lambda x:x%2==0,foo)#將第一個函數分別作用於後面的literable對象,符合結果的返回list結果:[12, 24, 36, 48]reduce(lambda x,y:x+y,foo)#將literable中的元素兩兩運算,且每一次運算之後的結果作為下次運算的第一個參數結果:296
[x for x in foo if x %2 == 0]#結果與filter一樣

 

python 學習筆記 函數和類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.