位置参数

位置参数传递是最为简单的传递方式,按照函数参数的位置顺序逐个匹配传入,传入参数的个数必须与函数参数个数一致。

见示例1,根据位置顺序进行匹配,a,b,c分别赋值为2,3,4

示例1

def func(a,b,c):print("args:",a,b,c)if __name__ == "__main__":func(2,3,4) #输出结果 args: 2 3 4

关键字参数

通过关键字对变量进行赋值,可以对全部关键字进行赋值,这时候位置可以随意改变。见示例2,输出结果与示例1一致。

示例2

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(a,b,c):print("args:",a,b,c)if __name__ == "__main__":func(c=4,a=2,b=3) #输出结果 args: 2 3 4

也可以对部分关键字进行赋值,这属于位置参数和关键字参数的混用,有关键字的部分必须放在后面,见示例3

示例3

def func(a,b,c):print("args:",a,b,c)if __name__ == "__main__":func(2,c=4,b=3) #输出结果 args: 2 3 4

默认参数

有些函数参数提供了默认值,如果要使用,可不传入,如示例4

示例4

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(a,b,c=4):print("args:",a,b,c)if __name__ == "__main__":func(2,3) #输出结果 args: 2 3 4

如果不使用其定义的默认值,可自行传入,对其修改,如示例5

示例5

def func(a,b,c=4):print("args:",a,b,c)if __name__ == "__main__":func(2,3,5) #输出结果 args: 2 3 5

命名关键字参数

与普通关键字参数不同,命名关键字参数必须用进行区分,后面的参数必须通过关键字传入,见示例6

示例6

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(a,b,*,c):print("args:",a,b,c)if __name__ == "__main__":func(2,3,c=4) #输出结果 args: 2 3 4

如果不按照关键字传入,则报TypeError的错误,见示例7

示例7

def func(a,b,*,c):print("args:",a,b,c)if __name__ == "__main__":func(2,3,4)
#TypeError: func() takes 2 positional arguments but 3 were given

可变参数

如果定义的函数中带有*args或者**args都是属于可变参数方式进行参数传入
*args是以元组的方式收集不匹配的的位置参数,见示例8

示例8

def func(a,b,*c):print("args c:"c)
if __name__ == "__main__":func(2,3,4,5,6) #输出结果 args c: (4, 5, 6)

在示例8中,有a,b,c3个形式参数,但是按照位置参数的形式传入了5个参数,最后的3个参数都按照元组的形式(4,5,6)传给了c。

定义函数时候,*args必须放在位置参数后面,否则报TypeError的错误,见示例9。

#示例9
def func(a,*c,d):print("args c:",c,d)if __name__ == "__main__":func(2,3,4,5,6)
#TypeError: func() missing 1 required keyword-only argument: 'd'

**args是以字典的形式收集不匹配的位置参数,仅对关键字参数传入有效,见示例10

示例10

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(a,b,**c):print("args c:",c)if __name__ == "__main__":func(2,3,c=4,d=5,e=6)#输出结果 args c: {'c': 4, 'd': 5, 'e': 6}

在示例10中,参数c收集了以字典的形式收集了后面的3个参数。跟*args一样,函数中的**args必须放在位置参数后面。

再看一个传参方式混合使用的的例子,见示例11。

示例11

def func(a,*b,c=None,**d):print("a:",a)print("b:",b)print("c:",c)print("d:",d)if __name__ == "__main__":func(2,3,4,c=4,d=5,e=6)

输出结果如下所示:

a: 2
b: (3, 4)
c: 4
d: {'d': 5, 'e': 6}

从示例11可见,2赋值给a,b以元组的形式收集了3,4,c=4修改了默认参数的值,d以字典的形式收集了4,5,6

前面所说的args或者**args是出现在函数定义中的,其实在参数传入时候也可以使用使用和**,他们会数据进行解包。如示例12和示例13

示例12

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(a,b,c):print("a:",a,",b:",b,",c:",c)
if __name__ == "__main__":a=(2,3,4)func(*a)#输出结果 a: 2 ,b: 3 ,c: 4

示例13

