1. 程式人生 > >小學生學python(六)類與函數

小學生學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(六)類與函數