any的用法
1 | if any(name.endwith('py') for name in files) |
其中如startwith()与endwith()方法中如果有多个可匹配对象,必须输入一个元组。
分割字符串
使用了多个界定符的情况下,界定符可以是逗号,分号,或者是空格,并且后面紧跟着任意个空格。需要注意是否使用了括号即捕获分组,形如(?:….)为非捕获分组。
1 | line='asdf fnfkjdjs,djjwe;djwe' |
生成器表达式
如果想将字符串strip操作和其他迭代操作相结合,可以使用生成器表达式
1
lines=(line.strip() for line in f
这种方式十分高效,因为不需要预先读取所有数据放到一个临时列表,仅仅只是创建一个生成器。
使用 + 操作符去连接大量的字符串效率低下,加号连接引起内存复制以及垃圾回收操作。也可以利用生成器表达式转换字符串并合并。
1
2data=['acm',3,4,5]
dada_new=','.join(str(d) for d in data)
python3.8新特性
使用asyncio.run()高级API
1 | import asyncio |
函数的嵌套
函数嵌套能保证内部函数的隐私,只能被外部函数所调用和访问,不会暴露在全局作用域,若函数内部有一些隐私数据(数据库用户以及密码),不想暴露在外面,就可以使用函数嵌套。
1 | def connect(): |
同样的,合理使用函数嵌套,也可以提高程序的运行效率。使用递归的方式来计算一个数的阶乘,在计算之前,要检查输入是否合法。写成函数嵌套的话,输入是否合法只检查一次,而不使用嵌套的话,每调用一次递归,就会检查一次。