摘要: 又是从做铺垫开始: *文档字符串(Documentation Strings) 在装饰器调用过程中,我们打印出这些函数属性信息会发现问题: 我们打印出的add()函数的属性并不是add()函数定义时的属性信息,而是wrapper()函数里的属性信息。(因为@logger里将add重新赋值为wrapp 阅读全文
posted @ 2019-03-04 13:08 DoubleFishes 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 按照这个顺序去循序渐进理解装饰器:高阶函数->柯里化->装饰器 在python里,函数可以是对象,可以作为普通变量、参数、返回值等等。 所以高阶函数定义: 1.输入一个或多个函数作为参数; 2.输出一个函数。 例如样式: y = g(f(x)) 闭包就是一个高阶函数: python内置的很多函数都是 阅读全文
posted @ 2019-03-03 08:34 DoubleFishes 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 变量的查找顺序:LEGB 本地作用域、局部作用域的local命名空间。 在函数内(def或lambda)通过使用方式赋值, 且没有通过global声明为全局变量。 python2引入了嵌套函数,实现闭包。 这个就是嵌套函数的外部函数的命名空间。 上层函数的本地作用域。 全局作用域:即一个模块的命名空 阅读全文
posted @ 2019-03-02 22:45 DoubleFishes 阅读(516) 评论(0) 推荐(0) 编辑
摘要: #父对象的修改 #子对象的修改 由上面两个例子可以理解为并总结出: a = b赋值操作:就是将变量a的引用地址拷贝过去,即a的另一个别名;对a或者b的操作是对同一个地址下的元素进行操作,所以返回的结果都是一样的,数值同步。 f = copy.deepcopy()深拷贝:就是将父对象及父对象下的子对象 阅读全文
posted @ 2019-03-01 21:13 DoubleFishes 阅读(196) 评论(0) 推荐(0) 编辑
摘要: *从作用域的概念开始: 全局作用域:整个程序运行环境中都可见。 局部作用:函数、类内部可见。 两者特点: 1.局部变量使用范围不能超过其所在的局部作用域。 2.外层变量作用域在内层作用域可见。在内层作用域定义一个同名的局部变量时,相当于在当前作用域重新定义一个新的变量,但不会覆盖外层作用域的同名变量 阅读全文
posted @ 2019-03-01 20:23 DoubleFishes 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 1.冒泡排序 算法描述: 1.比较相邻两个元素的大小,如果第一个比第二个大,就互相交换; 2.从第一个元素到结尾的最后一对,重复上面的步骤。这样最大的元素就在最后一个; 3.从头重复上面的步骤,除了最后一个元素; 4.重复上面的步骤,直至排序完成。 2.选择排序 算法描述: 1.初始状态:无序区为R 阅读全文
posted @ 2018-11-15 14:29 DoubleFishes 阅读(196) 评论(0) 推荐(0) 编辑
摘要: *准备工作:爬取地址:http://tieba.baidu.com/p/5605320907 爬取内容:该网页内东方神起的照片 1.同样步骤:创建'dfsq_photo'scrapy工程,'dfsq'爬虫 scrapy startproject dfsq_photo scrapy genspider 阅读全文
posted @ 2018-08-10 10:40 DoubleFishes 阅读(321) 评论(0) 推荐(0) 编辑
摘要: *准备工作: 爬取的网址:https://www.jianshu.com/p/7353375213ab 爬取的内容:下图中python库介绍的内容列表,并将其链接的文章内容写进文本文件中 1.同上一篇的步骤: 通过'scrapy startproject jianshu_python'命令创建scr 阅读全文
posted @ 2018-08-09 21:29 DoubleFishes 阅读(4638) 评论(0) 推荐(0) 编辑
摘要: *.准备工作:爬取的网站地址:http://www.abchina.com/cn/AboutABC/nonghzx/fzjg/jnbranch_org/ 爬取的内容:下图中每个省份(或者城市)对应的弹框里的支行信息 1.打开终端,进入到要存放scrapy项目的文件夹下,并创建一个scrapy项目: 阅读全文
posted @ 2018-08-09 16:11 DoubleFishes 阅读(961) 评论(0) 推荐(0) 编辑
摘要: def add(x:int,y:int=7) ->int: return x+y sig=inspect.signature(add) #inspect.Signature类 print('函数签名: ',sig) #函数签名: (x:int, y:int=7) -> int params=sig. 阅读全文
posted @ 2018-06-14 11:40 DoubleFishes 阅读(260) 评论(0) 推荐(0) 编辑