5-函数2

四类参数

-普通参数
-默认参数
-关键字参数
-收集参数

关键字参数开始

-语法
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__)
posted @ 2019-01-15 22:46  Rener  阅读(129)  评论(0编辑  收藏  举报