#__author:"Feng Lin" #date: 2018/8/27 #返回值的三种情况 # 一.没有返回----返回None # 不加 return 默认返回None # return 执行到这里跳出函数体 # return None 不常用,没意义 def my(): return print(my()) def my(): return None print(my()) def you(): print("hello") return print("what") print(you()) # 二.返回一个值 # 可以返回任何数据类型 # 只要返回就可以接收到 # 如果一个程序有多个return,只执行第一个 def me(): print("hi") return return print(me()) # 三.返回多个值 # 多个返回值用多个变量接收,有多少返回值就用多少变量接收 # 用一个变量接收所有返回值会得到一个元组 # def my_list(): return 1,2,3,4 a,b,c,d=my_list() print(a,b,c,d) def tup(): return 1,3,5,6 a=tup() print(a) #参数 # 没有参数 # 有一个参数 # 有多个参数 def mysum(a,b): print(a,b) sum=a+b return sum res=mysum(1,2) print(res) #站在实参的角度上 #1.按照位置传参 #2.按照关键字传参 #3.混合1和2的传参:但是必须先按照位置传参,再按照关键字传,不能给同一个变量传多个值 #站在形参的角度上 #位置参数必须传,有几个参数就必须传几个值 # #位置参数 #默认参数 def ff(default=1): print("default is %s" % default) ff() #动态参数:可以接收任意参数 # 1.*args:接收的是按照位置传参的值,组织成一个元组 # 2.**kwargs:接收的是按照关键字传参的值,组织成一个字典 #顺序:位置参数,*args,默认参数,**kwargs def func(*args): print(args) func(1,3,3,5,[1,2,3,4]) #动态参数的传参方式 def func1(*args): print(args) l=[1,2,3,4,5,6] func1(*l) def func2(**kwargs): print(kwargs) d={'k':'v','k1':'v1'} func2(**d) #函数的注释 def func(): ''' 这个函数实现啥功能 参数1: 参数2: :return: 是字符串或者列表的长度 '''
#默认参数的灵活使用 def data(k,v={}): v[k]='v' print(v) data(1) data(2) data(3) #如果默认参数的值是一个可变数据类型 #那么每次调用函数的时候 #如果不传值就是共用这个数据类型的资源