一、参数的定义

1、函数的参数在哪里定义

在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开

案列:

# 利用函数的参数,定义一个可以完成任意两个数相加的函数
def add_num(a,b):c = a + bprint(c)

2、带参数的函数调用:

函数定义了参数,那么调用函数的时候就需要传入参数

add_num(11,22)
#运行结果
33

上面的案列中,我们定义函数的时候在函数名后面的括号里定义的参数叫做形参,

而我们调用函数的时候传入的参数叫做实参,形参是用来接收实参的。

二、参数分类

上面我们说了形参和实参,那么形参和实参在在定义和调用的时候,根据形式不同有可以分为几类,

1、根据实参进行分类

实参:位置参数、关键字参数

1.1、位置参数(未命名参数)

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(a,b,c):print(a)print(b)print(c)add_num(11,22,33)
#运行结果
11
22
33

上述案列中,的函数的三个形参是按位置接收传入的实参,我们把这样的传参的形式叫做位置参数,

1.2、关键字参数(命名参数)

def func(a,b,c):print(a)print(b)print(c)add_num(11,c=99,b=33)
#运行结果
11
33
99

调用函数函数的时候,实参通过参数名指定传给某个形参,这样的传参形式,我们把它叫做关键字参数

注意:传参的时候先写位置参数,再写命名参数

2、根据形参进行分类

形参可以分为三类:必备参数、默然参数、不定长参数

2.1、必备参数:

在调用函数的时候必须要传的参数

def add(a,b):c=a+bprint(c)add(11,22)

上面函数中的a,b就是必备参数,在调用的函数的时候必须要传,不然就会报错

2.2、默认参数(缺省参数):

调用函数的时候可以传可以不传,不传就用默认值

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(a,b,c=99):print(a)print(b)print(c)
​
func(11,22,33)
print('-----------')
func(55,66)
​
#运行结果:
11
22
33
---------------
55
66
99

通过上述案列中我们可以发现,第一次调用的时候,我们传入了三个参数,c打印出来的是我们传入的值,第二次只传入了两个参数,这个时候c打印出来的是我们定义的时候给它设置的默认值

注意:带有默认值的参数一定要位于参数列表的最后面。

2.3、不定长参数*args和 **kwargs

调用函数的时候可以传0个或者多个

2.3.1、*args:接收多传入的位置参数,以元祖的形式保存

def func(*args):print(args)
func(33,44,55,66,77)
func(*(33,44,55,66,77))#运行结果
(33,44,55,66,77)
(33,44,55,66,77)

*args,args接收的是一个元祖;

调用的时候可以直接传入:func(33,44,55,66,77),

也可以可以先组装list或tuple,再通过*拆包传入:func(*(33,44,55,66,77));

2.3.2、**kwargs:接收多传入的关键字参数,以字典的形式保存

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func(**kwargs):print(kwargs)
func(e=33,h=44,f=55,d=66,c=77)
func(**{'e':33,'h':44,'d':66,'c':77})
#运行结果
{'e': 33, 'h': 44, 'f': 55, 'd': 66, 'c': 77}
{'e': 33, 'h': 44, 'f': 55, 'd': 66, 'c': 77}

**kwargs,kw接收的是一个字典;

关键字参数既可以直接传入:func(11,22,e=33,h=44,f=55,d=66,c=77)

也可以先组装dict,再通过**拆包传入:func(**{'e':33,'h':44,'d':66,'c':77})

注意点:使用*args**kwargs是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

