Python零碎知识补充

参考来源:
2018年终精心整理|Python爱好者社区历史文章合集(类型篇)

1. 元祖相比列表的优势
  • 元祖的运算速度比列表快,如果经常需要遍历一个序列,且内容不做修改,则用元祖;
  • 元祖内容不可修改,对数据进行了保护,功能大概类似于word转成pdf,只读,不可修改。
2. print() 函数作为列表的元素,是没有返回值的

先煮个小栗子:
在这里插入图片描述
将print()赋值给s,,然后打印s发现是None,震惊!!因为print函数没有返回值啊大哥!

再煮个大栗子:
将txt文件中的内容,利用列表生成式打印出来:
在这里插入图片描述
上图结果返回的是列表,而这个列表的元素是None,因为print()函数作为列表的元素是没有返回值的。

再看下图
在这里插入图片描述

3. Python中的时间(戳)转换

在这里插入图片描述

4. 可迭代对象!= 迭代器,但迭代器 == 可迭代对象
  • 可迭代对象:简单来说,可以使用for循环的,也可以使用函数判断如下:
    在这里插入图片描述
  • 迭代器:一定是可迭代对象,拥有next()方法!比如列表(list)就不是迭代器。

不信你试试:
在这里插入图片描述
所以啊,看看下面这个栗子,可迭代对象和迭代器之间的纠缠:
在这里插入图片描述
那照这么说的话,好像多次一举,但其实是有用武之地的,比如你要取一个集合中的元素时…

补充,
集合中元素的性质:确定性,互异性,无序性

集合中的元素是没有索引的,如果你想这样:
在这里插入图片描述
看到了大大的Error提示了吧:set object does not support indexing,这时候,就来看看迭代器的了。
在这里插入图片描述

  • 但是有一点,迭代器只有next()函数,也就是说,智能往后,不能回退,不能获取前一个元素,是真的过了这个村,就没这个店了,就是这么傲娇!
  • 优点是不要求事先准备好整个迭代过程中所有的原型,在迭代到某个元素时才开始计算,特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件。
5. 闭包

以前看java的时候也看到过闭包这个概念,但是概念性的东西真的枯燥无味,一瞥而过,直到今天看到这个教程中的python对闭包的演示,顿悟啊。

闭包,就是根据不同的配置信息,得到不同的结果!

看一下定义级别的描述:
闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。
这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。
所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。
闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。

直接上代码:
在这里插入图片描述
看到没,这里在函数内部还有一个函数,但是没调用,将这个内部函数的引用给返回了,而且带着是外部函数的参数…

妈呀,好像有点绕,那还是看上面代码来自己理解吧。

有这么三个特征:

  1. func函数里有一个内部函数func_inner
  2. func_inner函数使用了外部函数func中的num变量
  3. 外部函数func最后返回的是func_inner函数的引用

这也就是闭包的三个特征,这个外部函数就是闭包函数了!

具体的应用见下面这个例子:
在这里插入图片描述
这真的是,根据不同配置,得到不同的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值