1、默认参数最好不为可变对象
函数的参数分三种
可变参数
默认参数
关键字参数
Python 中的 def 语句在每次执行的时候都初始化一个函数对象,这个函数对象就是我们要调用的函数,可以把它当成一个一般的对象,只不过这个对象拥有一个可执行的方法和部分属性。
对于参数中提供了初始值的参数,由于 Python 中的函数参数传递的是对象,也可以认为是传地址,在第一次初始化 def 的时候,会先生成这个可变对象的内存地址,然后将这个默认参数 item_list 会与这个内存地址绑定。
在后面的函数调用中,如果调用方指定了新的默认值,就会将原来的默认值覆盖。如果调用方没有指定新的默认值,那就会使用原来的默认值。
2、访问类中的私有方法
大家都知道,类中可供直接调用的方法,只有公有方法(protected类型的方法也可以,但是不建议)。也就是说,类的私有方法是无法直接调用的。
# 调用私有方法,以下两种等价
ins._Kls__private()
ins.call_private()
3、时有时无的切片异常
这是个简单例子
my_list = [1, 2, 3, 4, 5]
print(my_list[5])
执行一下,和我们预期的一样,会抛出索引异常。
Traceback (most recentcalllast):
File"F:/Python Script/test.py", line2,in
print(my_list[5])
IndexError:listindexoutofrange
4、哪些情况下不需要续行符
为了实现高可读性的代码,我们常常使用到的就是续行符\。
经过总结,在这些符号中间的代码换行可以省略掉续行符:[],(),{}
>>> my_list=[1,2,3,
...4,5,6]
>>> my_tuple=(1,2,3,
...4,5,6)
>>> my_dict={"name":"MING",
..."gender":"male"}
一样的,在以下这些场景也同样适用
类,和函数的定义。
列表推导式,字典推导式,集合推导式,生成器表达式。
网友评论