Python小技巧
使用匿名可变位置参数,强制使用者使用关键字传递函数参数。
当一个函数的参数很多的时候,在调用的时候,习惯于直接通过位置参数进行传参,即按照顺序直接进行传递参数。
不推荐的写法
def handle_file( filename, mode, buffer_size = 1024, check_exist = True ): pass # 使用时 handle_file( 'test.py', 'r', 2048, False )
当函数的参数变多以后,尤其是在需要团队协作的情况下,这种直接传参的方式,会导致代码难以维护,后来者在查看这种代码的时候,需要查看函数的注释,甚至是需要深入源代码去查看每个参数是什么意思。一种比较好的实践方法是,对于一个拥有多个参数的函数而言,只允许最常见的参数可以通过位置参数进行传递,对于一些需要进行理解的参数,通过可变位置参数来进行屏蔽,强制使用者使用关键字传参。
推荐的写法
def handle_file( filename, mode, *, buffer_size = 1024, check_exist = True ): pass # 使用时 handle_file( 'test.py', 'r', buffer_size=2048, check_exist=False )
通过不带有名字的可变位置参数*
来屏蔽多余的位置参数,在需要传递*
后面的参数时,必须使用arg=value
关键字的方式进行传参。相较于文章开头全部使用位置参进行传递的方式而言,提高了代码可维护性。