我的python学习笔记之函数参数

python中函数参数的使用非常灵活,正因为灵活也导致刚接触python会觉得凌乱,搞不清楚。函数无非两种场景,定义和调用。形参是定义函数的时候,实参是调用函数时传给函数的参数。

为了方便自己记忆,现把python函数参数的使用总结如下:

写文章不容易,转载请注明出处。

定义函数:

#情景一:固定个数的形参
def show1(a, b):
    print a,b

'''
情景二:任意参数整合之元组,此时表示函数可以接收任意个参数
我们知道,如果定义函数时指定了3个位置参数,都没有默认值,那么,在调用函数的时候,我们必须传递3个值给函数,否则会报错。
show2函数则可以让函数接收任意个参数,包括0个;show3函数可以接收大于等于2个参数。
'''
def show2(*a):
    print a
#第一个值和第二个值会自动匹配给形参a和形参b,而多余的参数才会整合成一个元组,即c;注意顺序,下文中有说明。
def show3(a,b,*c):
    print a,b,c
    
#情景三:任意参数整合之字典,字典对应的是关键字参数,注意顺序,下文中有说明。
def show4(**a):
    print a
#第一个值和第二个值会自动匹配给形参a和形参b,而多余的参数才会整合成一个字典,即c;注意顺序,下文中有说明。
def show5(a,b,**c):
    print a,b,c

#情景四:默认参数,调用函数时传参数量可以少于3个,但只能是少第三个,注意顺序,位置参数必须全部在前面,设置默认值的参数必须全部在后面;注意顺序,下文中有说明。
def show6(a,b,c=0):
     print a,b,c

#情景五:混合使用,注意顺序,下文中有说明。
def show7(*a,**b):
    print a,b,c
def show8(a, b = 0, *c,**d):
    print a,b,c

定义函数时,形参书写顺序:
默认值参数必须在所有不带默认值的参数的后面
------>带星号的参数必须在所有不带星号的参数(包括默认值参数)的后面
------>带两个星号(**)的参数必须在带一个星号(*)的参数的后面;

调用show1函数:

#show1函数专用
vars1 = ["Lily", "Lucy"]
vars2 = {"a": "Lily", "b": "Lucy"}
var1 = "Lily"
var2 = "Lucy"

#调用方法1:常量,位置参数传参,需要注意传参顺序;
show1("Lily", "Lucy")

#调用方法2:变量,位置参数传参,需要注意传参顺序;
show1(var1, var2)

#调用方法3:关键字参数,关键字参数是调用函数时的一种传参方式,且关键字参数的变量名必须跟定义函数时写的形参名称一样,比如,定义函数的时候是形参a/b,那么这里使用关键字就必须使用a/b,而不能使用x/y等其他名称;而默认参数是定义函数时的概念;关键字参数不需要关心传参顺序。
show1(a = "Lily", b = "Lucy")
show1(b = "Lucy", a = "Lily")
show1(a = var1, b = var2)
show1(b = var2, a = var1)

#调用方法4:参数解包之列表传参,对应位置参数,此处参数数量必须跟定义函数的时候指定的一样,否则会报错;
show1(*vars1)

#调用方法5:参数解包之字典传参,对应关键字参数,实参名称必须和形参名称一致,比如形参是a/b,传入的字典keys必须就是a/b,不能是x/y;同时,此处参数数量必须跟定义函数的时候指定的一样,否则会报错;
show1(**vars2)

上述调用执行结果,共8个输出,也就说明是OK的;
show1函数调用执行结果

调用show2函数和show3函数:

xs = ["Jack", "Lily", "Lucy", "LiLei"]
ys = {"a": "Lily", "b": "Lucy", "c": "LiLei", "d": "Jack"}
w = "Jack"
x = "Lily"
y = "Lucy"
z = "LiLei"

show2(w,x,y,z)
输出:('Jack', 'Lily', 'Lucy', 'LiLei')
show3(w,x,y,z)
输出:Jack Lily ('Lucy', 'LiLei')

show2(*xs)
输出:('Jack', 'Lily', 'Lucy', 'LiLei')
show3(*xs)
输出:Jack Lily ('Lucy', 'LiLei')

show2(**ys)
输出:
字典传参其实利用的关键字参数原理,而show2函数定义的时候,使用的是*a,不存在位置参数a,所以这里会报错;
Traceback (most recent call last):
  File "./paras.py", line 42, in <module>
    show2(**ys)
TypeError: show2() got an unexpected keyword argument 'a'
show3(**ys)
输出:a,b都正常传参,函数show3没有定义c、d形参;所以这里报错提示没有关键字c。
Traceback (most recent call last):
  File "./paras.py", line 42, in <module>
    show3(**ys)
TypeError: show3() got an unexpected keyword argument 'c'

小结:
函数show4-show8不再贴图,调用函数时的传参方法都在【调用show1函数】部分,函数定义时的参数写法都包含在上文中。定义函数和调用函数是两个一定程度上相互独立的事情,尤其是函数参数传递赋值尤其如此。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python学习笔记PDF是一种学习Python编程语言的资料形式,它包含了Python的基本语法、数据类型、流程控制、函数、模块、面向对象编程、异常处理等相关内容。以下是关于Python学习笔记PDF的详细内容说明: 1. 基本语法:Python学习笔记PDF中,首先介绍了Python的基本语法,例如如何定义变量、数据类型的使用(包括整数、浮点数、字符串、列表、元组、字典等),以及如何进行算术运算、比较运算和逻辑运算。 2. 流程控制:Python学习笔记PDF中,进一步介绍了流程控制的知识,包括条件判断和循环控制。条件判断主要是通过if语句进行判断执行不同的代码块,而循环控制则通过while循环和for循环来实现重复执行一段代码。 3. 函数:Python学习笔记PDF中,对函数的概念和使用进行了详细的解释。函数是代码的封装和组织方式,通过定义函数可以提高代码的重用性和可读性。学习者将了解到如何定义函数、调用函数函数参数的传递以及函数返回值的使用。 4. 模块:Python学习笔记PDF中,介绍了Python中的模块和包的概念。模块是一组函数、类或变量的集合,以.py文件的形式存在,可以被其他程序调用和使用。学习者将学习如何导入模块、使用模块中的函数和变量。 5. 面向对象编程:Python学习笔记PDF中,对面向对象编程进行了系统的讲解。面向对象编程是一种以对象为基本单位的编程思想,通过定义类和对象,可以更好地组织和管理代码。学习者将了解如何定义类、创建对象、封装、继承和多态的使用。 6. 异常处理:Python学习笔记PDF中,对异常处理进行了介绍。异常是程序在运行过程中出现的错误,通过捕获和处理异常,可以更好地控制程序的执行流程并提高程序的健壮性。学习者将了解到如何使用try-except语句来捕获和处理异常。 总之,Python学习笔记PDF是一份全面而详细的学习Python编程语言的资料,通过学习该资料,学习者将获得扎实的Python编程基础,并能够运用Python进行简单的程序开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值