参数传递
参数可分为两种:可变类型和不可变类型。
- 可变类型:函数内的改动会影响外部变量。类似 c++ 的引用传递。
- 不可变类型:函数内的改动不会影响外部变量。类似 c++ 的值传递。
参数
函数参数可分为必需参数、关键字参数、默认参数、不定长参数。主要介绍一下不定长参数。
- 加了星号
*
的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
- 还有一种参数带两个星号
**
,会以字典的形式导入
def functionname([formal_args,] **var_args_dict ):
"函数_文档字符串"
function_suite
return [expression]
注:如果单独出现星号*
,则*
后的参数必须用关键字传入。
强制位置参数 (/)
在以下的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 或 f 要求为关键字形参:
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)