Python:Python零基础(二)

26,locate
    在python中 sql语句没有模糊匹配,没有like,因此用locate(str1,str2)
    例如:locate('a','abc')      1
          locate('f','abc')      0
          locate('abc',abcdefg)  3
    这是表明第一个参数str1在第二个参数str2的位置
    因此在sql语句中应该在where条件判断用  join on 1=1 where locate(str1,str2)>0
    
    
27,python脚本
    第一行加上#!                          又叫shebang
    用which 查找python环境的完整路径         /user/python3
    给脚本加上可执行权限                  chmod +x 脚本.py
    
    
28,可变与不可变类型
    不可变类型:内存中的数据不允许被修改,例如:int str tuple
    可变类型:内存的数据可修改            例如:list dict
    
    
    修改可变类型的数据得通过方法
        list:list里的数据发生改变,但内存中的位置不变
            a=[]
            a.append[1,2,3]
            查看id(a)
            
            a.remove[2]
            id(a)
        dict
            dict1={}
            dict1["name":'joseph']
            dict1["age"]=26
            id(dict1)
            dict1.pop('name')
            id(dict1)
            
    注意:不可变类型都可以作为可变类型的key


29,递归

    def demo01(num):    
        print(num)
        if num==1:
            # 递归的时候必须得有个出口,否则报错或死循环
            return
        # 递归就是自己调用自己
        demo01(num-1)   
    
    result=demo01(3)
        
    def demo01(num):
        # ①递归的时候必须得有个出口,否则报错或无限循环
        if num==1:
            return 1
        # 递归就是自己调用自己
        tmp=demo01(num-1)
        return  tmp+num

    result=demo01(100)
    print(result)


    
30,面向对象

    class Cat:       #遵循大驼峰命名原则

        def eat(self):
            print("小猫爱吃鱼")
            print("%s 爱吃鱼" %self.name)   #哪个对象调用的方法,self就代表哪个对象
        def drink(self):
            print("小猫爱喝水")

            # 3.self.属性名=属性初始值值
            self.name="如意"


        # 2,设置初始值
        def __init__(self):
            print("这是一个初始值")

        tom=Cat()   #创建一个tom的对象

        tom.name="汤姆"      #在类的外部粗暴的给对象加上了name属性,一般不推荐这样做,一般都是在内部使用self.属性名
        tom.eat()   #调用eat方法
        tom.drink() #调用drink方法
        tom.__init__()      #调用初始值方法,其实类创建的对象会自动调用init方法
        print(tom.name)

        # 结果:
        #     这是一个初始值
        #     小猫爱吃鱼
        #     汤姆 爱吃鱼
        #     小猫爱喝水
        #     这是一个初始值
    
    
    ======================================================================================
    class Cat:       #遵循大驼峰命名原则

    # ①初始方法时设置初始值
        def __init__(self,new_cat):
            self.name=new_cat

        def eat(self):
            print("%s 爱吃鱼" %self.name)

        # ②当对象的调用代码都运行完了才执行删除
        def __del__(self):
            print("删除 %s" %self.name)
        
        # ③必须返回一个字符串,在方法调用完之后返回输出
        def __str__(self):
            return "我是小猫[%s]" % self.name


    tom=Cat("如意")   #①初始方法时设置初始值
    laze_cat=Cat("懒猫")
    tom.eat()
    laze_cat.eat()         #只调用的eat方法,当调用运行完之后自动调用del方法

    # 结果:
        # 如意 爱吃鱼
        # 懒猫 爱吃鱼
        # 删除 如意
        # 删除 懒猫

        
31,私有属性,私有方法

    class Women:
        def __init__(self, name):

            self.name = name
            self.__age = 18   #要将age变成私有属性,只在前面输入两个下划线__

        def __secret(self):   #私有方法也是,在前面输入两个下划线__
            # 在对象的方法内部,是可以访问对象的私有属性的
            print("%s 的年龄是 %d" % (self.name, self.__age))


        xiaofang = Women("小芳")

        # 私有属性,在外界不能够被直接访问
        # print(xiaofang.__age)                    #print(xiaofang._Women__age)伪私有
        # 私有方法,同样不允许在外界直接访问
        # xiaofang.__secret()
        
        
32,继承
    class Animal:
        def eat(self):
            print("吃---")
            
        def drink(self):
            print("喝---")

        def run(self):
            print("跑---")

        def sleep(self):
            print("睡---")


    class Dog(Animal):

        # 子类拥有父类的所有属性和方法
        # def eat(self):
        #     print("吃")
        #
        # def drink(self):
        #     print("喝")
        #
        # def run(self):
        #     print("跑")
        #
        # def sleep(self):
        #     print("睡")

        def bark(self):
            print("汪汪叫")
            
            
    class XiaoTianQuan(Dog):  
        #1,同理,继承父类
        def fly(self):
            print("我会飞")
            
        #2,如果子类重写了父类方法,调用的时候是调用重写之后的
        def bark(self):
            print("叫的跟怀孕似的")
            
            #3,父类名.方法(self)
            Dog.bark(self)
            # 注意:如果使用子类调用方法,会出现递归调用 - 死循环!
            # XiaoTianQuan.bark(self)
            

    # 创建一个对象 - 狗对象
    wangcai = Dog()
    wangcai.run()
    wangcai.sleep()
    wangcai.bark()
    
    xiaoqiang=XiaoTianQuan()
    xiaoqiang.bark()
    
    ☆多继承
        class A:
            def test(self):
                print("test 方法")

        class B:
            def demo(self):
                print("demo 方法")

        class C(A, B):
            """多继承可以让子类对象,同时具有多个父类的属性和方法"""
            pass

        # 创建子类对象
        c = C()
        c.test()
        c.demo()

        
32,静态方法
    class Dog(object):
        @staticmethod
        def run():
            
            # 不访问实例属性/类属性
            print("小狗要跑...")

        # 通过类名.调用静态方法 - 不需要创建对象
        Dog.run()
        
33,文件
    打开文件:open
    file=Open["文件名","访问方式"]
        例如:Open["wufan.txt","a"]
        r:只读
        w:只写
        a:追加
        r+:读写,文件指针放在开头,没有则报错
        w+:读写,文件指针放在开头,没有自动创建
        a+:读写,如果文件存在,指针放在结尾,如果文件不存在则创建文件并放到结尾
    file.write()    写入文件
    file.readline() 一行一行的读取
    
    
34,eval():将字符串当成表达式,并返回值
    例如:eval("1+1")
            结果:2
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值