zoukankan      html  css  js  c++  java
  • 函数的参数

    函数的参数

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

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

    # :后面规定是参数的数据类型,约定俗成的 ; ->后面规定的是返回值的数据类型,约定俗成的
    def compare(num1:int, num2:int)->int:  # 形(形式)参:一般具有描述意义,毫无作用(接收实参)  --》 变量名(接收变量值)
    
        if num1 > num2:
            print(num1)
        else:
            print(num2)
            
    compare(80, 140)  # 实(实际)参 :具有实际的意义,具体的一个值(传给形参)  --》 变量值
    

    位置形参

    从左到右一个一个写过去,就叫做位置形参
    

    默认形参

    (默认值)形参:给位置形参一个默认值,让他成为默认形参

    特点:1.在定义阶段,就已经被赋值。以后调用不需要为他传值,但是你为他传值的话,他也会接收(如果调用的时候传值,使用传的值)

    def func(x, y=10):
        print(x)
        print(y)
        
    func(2)
    

    2.默认参数必须得放在最后面(位置参数后面)

    默认形参的值只在定义阶段赋值一次,也就是说默认参数的值在函数定义阶段就已经固定了。

    位置实参

    位置实参:从左到右一个一个写过,就叫做位置实参,(有多少个位置形参,就必须有多少个位置实参,从左到右依次传值)
    

    关键字实参

    在调用函数时,按照key=value的形式为指定的参数传值,称为关键字实参。

    1.位置实参必须写在关键字实参的前面 2.按照形参名给形参传值-->函数的参数一般0-3个,尽量不要超过3个

    func(y=2, x=1)
    

    特点:可以打破位置的限制,但仍能为指定的形参赋值。

    func(x, y=2)
    func(y=2, x)  # SyntaxError: positional argument follows keyword argument #可以混用位置实参和关键字实参,但是位置实参必须在关键字实参的前面
    func(x, x=1)  # NameError: name 'x' is not defined #可以混用位置实参和关键字实参,但不能对一个形参重复赋值
    

    可变长参数

    (可无限长)

    可变长形参

    # 可变长形参
    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)
    
  • 相关阅读:
    Struts2异常处理配置
    struts2支持的结果类型
    Project facet Java 1.8 is not supported by target runtime Apache Tomcat v7.0.
    net.paoding.analysis.exception.PaodingAnalysisException: dic home should not be a file, but a directory!
    struts.xml路径修改后的web配置
    struts.xml中的配置常量的含义
    Spring实战笔记
    2018第2周日
    新人替代旧人
    Web安全总结摘录
  • 原文地址:https://www.cnblogs.com/jzm1201/p/12594971.html
Copyright © 2011-2022 走看看