""" 学员:杨欢 def waibu(func): # 1 包含内部函数的函数 def neibu(canshu): func(canshu) # 3 内部函数引用外部函数的变量 return neibu # 2外部函数返回内部函数的函数名 def hanshu(name): print(name,'开演唱会') hanshu('刘德华') def waibu(func): def neibu(canshu): func(canshu) return neibu def hanshu(name): print(name,"开演唱会") hanshu('刘德华') import time def decor(func): def neibu(canshu): start=time.time() func(canshu) stop=time.time() print(stop-start) return neibu @decor def hanshu(name): pass hanshu('张三') def decor(func): def neibu(canshu): start=time.time() func(canshu) stop=time.time() print(stop-start) return neibu @decor def hanshu(name): pass hanshu('李四') f=open('a.txt','w') f.write('1,3,5,6,7\n20,21,22') f.close() f=open('a.txt','r') # print(type(f.readline())) <class 'str'> content=f.readline() while len(content)>0: for d in eval(content): if d%5==0 or d%7==0: print(d) content=f.readline() f.close() # content=f.readline() # while len(content)>0: # for d in eval(content): # if d%5==0 or d%7==0: # content=f.readline() # # content=f.readline() # while len(content)>0: # for d in eval(content): # if d%5==0 or d%7==0: # print(d) # content=f.readline() # # content=f.readline() # while len(content)>0: # for d in eval(content): # if d%5==0 or d%7==0: # print(d) # content=f.readline() {'name=':'张三','score':[1,2,3,4]} (6,'r',34) 1+3 3*(5+1) (2*3+1,7) '3+5' f=open('b.txt','r') d=eval(f.readline()) print(d,type(d)) # {'name=': '张三', 'score': [1, 2, 3, 4]} <class 'dict'> print(d['score'],type(d['score'])) # [1, 2, 3, 4] <class 'list'> d=eval(f.readline()) print(d,type(d)) # (6, 'r', 34) <class 'tuple'> d=eval(f.readline()) print(d,type(d)) # 4 <class 'int'> d=eval(f.readline()) print(d,type(d))# 18 <class 'int'> d=eval(f.readline()) print(d,type(d)) #(7, 7) <class 'tuple'> d=eval(f.readline()) print(d,type(d)) # 3+5 <class 'str'> # f.readline()读出的是字符串,eval后,如同“除掉”字符串两边的引号后 人眼看着是什么类型,就是什么类class,有运算符的,会进行运算,得到运算结果 # 下面开始,全部讲 面向对象, 类 class Student(): ID=0 name='lisi' address='shanxi' def say(self): print(self.ID,self.name,self.address,self.sex) zs=Student() zs.ID=1001 zs.name='张三' zs.address='山东' zs.sex='do not know' zs.say() print(Student.ID,Student.name,Student.address) class Student(): # 声明类 ID=1 # 类属性 def say(self): # 方法method, 对象方法 实例化方法 print(self.name,self.ID,self.address) # 对象属性 zs=Student() # 创建对象 zs.ID=2001 zs.name='张三' zs.address='山东' ls=Student() ls.ID=3003 ls.name='李斯' ls.address='山西' zs.say() # 在say()之前写的对象属性,都能用。可以增加对象属性。所以类不是严格的封装 ls.say() class Student(): def __init__(self,name,age,dog): self.name=name self.age=age self.chongwuming=dog self.xiaogou='小狗' self.xiaomao='猪' zs=Student("张三",18,'小黄') print(zs.name,zs.age,zs.xiaogou,zs.xiaomao,zs.chongwuming) #无init时,程序默认有 # 类里面有属性和方法。类属性在类里面 函数外面,对象属性在对象函数里面。类方法由类名调用Student.count。对象方法由对象名调用zs.say() class Student(): count=0 def __init__(self,name,age): self.name=name self.age=age self.xiaogou='小狗' self.xiaomao='小猪' Student.count+=1 def say(self): print(self.name,self.age) zs=Student("张三",18) print(zs.name,zs.age,zs.xiaogou,zs.xiaomao) zs.say() ls=Student('李斯',20) print(ls.name,ls.age,zs.xiaogou) print(Student.count) class Student(): def __init__(self,name): self.name=name def say(self): print(self.ID,self.sex) zs=Student('张三') zs.ID=1001 zs.sex='男' zs.say() class Student(): def hehe(self,name): self.name=name def haha(self): self.hh=102 def p(self): print(self.zhu) zs=Student() zs.hehe('张三') zs.haha() print(zs.hh) print(zs.name) zs.zhu='猪头' zs.p() class Student(): def hehe(self,name): self.name=name def haha(self): self.hh=102 def p(self): print(self.zhu) zs=Student() zs.hehe('张三') print(zs.name) zs.zhu='猪头' zs.p() class Student(): count=0 def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def say(self): print(self.name,self.age,self.sex,self.weight) zs=Student('张三',10,'男') ls=Student('老李',88,'female') ls.weight=222 ls.say() ls.name='李四' ls.age=20 ls.sex='nv' zs.weight=57.5 zs.say() ls.say() class Student(): count=0 # 类 属性 def __init__(self,name,age,sex): # 初始化对象 self.name=name # 增加对象属性 self.age=age self.sex=sex def say(self): print(self.name,self.age,self.sex) zs=Student('张三',10,'男') ls=Student('李四',20,'女') zs.say() ls.say() class Student(): count=0 def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex Student.count+=1 def say(self): print(self.name,self.age,self.sex) zs=Student('张三',10,'男') ls=Student('李四',20,'女') zs.say() ls.say() print(Student.count) print(zs.count) print(ls.count) class Student(): count=0 def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex Student.count+=1 def say(self): print(self.name,self.age,self.sex) zs=Student('张三',10,'男') ls=Student('李四',20,'女') zs.count=10 print(Student.count) print(zs.count) # 本来zs.count,ls.count都是从Student.count取值,但zs.count=10改动了对象属性的值, print(ls.count) # 当类属性和成员属性重名时,使用成员属性 class Student(): count=0 def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex Student.count+=1 def say(self): print(self.name,self.age,self.sex) zs=Student('张三',10,'男') ls=Student('李四',20,'女') zs.count=10 wangwu=Student('王五',30,'好') print(Student.count) print(zs.count) # 当类属性和成员属性重名时,使用成员属性。Student.count类属性改变+1后,成员属性zs.count没有改变 print(ls.count) class Student(): count=0 def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex Student.count+=1 def say(self): print(self.name,self.age,self.sex) zs=Student('张三',10,'男') ls=Student('李四',20,'女') zs.count=10 wangwu=Student('王五',30,'女') print(Student.count) delattr(zs,'count') # 类属性和成员属性重名,为了使用类属性,删掉成员属性 print(zs.count) print(ls.count) zs.count=12 print(zs.count) class Student(): count=0 def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex Student.count+=1 def say(self): print(self.name,self.age,self.sex) zs=Student('张三',10,'男') print(zs.name) delattr(zs,'name') # print(zs.name) zs.name='张四' zs.say() class Student(): count=5 def __init__(self,name): self.name=name @classmethod def haha(cls): print(cls.count) def say(self): print(self.name) zs=Student('张三') Student.haha() #类 访问 类方法 zs.say() # 对象 访问 对象方法 zs.haha() # 对象 访问 类方法 Student.say() #类能访问两种方法,对象能访问三种方法。类方法,静态方法,对象方法 class Student(): count=0 def __init__(self,name): self.name=name @classmethod def clsmeth(cls): print(Student.count) def selmeth(self): print(self.name) zs=Student('张三') zs.clsmeth() zs.selmeth() Student.clsmeth() # Student.selmeth() class Student(): def __init__(self,name): self.name=name @staticmethod def hx(): print('我只是一个方法,跟类和对象没有任何关系。') zs=Student('张三') Student.hx() zs.hx() class Student(): count=5 def __init__(self,name): self.name=name @staticmethod def hx(): print('我只是一个方法,跟类和对象没有任何关系。') @classmethod def clsmeth(cls,cls2,cls3): print(cls.count*cls2*cls3) @staticmethod def stameth(sta1,sta2): print(sta1*sta2) def say(self): print(self.name) zs=Student('张三') Student.clsmeth(3,4) Student.stameth(3,4) zs.clsmeth(3,4) zs.stameth(3,4) zs.say() # Student.say() class Student(): count=5 def __init__(self,name): self.name=name def duixiangfangfa(self,duixiangshuxing1,duixiangshuxing2): print(duixiangshuxing1+duixiangshuxing2+Student.count) print(self.name) @classmethod def leifangfa(cls,leishuxing1,leishuxing2): print(leishuxing1*leishuxing2*cls.count) print(Student.count) @staticmethod def jingtaifangfa(canshu1,canshu2): print(canshu1-canshu2) print("我只是一个方法,和类,对象都没有关系") zs=Student('张三') zs.duixiangfangfa(1,2) zs.leifangfa(5,6) zs.jingtaifangfa(3,4) Student.jingtaifangfa(3,4) Student.leifangfa(5,6)
(eval函)(类)(delattr,增删属性,三种方法)
最新推荐文章于 2022-11-16 18:29:28 发布