美文网首页
01.04 笔记 - 函数参数

01.04 笔记 - 函数参数

作者: xxxQinli | 来源:发表于2019-01-04 18:02 被阅读0次

    位置参数和关键字参数(根据实参的传递方式对参数进行的分类)

    a. 位置参数:实参位置和形参保持一致,按参数的先后顺序一一赋值

    b. 关键字参数:调用函数的时候,以形参 = 实参的方式来传参,这个时候实参的顺序无所谓

    每个形参都必须有值,且数量不能多

    
    def func1(a, b, c):
    
     print(a, b, c)
    
    # 通过位置参数给形参赋值
    
    func1(10, 20, 30)
    
    # 通过位置参数和关键字参数结合传参(注意关键字参数必须在位置参数的后面)
    
    

    参数默认值

    • 声明函数的时候,可以给参数赋默认值。如果一个形参有默认值,那么调用这个函数的时候这个参数就可以不用传参了

    • 如果有的形参有默认值,有的形参没有默认值,有默认值的参数要放在没有默认值的形参的后面

    • 调用函数要保证每个参数都有值

    • 参数有默认值,调用函数的时候c可以不用传参

    • 参数默认值能够限定参数的类型,不会报错,但是会给出一个类型不匹配的提示


    参数的类型说明 - 类型说明只有提示功能,没有约束功能

    • a. 给参数设置默认值, 默认值的类型就是参数的类型

    • b. 在形参后面加:类型名,这种方式调用的时候必须传参

    注意:若一个参数已经给力默认值了,就不能再加冒号写类型名

    类型说明的好处:a. 对实参的类型进行指导,b. 实现函数功能的时候有类型相关的语法提示

    def func2(a:int, b:str):
    
     print(type(a), type(b))
    
    func2(1, '123')
    
    func2('str', 1)
    
    def func3(list1 = 'name or num', index = 0):
    
     print(list1[index])
    
    func3()
    
    

    不定长参数

    • a. 在参数名前加*号,可以用来同时获取多个实参的值 -- 实质是将带星号的参数变成元组,将多个实参的值作为元组的元素

    注意:a. 如果函数中即有不定长参数,又有普通参数,那么不定长参数必须放在普通参数后边

    • b. 在参数名前加两个星号**, 将形参作为key,实参作为值,形成一个字典

    开发时一般是一颗星与两颗星同时存在,或者只用一颗星

    不带星要放在一颗星前面,一颗星要放在两颗星前面

    
    def func7(\*args, \*\*kwargs): #让调用函数的时候更加随意,使用位置参数或者关键字参数都可以
    
     print(args, kwargs)
    
    func7(10, 5, 89) 
    
    func7(a = 1, b = 2, c = 3)
    
    func7(90, 70, z = 1, v = 87)
    
    # 写一个函数,计算多个数的和(要求可以使用位置参数也可以使用关键字参数)
    
    def sumItem(\*args, \*\*kwargs):
    
     print(sum(args) + sum([value for value in kwargs.values()]))
    
    sumItem(1,2,3)
    
    sumItem(a=1, b=2, c=3) 
    
    sumItem(1, 2, 3, a=1, b=2)
    

    相关文章

      网友评论

          本文标题:01.04 笔记 - 函数参数

          本文链接:https://www.haomeiwen.com/subject/tmpkrqtx.html