原标题:Python的函数参数详解

前言

Python中函数的参数可以分为两大类形参和实参~

def func(x, y): # x, y 就是形参

print(x, y)

func(2, 3) # 2, 3 就是实参

- 形参

形参(如上面的x, y)仅在定义的函数中有效,函数调用结束后,不能再使用该形参变量。在调用函数时,该函数中的形参才会被分配内存,并赋值;函数调用结束,分配的内存空间也随即释放~

- 实参

即在调用函数时,向该函数的形参传递确定的值(必须是确定的值)。传递的值可以是常量、变量、表达式、函数等形式~

在形参和实参中又可以细化为多种参数,例如形参中有 位置形参,默认形参,可变长参数...;实参中有位置实参,关键字实参等,下面一一介绍~

位置参数

位置参数顾名思义,按照从左到右的顺序依次定义的参数。位置参数有两种:位置形参和位置实参。上面示例中,func函数中的x,y就是位置形参,每一个位置形参都必须被传值。调用func时传递的2,3就是位置实参,位置实参与位置形参一一对应,不能多也不能少~

关键字参数

关键字参数针对实参,即实参在定义时,按照 key=value 形式定义

def func(x, y, z):

print(x, y, z)

func(1, z = 2, y = 3)

关键字参数可以不用像位置参数一样与形参一一对应,例如这里可以是 z 在前面,y 在后面。

使用注意点:

1)在调用函数时,位置实参 必须在 关键字实参的前面~

def func(x, y, z):

print(x, y, z)

# 位置参数和关键字参数混合使用的时候

func(1, z = 2, y = 3) # 正确

func(x = 1, z = 2, 3) # 错误

2)一个形参不能重复传值

def func(x, y, z):

print(x, y, z)

func(1, x = 2, y = 3, z = 4) # 错误,形参 x 重复传值

默认参数

默认参数即在函数定义阶段,就已经为形参赋值

def function(x, y=10): # y 即为默认参数

pass

# 函数调用阶段,必须为 x 传值(位置形参),可以为 y 传值,也可以不传,不传值就使用默认值 10

function(1) # x = 1,y = 10

function(1,2) # x = 1,y = 2

默认参数使用的注意点:

1)定义函数时,默认形参必须放在位置形参后面

def func(y = 10, x): # 错误

pass

def func(x, y = 10): # 正确

pass

2)默认参数通常要定义成不可变类型,例如:数字,字符串,元组等;虽然语法上支持定义成可变类型,但一般不建议这么做

3)默认参数只在定义阶段被赋值一次,如下示例:

x=10

def func(name, age = x):

pass

x=20

func('hello')

Tip:func函数在定义时,age 只被赋值一次,即 age=10,下面重新指定了 x=20,不会再作用于函数中的 age 参数

可变长参数

在定义函数时,若不确定调用时需要传入多少个参数,这时就可以使用可变长参数,即实参的个数不固定

可变长参数 可以分为两类:

1)按位置定义的可变长度的实参(*)

2)按关键字定义的可变长度的实参(**)

- 按位置定义的可变长度的实参

def func(x, y, *args): # *args 会把传入的 多余的 参数以一个元组的形式存放,元组的变量名就是args

print(x, y)

print(args)

func(1, 2, 3, 4, 5, 6) # x=1, y=2, args=(3,4,5)

# 输出结果:

1 2

(3, 4, 5, 6)

Tip:'args = (3, 4, 5, 6)',所以 '*args = *(3, 4, 5, 6) ',在调用函数时,也可以使用如下方式传值( * 是用来处理位置参数的,表示把后面的元组拆开)

func(1, 2, *(3, 4, 5, 6)) # 等同于 func(1, 2, 3, 4, 5, 6)

# 输出结果: # 结果一致

1 2

(3, 4, 5, 6)

- 按关键字定义的可变长度的实参

def func(x, y, **kwargs): # **kwargs 会把多传入的参数以 dict 形式存放

print(x, y)

print(kwargs)

func(1, 2, a = 3, b = 4, c = 5) # x=1, y=2, kwargs={'a': 3, 'b': 4, 'c': 5}

# 输出结果:

1 2

{'a': 3, 'b': 4, 'c': 5}

Tip:'kwargs = {'a': 3, 'b': 4, 'c': 5}',所以 ' **kwargs = **{'a': 3, 'b': 4, 'c': 5}',在调用函数时,也可以使用如下方式传值(** 表示关键字形式的实参,** 会将字典拆开,以关键字的形式传入)

func(1, 2, **{'a': 3, 'b': 4, 'c': 5} ) # 等同于 func(1, 2, a = 3, b = 4, c = 5)

# 输出结果: # 输出结果一致

1 2

{'a': 3, 'b': 4, 'c': 5}

接收任意长度、任意形式参数的函数

def func(*args,**kwargs):

pass

调用方式:

func(1, 2, 3) # 参数被 * 接受,转成元组,保存在 args 中

func(1, x=1, y=2) # 1 与上述一致,x=1, y=2 被 ** 接受,转成字典的形式,保存在kwargs中

# 前面已经提过,位置实参和关键字实参混合使用时,要注意关键字实参必须放在位置实参的后面~

