摘要: 前情提要 getattr,gettrubte,setattr,delattr方法的触发时机 obj.__getattr__ 方法, 如果被访问(查找)的属性不存在的时候会触发 obj.__gettrbute__方法, 访问 查找属性时,第一时间出发该方法 obj.__setattr__方法 设置属性 阅读全文
posted @ 2020-06-20 06:52 呓语落花 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 一 、 自定义属性访问1.__getattr__ 作用:当我们访问属性的时候,如果属性不存在(出现AttrError),该方法会被触发。 2.__getattribute__ 作用:访问属性的时候,第一时间触发该方法去找属性。如果没找到触发AttrError 总结:当我们去访问一个不存在的属性时,首 阅读全文
posted @ 2020-06-20 06:50 呓语落花 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 前文课题 通过装饰器来实现单例模式 通过类实现一个通用装饰器,皆可以装饰函数也可装饰类,即可有参也可无参 描述 new str repr call 分别会在什么时候被触发 new 创建实例对象的时候 str print实例对象的时候,str处理对象的时候,format处理对象的时候 repr 调用r 阅读全文
posted @ 2020-06-20 06:49 呓语落花 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 回顾 一个完整的闭包函数要满足那些条件 1,函数里面套函数 2,外层函数返回的事内层函数的函数名 3,内层函数有对外部非全局变量的引用 多个装饰器并存 多个装饰器装饰同一个类,方法的时候,装饰器的加载和执行是什么样子的呢? 1 @login_check 2 @timer 3 def func(): 阅读全文
posted @ 2020-06-20 06:48 呓语落花 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 小 tips 写递归函数的章节提到过,当函数不断调用自身,直到被pycharm发现抛出异常。实际上是因为栈溢出。 什么是栈溢出呢? python中只要调用一个函数,函数中自己调用自己,每次调用都会放到内存中反复递归,但是当原函数没结束时(就是说没有设置递归结束标示),递归就不会结束,直到内存被用完, 阅读全文
posted @ 2020-06-20 06:47 呓语落花 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 函数进阶 递归函数 定义一个函数在函数的内部调用自身,如果不设置递归边界,将死循环无限调用知道被pycharm等ide观测到抛出异常终止 案例1: def fun(): if n == 0: return n else: return n*fun(n-1) # 在当前函数中,就是当n=0的时候停止调 阅读全文
posted @ 2020-06-20 06:45 呓语落花 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 元组和列表 1,元组与列表的性能分析 可以通过计算创建元组的时间与创建列表的时间相对比。 在此可以使用python的第三方库,ipython,timeit.timeit。 终端输入ipython即可进入交互式编程。通过timeit方法,执行命令并返回执行时间,从而得到python在初始化元组和列表, 阅读全文
posted @ 2020-06-17 15:37 呓语落花 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 工程结构化 时间层面,结构化意味着通过编写简介的代码并且正如文件系统中文件和目录的组织一样,代码应该逻辑和依赖清晰,在一个健康的开发周期中,代码风格,api涉及,和自动化是非常关键的,同样对于工程架构,仓库的架构也是关键的一部分。 那么什么是仓库的结构呢? 当你在Git上狩猎的时候,你能看到很多优秀 阅读全文
posted @ 2020-06-17 13:59 呓语落花 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 一,虚拟环境主要目的是为了给不同的工程创建相互独立的运行环境 在虚拟环境下,每一个工程都有自己的依赖包,彼此独立与其他的环境无关。 引入virtualenv 1,pip install 安装virtualenv 2,pip安装虚拟环境管理包 virtualenvwrapper-win 3,在本地硬盘 阅读全文
posted @ 2020-06-17 13:47 呓语落花 阅读(69) 评论(0) 推荐(0) 编辑