def func(a,b,c):print("a:",a,",b:",b,",c:",c)
if __name__ == "__main__":a={'a':1,'b':2,'c':3}func(**a)#输出结果 a: 2 ,b: 3 ,c: 4

Python函数传参方式超级大汇总相关推荐

  1. assert函数_悉数Python函数传参的语法糖

    TIOBE排行榜是程序开发语言的流行使用程度的有效指标,对世界范围内开发语言的走势具有重要参考意义.随着数据挖掘.机器学习和人工智能相关概念的风行,Python一举收获2018年年度语言,这也是Pyt ...

  2. 指针数组的初始化和遍历,并且通过for循环方式、函数传参方式进行指针数组的遍历...

    1 /************************************************************************* 2 > File Name: messa ...

  3. Python 函数传参详解

    Python位置传参 位置传参也称为必备参数,必须按照正确的顺序将参数传递到函数中,定义函数时的参数与实际传入的参数数量必须保持一致 正常如下: def par(A,B):return A+B pri ...

  4. 【python教程入门学习】Python函数定义及传参方式详解(4种)

    这篇文章主要介绍了Python函数定义及传参方式详解(4种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.函数初识 1.定 ...

  5. 2021-01-14python函数传参是传值还是传引用? 参数若是简单类型是传值 若是对象类型则是传引用,python是兼容两者传参方式的

    python函数传参是传值还是传引用? 首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题. ...

  6. 『Python × C++』函数传参机制学习以及对比

    一.Python函数传参 在python中,函数传参实际上传入的是变量的别名,由于python内在的变量机制(名称和变量值相互独立),只要传入的变量不可变(tuple中的元素也要是不可变的才行),那么 ...

  7. python函数传值还是地址_python中给函数传参是传值还是传引用

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

  8. axios链接带参数_axios常见传参方式

    1:get请求 一般发送请求是这么写 axios.get('/user?id=12345&name=user') .then(function (res) { console.log(res) ...

  9. 函数传参的三种方式(详细)

    最近又碰到了函数传参的问题,每次碰到都会让作者疑惑一段时间,这次干脆总结整理一下,顺便让自己更加透彻的了解传参的问题.咱们开始吧. c语言中,函数调用时传送给形参表的实参必须与形参有三个一致:类型.个 ...

最新文章

  1. 安装Android SDK需要选择哪些,开始为Android开发,我应该选择安装哪些SDK?
  2. JQuery的ready函数与JS的onload的区别详解
  3. LeetCode 980. 不同路径 III(DFS+回溯)
  4. html-下拉框、文本域、文件域
  5. android 自定义水波纹点击效果Button
  6. 哲学家都在干些什么_哲学家们都干了些什么——哲学是什么
  7. dev.c drv.c bus.c
  8. 将字符转换成带有圆圈的字符
  9. window10保存文件时提示联系管理员_东芝2000AC扫描文件到远程域共享服务器
  10. DESCRIBE TABLE
  11. html转义字符 am,html转义字符如何通过代码识别方法
  12. lpt监控安装_LPT说明书
  13. java-pdf-itext7、itextpdf 生成pdf 文档 定制票据打印
  14. Android系统直接输出Excel文档
  15. 累加器实验总结计算机组成,计算机组成原理累加器实验报告
  16. java垃圾回收代码
  17. EPI晶片的表面微观粗糙度对湿化学处理的依赖性
  18. linux中ext3多重索引的原理,Ext3日志原理
  19. 并发编程后记_什么是后记? 它与我的打印机有什么关系?
  20. 经典数值RPG游戏——《魔塔》调研报告

热门文章

  1. 教 Chatbot 生成更有营养的对话
  2. 《Android 应用案例开发大全(第二版)》——2.6节绘制相关类
  3. (原+转)ubuntu14中结束多个caffe进程中的某个
  4. Linux集群服务知识点总结及通过案例介绍如何实现高性能web服务
  5. 源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护
  6. modelsim-altera
  7. Maven教程初级篇01: 简介
  8. c语言Winmain 错误,C语言编译错误 undefined reference to `WinMain@16'
  9. Oracle里default什么意思,ORACLE中默认值default的使用方法.doc
  10. python二级考试答案分值_2018全国计算机二级考试内容 科目分值设置