命名关键字参数

定义函数时,* 号后面的形参就是 命名关键字参数,在调用时,命名关键字参数 必须要传值,而且必须要以关键字的形式传值,还有命名关键字并不常用~

def func(*, name, age): # name 和 age 就是 命名关键字参数

print(name)

print(age)

func(name = 'abc', age = 2) # name 和 age 必须以关键字的形式传值

命名关键字参数的使用示例。前面提过 默认形参必须放在位置形参后面,如下示例的函数定义中,name 和 age 都是命名关键字参数(不是默认形参,也不是位置形参),name 是命名关键字参数的默认值,所以如下示例中的函数定义方式并没有问题~

def func(*, name='kitty', age):

print(name)

print(age)

func(age=2)

.................^_^返回搜狐,查看更多

责任编辑:

python中def func是什么意思_Python的函数参数详解相关推荐

  1. python中sys模块是什么意思_python之sys模块详解

    python之sys模块详解 sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和我一起走进python的模块吧! sys模块的常见函数列表 sys.argv: 实现从程序外部向程序传 ...

  2. Python中json模块的load/loads方法实战及参数详解

    文章目录 前言 正文 1. loads方法与load方法的异同 1.1不相同点: 1.2 相同点 1.3 例子 2. 转换成Python对象 3. json.load(s)的参数 3.1 s参数 3. ...

  3. python中def fun()是什么意思_python学习函数

    函数 对象 模块 定义函数 def MyFirstFunction(): print('第一个函数') ······ 调用函数 MyFirstFunction() 加入参数 def MySecondF ...

  4. python中sys模块有什么用_Python sys模块用法详解

    sys 模块代表了 Python 解释器,主要用于获取和 Python 解释器相关的信息. 在 Python 的交互式解释器中先导入 sys 模块,然后输入 [e for e in dir(sys) ...

  5. 定义一个没有参数的函数、输出python3次_Python函数参数详解,三天让你掌握python,不再是小白

    原标题:Python函数参数详解,三天让你掌握python,不再是小白 引言 随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差 ...

  6. python传入参数加星号_Python 带星号(* 或 **)的函数参数详解

    1. 带默认值的参数 在了解带星号(*)的参数之前,先看下带有默认值的参数,函数定义如下: >> def defaultValueArgs(common, defaultStr = &qu ...

  7. python中的异常分类_列举 5 个 Python 中的异常类型以及其含义【面试题详解】

    今天爱分享给大家带来列举 5 个 Python 中的异常类型以及其含义[面试题详解],希望能够帮助到大家. BaseException +-- SystemExit +-- KeyboardInter ...

  8. python中count的作用_python count函数用法详解

    在python中可以使用"count()"函数统计字符串里某个字符出现的次数,该函数用于统计次数,其语法是"count(sub, start= 0,end=len(str ...

  9. python count函数代码_python count函数用法详解_后端开发

    fgetc函数的作用详解_后端开发 fgetc函数的作用是从指定文件读入一个字符,要求文件的打开方式必须是以读或读写的方式或者追加的方 式,只写方式是不能读的. 在python中可以使用"c ...

最新文章

  1. WP8.1学习系列(第十二章)——全景控件Panorama开发指南
  2. ISP、主机之间的通信方式、电路交换和分组交换、时延
  3. 虹康三期倒垃圾时间和理发地点
  4. Mac OS 查看系统版本信息/硬件信息的命令
  5. 昨晚通宵把服务器格式化,重新配置环境。
  6. dynamo方程怎么写_【简明自控】为什么特征方程如此重要
  7. 西双版纳真的适合养老吗?
  8. 树莓派教程 - 1.1 树莓派GPIO库wiringPi 硬件PWM可调频率
  9. 【学习笔记】一:JavaScript简介
  10. java复制文件的4种方式及拷贝文件到另一个目录下的实例代码
  11. 做SEO优化的目的到底是什么
  12. vue2.0引入antd
  13. 在安卓系统中集成YAHFA框架
  14. 满二叉树 / 真二叉树 / 完全二叉树 ~
  15. pos共识机制_PoS共识机制是什么?其优缺点分别是什么?
  16. 迅雷高速下载免安装 Kali Linux
  17. 怎么做自媒体?从这几步做起
  18. 分享我的Android蓝牙开源作品—HBluetooth
  19. 全网最全最细的CSDN【top1】接口测试工具Fiddler抓包工具总结
  20. 1604_linux环境下使用命令行把网页转换成pdf

热门文章

  1. java代码实现id_使用java代码实现简单的ID自增的工具类
  2. Visual C++ 6.0安装后首次编译运行程序报错如何解决
  3. Ubuntu虚拟机安装常用软件
  4. 手机页面html5 关闭窗口,JS关闭窗口或JS关闭页面的几种代码分享
  5. 在线计算机励志文案,励志简短文案 正能量励志文案
  6. 【OJ每日一练】1206 - 等差数列末项计算
  7. python中的逻辑判断
  8. java字符流和字节流写入读取文件
  9. 如何自学qt(7)——其他控件
  10. 一个合格的程序员除了编程语言还要学什么?