python冷知识(续)

python 冷知识

1.交互式中修改最大递归深度

大家都知道使用递归是有风险的,递归深度过深容易导致堆栈的溢出。

那到底,默认递归次数限制是多少呢?

可以使用sys这个库来查看

>>> import sys
>>> sys.getrecursionlimit()
1000

既然可以查当然也可以自定义修改次数,退出即失效。不过这玩意还是不要轻易去碰,可能导致系统崩溃了

2.交互式中“_”操作符

对于“_”,我想很多人都很熟悉。

给变量取名好艰难,用 _; 懒得长长的变量名,用 _; 无用的垃圾变量,用 _

以上,我们都很熟悉了,今天要介绍的是他在交互式中使用。

>>>3+4
7
>>>_
7
>>>name='ming'
>>>name
'ming'
>>>_
'ming'

它可以返回上一次的运行结果。

但是,如果是print函数打印出来的就不行了。

>>>3+4
7
>>>_
7
>>>print("ming")
ming
>>>_
7

3. 空字符串计数

求一个字符串里,某子字符(串)出现的次数。在Python中使用 count() 函数,就可以轻松实现。

比如下面几个常规例子

>>>"aabb".count("a") 2 >>>"aabb".count("b") 2 >>>"aabb".count("ab") 1

但是如果使用空字符串呢,你可能想不到会是这样的结果。

>>>"aabb".count("") 5

具体原因,我不敢妄下结论。

由此我还衍生出另一个想法,实验了下。不知道空字符串,是一种什么样的存在,难道字母与字母之间 “缝隙” 也算吗?

>>>""in"" True >>>""in"ab" True

有兴趣的可以去看看CPython的源码实现。如果有结论,还请后台回复一下。不胜感激。

4.数值与字符串比较

在 Python2 中,数字可以与字符串直接比较。结果是数值永远比字符串小。

>>>100000000<""
True
>>>100000000<"ming"
True

但在 Python3 中,却不行。

>>>100000000<""
TypeError:'<'notsupportedbetweeninstancesof'int'and'str'

5. 链式比较

先给看一个示例

>>>False==False==True
False

你知道这个表达式会返回 False 吗?

我再给你举个例子,你可能就懂了。

f18<age<60:
print("youngman")

如果还不明白,再给你整个等价写法。

>>>False==FalseandFalse==True
False

猜你喜欢

转载自www.cnblogs.com/MrYang161/p/11599752.html