• day 10小结


    1.函数引入

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

    函数不会改变某一个功能的代码。它只做了一件事情-->封装(接口),只会让你的代码更加简洁而已

    2.函数的定义

    def 函数名 (等同于变量名) ():
        """对函数的描述信息"""
        代码块
        
    def guess():
        """给定两个数,打印较大的数"""
        x = 30
        y = 20
        
        if x > y
        	print(x)
        else:
            print(y)
            
    print(guess.__doc__)
    print(len.__doc__)
    s = 'abc'
    print(s.startswith.__doc__)
    

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

    def func()
    	print(x)
        
    func()  # 调用阶段,会执行代码
    

    3.定义函数的三种方式

    空函数

    def func():
        pass
    
    def register():
        pass
    
    def login():
        pass
    
    def shopping():
        pass
    

    有参函数

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

    无参函数

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

    4.函数的调用

    def guess1():
        """给定两个数,打印较大的数"""
        
        x = 20
        y = 30
        if x > y:
            print(x)
        else:
            print(y)
           
    # 函数的调用
    
    print(guess1)  # 函数的地址
    guess1()  # 没有为什么,加括号就能调用(执行内存中的代码)
    
    

    5.函数的返回值

    返回值:返回一个值(所有数据类型)

    def guess1():
    	"""给定两个数,打印较大的数"""
    	# return
        # print(1)
        x = 20
        y = 30
        if x > y:
            # print(x)
            return x
        else:
            # print(y)
            return y
        
        num = guess1()  # num = 30
        print('num:',num)
        
        z = 2
        # 获取最大值,乘以z
        print(z * num)
        
        
        lt = [num]
        
        
    

    return的特性:

    1. return返回一个返回值,如果没有返回值,则返回None
    2. 没有return 默认返回None
    3. return会种植函数,不运行下面的代码,假设有多个return的时候,运行到第一个就会结束,不会运行第二个
    4. return通过逗号隔开,可以返回多个值,返回值以元组的行式被接受

    6.函数的参数

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

    使用时,你告诉手电筒,他是强光还是弱光

    后面规定是参数的数据类型,约定俗成的;后面规定的是返回值的数据类型,约定俗成的

    def xiaoshiping(liangdu:int,duibidu:int) ->int:  #形参
        """给定两个数,打印较大的数"""
        
        if liangdu == 0:
            print('黑屏')
            return 0
        
        if duibidu > 300:
             print('高清无码')
         else:
             print('av画质')
    
    
    xianshiping(1, 1000)  # 有参数,就必须得传参  # 实参
    

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

    位置形参:从左到右依次接受实参的值

     def xianshiping(liangdu: int, duibidu: int = 150) -> int:  # 形参
         """给定两个数,打印较大的数"""
    
         if liangdu == 0:
             print('黑屏')
             return 0
    
         if duibidu > 299:
             print('高清无码')
         else:
             print('av画质')
    

    默认形参: 1. 如果你不给,使用默认值;如果调用的时候传值,使用传的值 2. 默认形参必须得放在位置形参后面

     xianshiping(1)
        
     xianshiping(1, 300)
    

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

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

    xianshiping(1, 300)  # 有参数,就必须得传参  # 实参
    xianshiping(1, 300)  # 有参数,就必须得传参  # 实参
    xianshiping(1, 300)  # 有参数,就必须得传参  # 实参
    

    关键字实参: 1.位置实参必须写在关键字实参的前面 2.按照形参名给形参传值(使用情况,基本为0)---》函数的参数一般0-3个,尽量不要超过3个

    def xianshiping(duibidu, liangdu, resolution_ratio, length, width):  # 形参
         """给定两个数,打印较大的数"""
    
        print(liangdu, duibidu, resolution_ratio, length, width)
    
    
    xianshiping(1, 2, 3, 4, 5)
    xianshiping(5, liangdu=1, resolution_ratio=2, length=3, width=4)
    

    位置形参:从左到右依次接收实参的值

    位置实参:从左到右依次传值给形参

    默认形参: 1. 有默认值,如果调用传参了,使用传的值;没有传参,使用默认值 2. 默认形参必须得放在位置形参后面

    关键字实参:1. 按照形参名传参 2. 关键字实参必须得放在位置实参的后面

    7.可变长参数

    可变长形参
    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)
    
  • 相关阅读:
    virtual judge(专题一 简单搜索 C)
    virtual judge(专题一 简单搜索 B)
    virtual judge(专题一 简单搜索 A)
    HDU1548(楼梯问题bfs)
    Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)D(思维,DP,字符串)
    Codeforces Round#522 Div2E(思维,背包,组合数学)
    Codeforces Round #522 Div2C(思维)
    Educational Codeforces Round 53C(二分,思维|构造)
    UPCOJ9526(SG函数打表,nim游戏异或规则)
    Wannafly挑战赛27B(DFS,链表头插法)
  • 原文地址:https://www.cnblogs.com/LZF-190903/p/11553103.html
Copyright © 2020-2023  润新知