python 函数参数

Posted FLYMOOD

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 函数参数相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/aszeno/p/10384887.html

https://www.cnblogs.com/aszeno/p/10386149.html

链接中的文章讲的比较详细,简单概括一下:

 

1. 位置参数

函数调用时必须指定。 可以直接函数调用时给相应的位置赋值,或者通过关键字指定。 必须有实参。

2. 默认参数

在函数定义时已经指定了default 值。函数调用时可以不给这个参数赋值。

函数定义时所有的默认参数都必须在位置参数之后。

3. 关键字参数

这是指函数调用时指定了形参名字和实参值。即函数调用是通过argx=xxx 的形式给出。

4. 可变长度参数(参数组)

在函数定义时

*args 表示tuple 类型参数组。 但不表示调用时的参数为tuple, 只是表示调用时的参数格式为 argx,argy

**kwargs 表示字典类型参数组。但不表示调用时的参数要为dict. 只是表示调用时参数格式为  argx=xx,argy=yy

 函数调用时,

如果实参是tuple ,要将tuple 中的item 变成函数的可变参数,那么需要在tuple 前面加上*

如果实参是dict, 要将dict 中的item 变成函数的关键字参数,那么需要在dict 前面加上**

 

也就是说可变参数在调用时有两种方式:

可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));

关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过**kw传入:func(**{\'a\': 1, \'b\': 2})。

 

注意:

函数定义时,可变长度参数必须在位置参数和默认参数之后。且字典类型的参数组必须是最后一个。

 

5. 列表/元组/字典 可以作为函数的参数(因为他们都是对象,对象可以作为单个变量传递给函数的)

当他们作为函数参数的时候 只能表示 函数的一个参数,而不是一组参数。在函数中可以对列表和字典的值进行修改。而且这种修改会让输入变量的值永久改变。

 如果要禁止函数修改列表的值:

#禁止函数修改列表
print_models(unprinted_designs[:],completed_models)

 

以上是关于python 函数参数的主要内容,如果未能解决你的问题,请参考以下文章

Python 函数声明和调用

Python学习 :函数

Python小白到老司机,快跟我上车!基础篇(十三)

python函数声明和调用(18)

13 个非常有用的 Python 代码片段

在 Python 多处理进程中运行较慢的 OpenCV 代码片段