原创 5函數式編程---高階函數sorted()

1.python內置的sorted()函數可以對list進行排序: sorted([1,7,5,-6,3])>>>[-6, 1, 3, 5, 7] sorted()是一個高階函數,可以接收一個key函數,來實行自定義排序。例如按絕對值大小

原创 5函數式編程---匿名函數

1.果不其然,lambda函數就是一種函數的簡寫方式, 如lambda x: x * x即是: >>> def f(x):     return x * x 2.關鍵字lambda表示匿名函數,冒號前面的x表示函數參數。 3.匿名函數

原创 5函數式編程---filter

可見用filter()這個高階函數,關鍵在於正確實現一個“篩選”函數。 注意到filter()函數返回的是一個Iterator,也就是一個惰性序列,所以要強迫filter()完成計算結果,需要用list()函數獲得所有結果並返回l

原创 7面向對象編程--->實例屬性和類屬性

1.在編寫程序的時候,千萬不要把實例屬性和類屬性使用相同的名字,因爲相同名稱的實例屬性將屏蔽掉類屬性,但是當你刪除實例屬性後,再使用相同的名稱,訪問到的將是類屬性。

原创 7面向對象--->獲取對象信息

1.type() 2.isinstance() 3.dir() 可獲得一個對象的所有屬性和方法,類似__xx__(雙下劃線)的屬性和方法都是有特殊用途的。剩下的都是普通屬性或方法。

原创 7面向對象---類和實例

1.面向對象最重要的概念就是類(Class)和實例(Instance),必須牢記類是抽象的模板,而實例是根據類創建出來的一個個具體的“對象”,每個對象都擁有相同的方法,但各自的數據可能不同。 2.在Python中,定義類是通過class

原创 7面向對象---繼承和多態

1.在OOP程序設計中,當我們定義一個class的時候,可以從某個現有的class繼承,新的class稱爲子類(Subclass),而被繼承的class稱爲基類、父類或超類(Base class、Super class)。 2.繼承有什

原创 7面向對象---訪問限制

1.如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線__,在Python中,實例的變量名如果以__開頭,就變成了一個私有變量(private),只有內部可以訪問,外部不能訪問,所以,我們把Student類改一改: class

原创 生成器和迭代器

可以直接作用於for循環的對象稱爲可迭代對象——>>>Iterable. 可以用isinstance()判斷一個對象是否是Iterable對象。 >>> isinstance('',Iterable) True >>> isinstanc

原创 面向對象編程

1.面向對象編程——Object Oriented Programming,簡稱OOP,是一種程序設計思想。OOP把對象作爲程序的基本單元,一個對象包含了數據和操作數據的函數。 2.面向過程的程序設計把計算機程序視爲一系列的命令集合,即

原创 5函數式編程---map和reduce

1.map()函數接收兩個參數,一個是函數,一個是Iterable,map將傳入的函數依次作用到序列的每個元素,並把結果作爲新的Iterator返回。 map()傳入的第一個參數是f,即函數對象本身。由於結果r是一個Iterator,

原创 5函數式編程---返回函數

1.高階函數除了可以接受函數作爲參數外,還可以把函數作爲結果值返回。 2.一個函數可以返回一個計算結果,也可以返回一個函數。 返回一個函數時,牢記該函數並未執行,返回函數中不要引用任何可能會變化的變量。

原创 迭代

python中,list這種數據類型雖然有下標,但很多其他數據類型是沒有下標的,但是,只要是可迭代對象,無論有無下標,都可以迭代,比如dict就可以迭代 >>> d = {'a': 1, 'b': 2, 'c': 3} >>> for

原创 6模塊---概念

1.在計算機程序的開發過程中,隨着程序代碼越寫越多,在一個文件裏代碼就會越來越長,越來越不容易維護。 爲了編寫可維護的代碼,我們把很多函數分組,分別放到不同的文件裏,這樣,每個文件包含的代碼就相對較少,很多編程語言都採用這種組織代碼的方

原创 6模塊---使用模塊

1. Python本身就內置了很多非常有用的模塊,只要安裝完畢,這些模塊就可以立刻使用。 我們以內建的sys模塊爲例,編寫一個hello的模塊: #!/usr/bin/env python3 # -*- coding: utf-8 -*-