类与类方法
静态方法和类方法
@staticmethod 静态方法
如果类中需要非该成员存在,则可以使用静态调用的方法
例:输入四条边,判断它是否是一个正方形,如果是:计算面积
class zhengfangxing(object): def __init__(self,a,b,c,d): self._a = a self._b = b self._c = c self._d = d @staticmethod def is_valid(a,b,c,d): #def is_valid(self): #for i in [self._b,self._c,self._d]: for i in [b,c,d]: #if i !=self._a: if i !=a: return False else: return True def area(self): #res = self.is_valid() if res == True: area_ =self._a * self._b #print(area_) return area_ zfx = zhengfangxing(2,2,2,2) #zfx.is_valid() res=zfx.is_valid(2,2,2,2) if res == True: print(zfx.area()) #zfx.area()
时间
from time import time,localtime,sleep
print(time()) #时间戳,从1970年1月1号00.00.00秒开始到现在经历过的秒数
pritn(localtime()) #经历的天数
@classmethod 获取自身类(cls)中的属性,并且可以更改
例:
class A(object): def __init__(self): self.joker=100 @classmethod def a(cls): return cls() #不需要创建A的实例,可直接用A调用a joker=A.a() print(joker) joker2=A() print(joker2)
类与类之间的关系
继承
例:创建两个类,父类计算两个数的和,子类继承
class F(object): def __init__(self): self.a = 100 self.b = 20 def sum(self): SUM_ = self.a + self.b return SUM_ class Z(F): def __init__(self): F.__init__(self) def p(self): res = self.sum() print(res) z = Z() z.p()
创建虚拟环境
- conda create --name env_name python3.7 创建虚拟环境
- conda activate env_name 进入虚拟环境
- conda env list 查看虚拟环境
- pip freeze 查看当前环境自己安装的包
- conda deactivate 退出虚拟环境
- conda env remove --name env_name 删除虚拟环境
列表生成式
- 列表生成式
a = [x for x in range(100000000000) if x % 2== 0]
优点: 计算速度快,因为一次性已经全部加载到内存中了,适合数据量不是太大的情况10000- 2000-
缺点: 占用内存
- 生成器
a = (x for x in range(100000000000) if x % 2== 0)
优点: 节约内存空间
缺点: 计算速度慢,因为要生成.
例:
a = (x for x in range(100000000000) if x % 2== 0) for i in range(100): print(next(a))
path = '/Users/joker/jokers/DataSet/stanford-dogs-dataset/Annotation' res = os.listdir(path) print(res) genter = (dir_ for dir_ in res) print(next(genter))
闭包函数
def foo(): def bar(): return "hello" return bar f1 = foo() print(f1())
def foo(): def bar(): def bar2(): return "Hello" return bar2 return bar f1 = foo() print(f1()) f2 = f1() print(f2())
装饰器
例: 1.创建一个装饰器,三个函数,装饰器处理这两个从参数的和并打印,每一个函数打印这两个参数
def deco(func): def warp(d,g): print("两个数的和:",d+g) return func(d,g) return warp @deco def yi(a1,a2): print(a1,a2) @deco def er(b1,b2): print(b1,b2) @deco def san(c1,c2): print(c1,c2) yi(3,4) er(5,6) san(7,8)
2.将前两个数字求和,函数本身第三个参数乘上这个和
def Joker(func): def warp(n1,n2,n3): num = n1 + n2 return func(0,num,n3) return warp @Joker def SUM(num1,num2,num3): print(num1,num2,num3) print(num2 * num3)