day21

函数的引入

函数--》工具(需要用的时候采用,提前造)

需要用函数的时候,拿来用就行了,提前写/复制粘贴

函数不会改变某一个功能的代码,它制作了一件事情--》封装(接口)让代码更加简洁

函数的定义

使用工具(函数)之前--》必须得造一个工具--》即定义函数

定义方式

'''
def 函数名(等同于变量名)():
    """对函数(工具)的描述信息"""
    代码块
'''

函数定义的特性

函数定义过程,只检测语法,不执行代码

调用阶段,会执行代码

定义函数的三张形式

空函数

def login():
    pass

有参函数

def guess(x,y):
    if x > y:
        print(x)
    else:
        print(y)
guess(10,1)

无参函数

def guess():
    x = 10
    y = 1
    if x > y:
        print(x)
    else:
        print(y)

函数的调用

定义完函数后

在用的时候,函数名加括号如guess()就能直接调用了

函数的参数

形参

定义函数阶段的产物,具有接收实参的作用,具有描述一益

位置形参

从左到右依次接收实参的值

默认形参

1.如果你不给,使用默认值;如果调用的时候传值,使用传的值

2.默认形参必须得放在位置形参后面

实参

调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)

位置实参

从左到右依次给位置形参传值,一一对应,形参有多少个,实参也必须有多少个

关键字实参

1.位置实参必须卸载关键字实参的前面

2.按照形参名给形参传值(使用情况,基本为0)--》函数的参数一般0-3个,尽量不要超过3个

可变长参数

可变长形参

def min_2(x, y):
    if x > y:
        return y
    else:
        return x


def min_4(a, b, c, d):
    res1 = min_2(a, b)
    res2 = min_2(c, d)
    return min_2(res1, res2)


def min_8(a, b, c, d, e, f, g, h):
    res1 = min_4(a, b, c, d)
    res2 = min_4(e, f, g, h)
    return min_2(res1, res2)


def min_10(a, b, c, *lt):  # *lt,把所有传过来的实参全部接收,并且以元组的形式存储
    print(lt)
    a, b, c, d, e, f, g, h, i, j, *_ = lt
    print(_)
    res1 = min_8(a, b, c, d, e, f, g, h)
    res2 = min_2(i, j)
    return min_2(res1, res2)


res = min_10(1, 2, 3, 4, 5, 6, 7, -1, 9, 10, 11, 12, 13, 1, 1, 1, 1, 1, 1, 1, 11,
             1, )  # *,相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参
print(res)

可变长实参

def min_2(x, y):
    if x > y:
        return y
    else:
        return x


def min_4(a, b, c, d):
    res1 = min_2(a, b)
    res2 = min_2(c, d)
    return min_2(res1, res2)


def min_8(a, b, c, d, e, f, g, h):
    res1 = min_4(a, b, c, d)
    res2 = min_4(e, f, g, h)
    return min_2(res1, res2)


def min_10(a, b, c, d, e, f, g, h, i, j):
    print(a, b, c, d, e, f, g, h, i, j)
    res1 = min_8(a, b, c, d, e, f, g, h)
    res2 = min_2(i, j)
    return min_2(res1, res2)


lt = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = min_10(*lt)  # *,相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参
print(res)
posted @ 2019-09-19 20:55  Isayama  阅读(136)  评论(0编辑  收藏  举报