四类参数
-普通参数
-默认参数
-关键字参数
-收集参数
关键字参数开始
-语法
def fuc(p1=v1,p2=v2·······):
fuc_body
-调用函数
fuc(p1=value1,p2=value2·····)
好处:
-这么写,不容易混淆
-使用关键字参数,可以不考虑参数位置
关键字参数案例
def stu(name,age,addr):
print('I am a stu')
print('I am {0},I am {1} old, I am stay in {2}'.format(name,age,addr))
n = 'wcx'
a = 18
ad = '光福'
stu(age=a, name=n, addr=ad)
收集参数
-把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
-语法
def fuc(*args):
fuc_body
-调用函数
fuc(p1,p2,p3·····)
-参数名args约定俗称
-args前的星号代表是一个收集参数,一个星号代表list
收集参数之关键字收集参数
-语法
def fuc(**kwargs):
fuc_body
-调用参数
fuc(p1=v1,p2=v2·······)
-参数名kwargs约定俗成
-调用的时候,把多余的关键字参数放入kwargs
-两个星号需要按字典格式访问
-案例
def stu(**kwargs):
print(type(kwargs))
for k,v in kwargs.items():
print(k,"---",v)
stu(name='jjc', age=18, addr='苏州')
收集参数混合调用的顺序问题
-收集参数,关键字参数,普通参数可以混合使用
-使用规则就是,普通参数,关键字参数优先
-定义的时候一般找普通参数,关键字参数,收集参数tuple,收集参数dic
收集参数混合调用案例
def stu(name,age,hobby="none",*args,**kwargs)
print("自我介绍一下,我叫{0},我{1}岁了".format(name,age))
if hobby=="none":
print("我没有爱好")
else:
print("我的爱好是{0}".format(hobby))
print("*" * 20)
for i in args:
print(i)
print("#" * 20)
for k,v in kwargs.items():
print(k,"---",v)
name="jjc"
age=18
stu(name,age,"wcx","wxx",hobby="游泳",hobby1="dafeiji")
收集参数的解包问题
- 把参数放入list或dikt中,直接把list/dikt的值放入收集参数中
- 语法:参看案例
def stu(*args):
print("介绍一下")
for i in args:
print(i)
l=["jjc","wcx"]
stu(*l)
#此时的调用,就需要解包符号,即调用的时候前面加星号
#同里对dikt解包,调用时前面加两个星号
返回值
- 函数跟过程的区别
- 有无返回值
- 需要用return显示返回内容
- 如果没有返回,则默认返回none
返回值示例
def fuc_1():
print("有返回值")
return 1
def fuc_2():
print("没有返回值")
f1=fuc_1()
print(f1)
f2=fuc_2()
print(f2)
函数文档
- 函数的文档作用就是对当前函数提供使用相关的参考信息
- 文档的写法
- 在函数开始的第一行使用三字符串定义符
- 一般具有特定格式
- 文档查看
- 使用help函数,help(fuc)
- 使用__doc__
参看案例
def stu(name,age,*args):
'''
这是文档
'''
print('jjc')
help(stu)
print(stu.__doc__)