python 易错及易遗忘点总结(持续更新)
1 收集参数
1 | def test(*params, extra) |
在调用时要用关键词参数来制定extra,不然python会把你的实参都列入收集参数的范畴。
所以,建议再有其他参数时,设置默认参数,如:
1 | def test(*params, extra = 8) |
收集参数会被打包成一个元祖。
有打包就有解包,如一个列表 a = [1, 2, 3, 4, 5, 6]
要作为参数放入收集参数,则要先解包,同样用*
解包,不然会出错:
1 | test(*a) |
2 函数变量作用域
如果在函数内部试图修改全局变量,python会创建一个局部变量代替(名字一模一样),所以真正的全局变量是一点不变的。
3 dict()
dict()
的参数可以是一个序列,但不可以是多个,所以:
1 | dict((('a', 1), ('b', 2), ('c', 3))) #注意括号个数 |
但可以:
1 | dict(one=1, two=2, three=3) |
4 zip()
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
1 | >>>a = [1,2,3] |
5 两个列表一起打乱
1 | import random |
shuffle()
方法将序列的所有元素随机排序
1 | import random |
zip()
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
1 | >>>a = [1,2,3] |