![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
ByiProX
欢迎关注公众号CodeWorks
展开
-
简谈Python3关键字nonlocal使用场景
欢迎关注微信公众号:CodeWorks问题或建议,请公众号留言,欢迎非抬杠式讨论下面是之前提过的有待提升效率的计算移动平均的方法:def make_averager(): series = [] def averager(new_value): series.append(new_value) total = sum(series) ...原创 2019-12-10 14:30:08 · 208 阅读 · 0 评论 -
简谈Python3中的闭包
欢迎关注微信公众号:CodeWorks问题或建议,请公众号留言,欢迎非抬杠式讨论闭包是指延伸了作用域的函数,其中包含函数定义体中引用、但是不在定义体中定义的非全局变量。闭包(closure)是函数式编程的重要的语法结构。闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。当一个内嵌函数引用其外部作用域的变量,我们就会得到一个闭包. 总结一下,创建一个闭包必须满足以下几点:必...原创 2019-12-10 09:48:13 · 214 阅读 · 0 评论 -
简述Python中变量作用域的规则
介绍这一题目的目的是引出python中较为高级的话题—闭包和装饰器。在下面的例子中,定义并测试一个函数,它读取两个变量的值:一个是局部变量a,是函数的参数; 另一个是变量b,这个函数没有定义它。>>> def f1(a):... print(a)... print(b)...>>> f1(1)1Traceback (most re...原创 2019-12-08 09:33:46 · 252 阅读 · 0 评论 -
Python中如何优雅的使用assert断言
什么是assert断言Assert statements are a convenient way to insert debugging assertions into a program.断言声明是用于程序调试的一个便捷方式。断言可以看做是一个debug工具,Python的实现也符合这个设计哲学,在Python中assert语句的执行是依赖于__debug__这个内置变量的,其默认值为...原创 2019-11-14 20:34:59 · 391 阅读 · 0 评论 -
Python中的单下划线和双下划线使用场景
单下划线单下划线用作变量最常见的一种使用场景是作为变量占位符,使用场景明显可以减少代码中多余变量的使用。为了方便理解,_可以看作被丢弃的变量名称,这样做可以让阅读你代码的人知道,这是个不会被使用的变量,e.g.。for _, _, filenames in os.walk(targetDir): print(filenames) for _ in range(100)...原创 2019-09-08 21:28:41 · 229 阅读 · 0 评论 -
Python中进行None判断时,为什么用is而不是==
「is和None区别在哪里」is比较的是对象标识符,用来检查对象的标识符是否一致,即两个对象在内存中的地址是否一致。在使用a is b的时候,相当于是做id(a)==id(b)判断。==比较两个对象的值是否相等,相当于调用__eq__()方法,即a==b等同于a.__eq__(b)。「进行None判断时,为什么用is」▍这在PEP8中有所规定“Comparisons to sin...原创 2019-09-08 22:02:00 · 4882 阅读 · 0 评论 -
你可能不知道的几个IPython使用技巧
IPython 是一个 Python 的交互式 Shell,比默认的Python Shell 好用得多,支持变量自动补全,自动缩进,支持 Bash shell 命令,内置了许多很有用的功能和函数,下面介绍它的几个使用技巧。▍特殊符号? :放在被查方法或者命令的前后,一个?查看详细信息。??可以查看源代码(如果有)。* :通配符,可以放在名字中间,结合?一起,补全功能比tab键还强大。!...原创 2019-09-08 23:42:26 · 116 阅读 · 0 评论 -
浅析Python中的列表和元组
区别列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去 分配内存。这些区别揭示了两者在设计哲学上的不同:元组用于描述一个不会改变的事物的多个属性,而列表可被用于保存多个互相独立对象的数据集合。动态数组–列表列表可以改变大小及内容不同,列...原创 2019-10-07 13:30:01 · 162 阅读 · 0 评论 -
浅析Python中列表操作之*和*=
初学Python时总是会将a*=n理解为a=a*n,稍微深入后就会知道在Python中的不同,其中*调用__mul__ ,而*=调用__imul__ 。对于list对象也支持乘法操作,截止到Python3.7版本,上述仍然是成立的。我们知道list是由C实现的,所以真正的底层调用肯定是C的实现。观察list对象的C实现的源码我们会知道乘法*操作调用list_repeat,*=会调用list_in...原创 2019-10-07 13:38:36 · 1388 阅读 · 0 评论