python学习(fifth)
前言今天睡过头了7点多醒了一回就想着再睡一会9点会有闹钟叫我的结果9:29才醒来手机自动关机了ε(´ο*)))唉这都是小事我总觉得我干什么都没精神干什么都好累md食欲倒是挺好是不是总抽烟的事啊那每天少抽一点吧饮食的话我也没什么好办法吃的也就那样一点蔬菜都没有最近倒是越来越馋了。ε(´ο*)))唉情绪也比较悲观外面天气死热就没有一个正面buff吗算了不说了去学习吧。一、项目交接1-虚拟环境虚拟环境 让每一个项目都有独立的依赖环境避免不同项目之间的依赖冲突创建虚拟环境python -m venv venv激活虚拟环境venv/Scripts/activate退出虚拟环境deactivate二、函数进阶2-闭包外层函数执行完毕后局部变量本该销毁但闭包会保留变量供内层函数后续调用。优点保存函数状态、减少全局变量、简化代码结构缺点外层变量会常驻内存内存占用比普通函数高3-lambda 匿名函数给我的感觉就是方便配合 sorted() 排序自定义规则lst [(张三,18),(李四,16)]res sorted(lst, keylambda x: x[1])临时简单逻辑不用单独定义命名函数限制只能一行表达式复杂逻辑必须用def定义普通函数。4-高阶函数接收函数作为参数或者返回一个函数的函数就是高阶函数。能增强函数功能就是复杂map遍历别的不干。filter过滤只保留函数返回True的元素。reduce依次把前一次结果和下一个元素传入函数运算累计计算。5-装饰器基础无语法糖时def deco(func): # 内层包装函数 def wrapper(*args, **kwargs): # 前置功能 print(函数开始执行) res func(*args, **kwargs) # 执行原函数 # 后置功能 print(函数执行结束) return res return wrapper # 手动赋值 def test(): print(原函数逻辑) test deco(test) test()有语法糖时def deco(func): def wrapper(*args, **kwargs): print(前置) r func(*args, **kwargs) print(后置) return r return wrapper deco def test(a,b): return ab常用日志记录、运行耗时统计、权限校验、异常捕获、接口缓存。三、面向对象1-类和对象类模板、图纸定义一类事物共同属性和行为对象 / 实例根据模板创建出的具体个体Python 万物皆对象数字、字符串、字典、列表全都是某个类的实例2-继承和多态子类可以直接复用父类的属性与方法减少重复代码语法class 子类(父类)super()调用父类被重写的方法常用在子类构造函数class Cat(Animal): def __init__(self, name): super().__init__() # 执行父类__init__ self.name name多态同一个方法不同子类实现不同逻辑调用时自动匹配对应子类实现。核心关注父类抽象不关注具体子类类型3-封装和属性封装将属性、方法打包进类内部隐藏私有数据不允许外部随意修改仅开放指定访问入口私有属性Python 约定以__双下划线开头的属性视为私有外部无法直接访问class Person: def __init__(self, age): self.__age age # 私有属性property 装饰器属性伪装把方法伪装成属性用.直接调用不用加括号常用于私有属性的读取、修改、删除。class Person: def __init__(self, age): self.__age age # 读 property def age(self): return self.__age # 修改 age.setter def age(self, val): if 0 val 150: # 增加数据校验 self.__age val else: print(年龄不合法) p Person(18) print(p.age) # 像访问属性一样取值 p.age 20 # 赋值修改4. 类方法 和 静态方法类中一共 3 种方法区别由第一个参数区分① 实例方法最常用第一个参数self只能由实例对象调用操作实例属性② 类方法 classmethod装饰器classmethod第一个参数cls代表当前类本身可以用类名。方法 ()/ 对象。方法 () 调用只能操作类属性不能直接使用实例属性class Tool: count 0 classmethod def show_count(cls): print(cls.count)③ 静态方法 staticmethod装饰器staticmethod无默认必须参数就是普通函数放在类里类、对象都可以调用和类 / 实例本身几乎无绑定适合写和类弱相关的工具工具函数class MathUtil: staticmethod def add(a,b): return ab三者选用总结要操作实例变量 → 实例方法只操作类变量 → 类方法和类、实例都无关单纯工具函数 → 静态方法

相关新闻