第十天

函数

函数--->工具(需要用的时候才用,提前造)
需要用函数的时候,拿来用就行了,需要提前写好
函数不会改变某个功能的代码,它只做了一件事情,封装(接口),只会让你的代码更加简洁
内置方法就是一个个函数,别人帮你写好的

函数的定义

'''def 函数名(等同于变量名)():

​ """"对函数(工具)的描述信息"""

​ 代码块'''

ef guess():
    """给定两个数,打印较大的数"""
    x = 30
    y = 20
    if x>y:
        print(x)
    else:
        print(y)
print(guess.__doc__)  #给定两个数,打印较大的数

定义函数的三种形式

空函数

def func():
    pass
# 写项目的时候可以先用空函数把框架搭建出来,再实现功能

有参函数

def guess1(x,y):
    """给定两个数,打印较大的数"""
    if x>y:
        print(x)
    else:
        print(y)
guess1(20,30)

无参函数

def guess():
    """给定两个数,打印较大的数"""
    x = 30
    y = 20
    if x>y:
        print(x)
    else:
        print(y)

函数的调用

函数的调用就是在使用函数

函数名加() 加()就能调用函数,没有为什么

函数在不被调用的时候不会运行,运行只能看到有没有语法错误

def guess1():
    """给定两个数,打印较大的数"""
    x = 30
    y = 20
    if x>y:
        print(x)
    else:
        print(y)
guess1() # 调用函数

函数的返回值

print只能把结果打印出来,并不能得到这个值,return返回可以拿到这个值

函数返回的一个值,这个值可以是任意的数据类型

ef guess1():
    """给定两个数,打印较大的数"""
    x = 20
    y = 30
    if x > y:
        # print(x)
        return x
    else:
        # print(y)
        return y

return的作用

  1. return 返回一个返回值,如果没有返回值,返回None

  2. 没有return 默认返回None

  3. return 会终止函数,不运行下面的代码,假设有多个return的时候,运行到第一个就会结束,不会运行第二个

  4. return 通过逗号隔开,可以返回多个值,返回值以元组的形式接收

函数的参数

有参函数:有参数(手电筒(强光/弱光,由你自己调控))的函数

要有这个功能,使用的时候才会触发

def guess1(x:int,y:int = 20 )  ->int: # :后面规定是参数的数据类型,约定俗成的 ; ->后面规定的是返回值的数据类型,约定俗成的
    """给定两个数,打印较大的数"""
    if x>y:
        return x
    else:
        return y
 guess1(30) 
  

形参

定义阶段的产物,具有接受实参的作用,具有描述意义

位置形参:

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

默认形参:

1.如果你不给,使用默认值;如果调用的时候给,就用给的值。2.默认形参要放在位置形参的后面

实参

调用阶段的产物,传给形参一个具体的值,具有具体的值

位置实参:

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

关键字实参:

当参数较多时,可能会把参数弄混,因此就出现了关键字实参

1.按照形参形参名给形参传值(基本不会使用)--->函数的参数一般只有0-3个
2.位置参数必须要写在关键字参数前面

可变长参数

可边长形参

# 可变长形参
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 19:42  KONNE  阅读(187)  评论(0编辑  收藏  举报