python基础学习-函数基础

时间:2021-05-11 18:37:12
#__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)
#如果默认参数的值是一个可变数据类型
#那么每次调用函数的时候
#如果不传值就是共用这个数据类型的资源