参数分类
-普通参数
-默认参数
-关键字参数
-收集参数
-普通参数
-定义的时候直接定义的变量名
-调用的时候直接把变量或者值放入指定位置
def 函数名(参数1, 参数2, ...):
函数体
#调用
函数名(value1, value2, ......)
#调用的时候,具体值参考的是位置,按位置赋值
-默认参数
-形参带有默认值
-调用的时候,如果没有对应的形参赋值,则使用默认值
def func_name(p1=v1, p2=v2......):
func_block
#调用1
func_name()
#调用2
value1 =100
value2 = 200
func_name(value1, value2)
-关键书参数
-语法
def func_name(p1=v1,p2=v2......)
func_body
调用函数:
func_name(p1=value1, p2=value2......)
-比较麻烦,但也有好处
-不容易混淆,一般实参和形参只是按照位置一一对应即可,容易出错
-使用关键字参数,可以不考虑参数的位置
def reg(name, age, gender="male"):
if gender == "male":
print("{0} is {1},and he is a good student".format(name, age))
else:
print("{0} is {1},and she is a good student".format(name, age))
reg("xcl", 18, 'female')
reg("lxc", 18)
-收集参数
-语法
def func_name(*args):
func_body
按照list使用方式访问args得到传入的参数
#调用
func_name(p1,p2,p3,...)
-参数名args不是必须这么写的,但是,我们推荐直接使用args,约定俗成
-参数args前需要有星号
-收集参数可以和其他参数共存
def stu(*args):
print("自我介绍下:")
print(type(args))
for item in args:
print(item)
p = "liyang"
stu(p)
stu(p, 18)
-收集参数的关键字收集参数
-把关键字参数按字典格式手机参数
-语法:
def func_name(**kwargs):
func_body
#调用
func_name(p1=v1, p2=v2, p3=v3......)
-kwargs一般约定俗成
-调用的时候,把多余的关键字参数放入kwargs
-访问kwargs需要按字典格式访问
def stu(**kwargs):
print("自我介绍下:")
print(type(kwargs))
for k, v in kwargs.items():
print(k, ":", v)
stu(name="liyang", age=18, adr="bj", lover="liyangynag", work="Teacher")
print("*" * 20)
收集参数混合调用的顺序问题
-收集参数,关键字参数,普通参数可以混合使用
-使用规则就是,普通测试和关键字参数优先
-定义的时候一般普通参数,关键字参数, 收集参数tuple, 收集参数dict
#返回值
-函数和过程的区别
-有无返回值
-需要用return显示返回内容
-如果没有返回,则默认返回None
-推荐写法,无论有无返回值,最后都有以return结束
def func_1():
print("有")
return 1
def func_2():
print("没有")
f1 = func_1()
print(f1)
f2 = func_2()
print(f2)
运行结果:
有
1
没有
None
#函数文档
-函数的文档的作用是对当前函数使用相关的参考信息
-文档写法:
-在函数的内部开始第一行使用三引号字符串
-一般具有特定的格式
-参看案例
-文档查看
-使用help函数,形如help(func_name)
-使用__doc__,查看案例
def stu(name, age):
'''
这是文档的内容
:param name: 表示学生名字
:param age: 表示学生的年龄
:return: 此函数没有返回值
'''
pass
print(help(stu))
print("*" * 20)
print(stu.__doc__)
运行结果:
Help on function stu in module __main__:
stu(name, age)
这是文档的内容
:param name: 表示学生名字
:param age: 表示学生的年龄
:return: 此函数没有返回值
None
********************
这是文档的内容
:param name: 表示学生名字
:param age: 表示学生的年龄
:return: 此函数没有返回值