每个程序都有一个入口函数,一般都是延续C语言的风格从mian函数开始,至于在调用main函数之前发生的事情,我们不用关心,编译器帮我们做了。
在python语言中,直接用一条__name__ == '__main__'语句就可以拿到我们编写程序的起点,如下:
if __name__ == '__main__':print("test")
但是,如果不按照上面用__name__ == '__main__',直接写函数
defline_func(a, b):deffunc(x):return a*x +breturn func
运行发现没执行到。如果这个文件里有直接写语句,比如
defline_func(a, b):deffunc(x):return a*x +breturnfunc
line1= line_func(2, 5)print(line1(2))
运行时,就会从line1= 这一行开始了。
至于出现上面这种现象的原因,是有库文件_pydev_execfile.py引起的,在18行有这么个语句
exec(compile(contents+"\n", file, 'exec'), glob, loc)
在一个文件,我们可以随便写处理业务的语句,比如求和
a=1b=2c=a+b
如果遇到很多地方要用求和,就可以把上面的语句封装成一个函数,那样就可以一次实现,多处调用,看上去也会代码简洁。定义函数很简单,使用def,后面跟个函数名称,xiaomao,xiaogou都行,就像取名字一样,最好使用能看函数名就知道函数干啥的名字。比如:
defAdd(a, b):return a+b
c= Add(1, 2)print(c)
c= Add(2, 2)print(c)
那既然函数已经可以把我们的业务封装起来了,要类来做啥呢?
百度百科的解释:
类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。 类是对现实生活中一类具有共同特征的事物的抽象。编写类时,你可以定义一大类对象都有的通用行为。 基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。
比如上面定义了一个加法的函数,然后我们再定义一些减法函数,乘法函数,除法函数,幂函数,阶乘函数等。这个时候我们就可以来定义一个类,取名为算法类
classAlgorith():defAdd(self, a, b):return a +bdefMinus(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分别写在不同类中就没这种烦恼。
classCat():defSpeak(self):print("猫叫")defWalk(self):print("猫步走")defEat(self):print("吃鱼")classDog():defSpeak(self):print("狗吠")defWalk(self):print("蹦跳")defEat(self):print("吃肉")
my_cat=Cat()
my_cat.Speak()
my_dog=Dog()
my_dog.Speak()
那么,方法跟函数区别在哪呢?
在类中的方法跟函数的写法一样,放在类中就叫方法,不在类中就叫函数。即类中的函数叫方法,函数的一切适用于方法。
以上如果不足之处,敬请指正。