• 小学生学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+"
    ", 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()
    
    

    那么,方法跟函数区别在哪呢?

    在类中的方法跟函数的写法一样,放在类中就叫方法,不在类中就叫函数。即类中的函数叫方法,函数的一切适用于方法。

    以上如果不足之处,敬请指正。

     




  • 相关阅读:
    哈工大中文篇章关系语料
    MongoDB学习笔记~关于官方驱动集成IQueryable之后的一些事
    MongoDB学习笔记~为IMongoRepository接口更新指定字段
    MongoDB学习笔记系列
    MongoDB学习笔记~为IMongoRepository接口添加了增删改方法,针对官方驱动
    MongoDB学习笔记~为IMongoRepository接口添加了排序和表达式树,针对官方驱动
    Android NDK入门实例 计算斐波那契数列二生成.so库文件
    Spring Autowire自动装配
    在gem5的full system下运行 alpha编译的测试程序 running gem5 on ubuntu in full system mode in alpha
    工厂三兄弟之抽象工厂模式(二)
  • 原文地址:https://www.cnblogs.com/ikel/p/10048956.html
Copyright © 2020-2023  润新知