小学生学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()
那么,方法跟函数区别在哪呢?
在类中的方法跟函数的写法一样,放在类中就叫方法,不在类中就叫函数。即类中的函数叫方法,函数的一切适用于方法。
以上如果不足之处,敬请指正。