四类参数
- 普通参数
- 默认参数
- 关键字参数
- 收集参数
关键字参数开始
-
语法
def func(p1=v1,p2=v2… …):
func_body调用函数: func(p1=value1,p2=value2... ...)
# 关键字参数案例
def stu(name,age,addr):
print("I am a student")
print("我叫{0}, 我今年{1}岁了,我住{2}".format(name, age, addr))
n = "jingjing"
a = 18
addr = "我家"
stu(n, a, addr)
I am a student
我叫jingjing, 我今年18岁了,我住我家
收集参数
-
把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
-
语法
def func(*args):
func_body
按照list使用方式访问args得到传入的参数调用: func(p1,p2,p3... ...)
# 收集参数代码
# 函数模拟一个学生自我介绍,内容不清楚
def stu(*args):
print("Hello 大家好")
print(type(args))
for item in args:
print(item)
stu("dwijwiw","ewewew","wewewe")
Hello 大家好
<class 'tuple'>
dwijwiw
ewewew
wewewe
# 收集参数案例
# 说明收集参数可以不带任何实参调用,此时收集参数为空tuple
stu()
Hello 大家好
<class 'tuple'>
收集参数之关键字收集参数
-
把关键字参数按照字典格式存入收集参数
-
语法
def func(**kwargs):
func_body调用: func(p1=v1,p2=v2......)
-
访问kwargs按照字典格式访问
# 收集参数案例
# 自我介绍
# 调用的时候需要使用关键字参数调用
# 也可以为空
def stu(**kwargs):
for k,v in kwargs.items():
print(k,"---",v)
stu(name="liuying",age=18,addr="dwhwjw")
print("*" * 20)
name --- liuying
age --- 18
addr --- dwhwjw
********************
收集参数混合调用的顺序问题
- 收集参数,关键字参数,普通参数可以混合使用
- 使用规则就是,普通参数和关键字参数优先
- 定义的时候一般找普通参数,关键字参数,收集参数tuple,收集参数dict
# 收集参数混合调用案例
# stu模拟一个学生的自我介绍
def stu(name,age,*args,hobby="没有",**kwargs):
print("大家好")
print("我叫{0},我今年{1}大了".format(name,age))
if hobby == "没有":
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 = "liuying"
age = 19
# 调用的不同格式
stu(name, age)
stu(name, age, hobby="游泳")
stu(name, age, "wangxiaojing", hobby="游泳", hobby2="djsid", hobby3="ahdaaj")
大家好
我叫liuying,我今年19大了
我没有爱好
********************
####################
大家好
我叫liuying,我今年19大了
我的爱好是游泳
********************
####################
大家好
我叫liuying,我今年19大了
我的爱好是游泳
********************
wangxiaojing
####################
hobby2 --- djsid
hobby3 --- ahdaaj
收集参数的解包问题
- 把参数放入list或者字典中,直接把list/dict的值放收集参数中
- 语法: 参看案例
- 对list进行解包,使用一个* stu(*l)
- 对dict进行解包,需要两个* 进行解包stu(**l)。
# 收集参数解包问题
def stu(*args):
print("hahahaha")
for i in args:
print(i)
stu("liuying","sudhusdh",19,202)
l = list()
l.append("liuying")
l.append(20)
l.append(230)
stu(l)
hahahaha
liuying
sudhusdh
19
202
hahahaha
['liuying', 20, 230]
返回值
- 函数和过程的区别
- 有无返回值
- 需要用return显示返回内容
- 如果没有返回,则默认返回None
- 推荐写法,无论有无返回值,最后都以return结束
函数文档
-
函数文档的作用是对当前函数使用提供相关的参考信息
-
文档的写法:
- 在函数内部开始第一行使用三字符串定义符
- 一般具有特殊格式
- 参看案例
-
文档查看
- 使用help函数,形如help(func)
- 使用_doc_,查看案例
# 文档案例
# 函数stu是模拟一个学生的自我介绍的内容
def stu(name, age, *args):
'''
这是文档
这是文档
这是文档
'''
print("this is hanshu stu")
# 查看函数文档
help(stu)
stu.__doc__
Help on function stu in module __main__:
stu(name, age, *args)
这是文档
这是文档
这是文档
'\n 这是文档\n 这是文档\n 这是文档\n '