小學生學python(六)類與函數
每個程序都有一個入口函數,一般都是延續C語言的風格從mian函數開始,至於在調用main函數之前發生的事情,我們不用關心,編譯器幫我們做了。
在python語言中,直接用一條__name__ == ‘__main__‘語句就可以拿到我們編寫程序的起點,如下:
if __name__ == ‘__main__‘: print("test")
但是,如果不按照上面用__name__ == ‘__main__‘,直接寫函數
def line_func(a, b): def func(x): return a*x + b return func
運行發現沒執行到。如果這個文件裏有直接寫語句,比如
def line_func(a, b): def func(x): return a*x + b return func line1 = line_func(2, 5) print(line1(2))
運行時,就會從line1= 這一行開始了。
至於出現上面這種現象的原因,是有庫文件_pydev_execfile.py引起的,在18行有這麽個語句
exec(compile(contents+"\n", file, ‘exec‘), glob, loc)
在一個文件,我們可以隨便寫處理業務的語句,比如求和
a=1 b=2 c=a+b
如果遇到很多地方要用求和,就可以把上面的語句封裝成一個函數,那樣就可以一次實現,多處調用,看上去也會代碼簡潔。定義函數很簡單,使用def,後面跟個函數名稱,xiaomao,xiaogou都行,就像取名字一樣,最好使用能看函數名就知道函數幹啥的名字。比如:
def Add(a, b): return a+b c = Add(1, 2) print(c) c = Add(2, 2) print(c)
那既然函數已經可以把我們的業務封裝起來了,要類來做啥呢?
百度百科的解釋:
類(Class)是面向對象程序設計(OOP,Object-Oriented Programming)實現信息封裝的基礎。類是一種用戶定義類型,也稱類類型。每個類包含數據說明和一組操作數據或傳遞消息的函數。類的實例稱為對象。 類是對現實生活中一類具有共同特征的事物的抽象。編寫類時,你可以定義一大類對象都有的通用行為。 基於類創建對象時,每個對象都自動具備這種通用行為,然後可根據需要賦予每個對象獨特的個性。
比如上面定義了一個加法的函數,然後我們再定義一些減法函數,乘法函數,除法函數,冪函數,階乘函數等。這個時候我們就可以來定義一個類,取名為算法類
class Algorith(): def Add(self, a, b): return a + b def Minus(self, a, b): return a - b #創建Algorith的實例 my_algo = Algorith() print(my_algo.Add(1,2))
my_algo可以調用類中的方法,如Add,Minus。當然也可以實例化多個對象,相互是獨立的。我們可以把一個類 寫在一個.py文件,
在其他文件中只要把這個文件import進來就能調用了。
假如要寫一個關於動物的程序,有貓,有狗。那麽可以定義一個Cat類,一個Dog。但貓是咪咪叫,狗是吠,
Speak(叫)這個方法就有了不同的實現內容,放在不同類中取相同的方法名完全合法合規。但是在一個文件有兩個一樣的函數就會發生沖突,後面寫的會把前面
寫的覆蓋掉,so分別寫在不同類中就沒這種煩惱。
class Cat(): def Speak(self): print("貓叫") def Walk(self): print("貓步走") def Eat(self): print("吃魚") class Dog(): def Speak(self): print("狗吠") def Walk(self): print("蹦跳") def Eat(self): print("吃肉") my_cat = Cat() my_cat.Speak() my_dog = Dog() my_dog.Speak()
那麽,方法跟函數區別在哪呢?
在類中的方法跟函數的寫法一樣,放在類中就叫方法,不在類中就叫函數。即類中的函數叫方法,函數的一切適用於方法。
以上如果不足之處,敬請指正。
小學生學python(六)類與函數