在python函数中参数分类的详细教程相关推荐

  1. python 函数中参数的传递方式(三分钟读懂)

    python 函数中参数的传递方式 第一种:指定默认值 def fn1(a = 1): # 函数中的(a)是形参 和外面的变量无关 (这里的是定义函数中指定默认值)print("fn1&qu ...

  2. python函数设置默认参数_深入讲解Python函数中参数的使用及默认参数的陷阱

    这篇文章主要介绍了Python函数中参数的使用及默认参数的陷阱,文中将函数的参数分为必选参数.默认参数.可变参数和关键字参数来讲,要的朋友可以参考下 C++里函数可以设置缺省参数,Java不可以,只能 ...

  3. python函数定义中参数列表里的参数是_详解Python函数中参数带星号是什么意思

    函数的参数使用除了常规的位置参数和关键字参数外,还支持可变个数的函数参数,这种支持可变个数的参数方法称为参数收集,对应的参数称为收集参数. 一.参数收集的定义 Python的函数支持可变不定数量的参数 ...

  4. python默认参数只被解释一次_深入讲解Python函数中参数的使用及默认参数的陷阱...

    C++里函数可以设置缺省参数,Java不可以,只能通过重载的方式来实现,python里也可以设置默认参数,最大的好处就是降低函数难度,函数的定义只有一个,并且python是动态语言,在同一名称空间里不 ...

  5. python中参数前面加星号是什么意思_详解Python函数中参数带星号是什么意思

    函数的参数使用除了常规的位置参数和关键字参数外,还支持可变个数的函数参数,这种支持可变个数的参数方法称为参数收集,对应的参数称为收集参数. 一.参数收集的定义 Python的函数支持可变不定数量的参数 ...

  6. Python函数中参数前带*是什么意思?

    有些函数的参数前带有*号,有的甚至有两个*号,它们代表什么意思的? 参数前面加上*号 ,意味着参数的个数不止一个,另外带一个星号*参数的函数传入的参数存储为一个元组(tuple),带两个*号则是表示字 ...

  7. Python函数中参数* 和 ** 的区别

    * 函数接收参数为元组 例如 def myfun(*args): #相当于 def myfun(1,2,3)    ==> args 就相当于(1,2,3) for a in args: pri ...

  8. python函数中参数前面的*和**的含义

    def func(a,b=1,*args,**kwargs):      #单星号(*):*agrs将所以参数以元组(tuple)的形式导入,双星号(**):**kwargs将参数以字典的形式导入 p ...

  9. python中形参可以使用中文定义嘛_python中函数的参数分类

    详解python函数的参数 一.参数的定义 1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: ...

最新文章

  1. 企业融入租时代 谋求轻资产化高效运营
  2. Visual Studio 2005 Web Application Projects 正式推出
  3. java为何是跨平台语言,以及java如何运行
  4. 移动端web设计尺寸_移动端页面设计规范尺寸大起底
  5. PHP webshell
  6. C语言十五位正整数相加,二个超长正整数的相加
  7. 页面查询条件选框被隐藏的问题
  8. MFC模拟360悬浮窗加速球窗口
  9. linux cad转pdf文件怎么打开,PDF猫CAD转PDF官方版
  10. 终于进了阿里,记录一下我作为一名测试员磕磕碰碰的三个月找工作经历...
  11. 火箭发射:点击率预估界的“神算子”是如何炼成的?...
  12. DELL服务器 一般内存模块安装原则
  13. C语言atan2()函数:求y/x的反正切值
  14. 2021-2027全球及中国G Suite销售软件行业研究及十四五规划分析报告
  15. 你还不会用python进行数据分析吗
  16. Python---按字典序输出集合的所有非空子集
  17. Git、GitLab这辈子的错都报完了 You have not concludedUnlink of file、 Pulling is not possible、Your local changes
  18. [Python私活案例]24行代码,轻松赚取400元,运用Selenium爬取39万条数据
  19. 2022“杭电杯”中国大学生算法设计超级联赛(1)1003 Backpack个人题解
  20. java中将html特殊字符作转义和取消转义操作

热门文章

  1. 商城项目实战2-登录模块的实现
  2. Vue中正确使用jQuery的方法
  3. SpringBoot之使用Scheduled做定时任务
  4. LBaaS 实现机制 - 每天5分钟玩转 OpenStack(125)
  5. Racket 6.7最新版本:提供对Android App的支持及改进的REPL等等
  6. MySQL Windows ZIP 免费安装和启动设置
  7. set Autotrace的使用
  8. 对称加密(4) NET对称加密实践
  9. 陆续放出各种安装及配置文档
  10. 打开新窗口的js代码