• Python--函数参数


    函数参数

    python3中函数也可以用中文

    def func(a,b):   #站在函数定义角度上:位置参数,是必须传的参数
        print(a,b)

    站在调用函数的角度上

     func(1,2)    #按照位置传参
     func(b = 1,a = 2)      #按照关键字传参
     func(1,b = 2)         #混用:必须先按照位置传参
     
    def welcome(name,sex='male'):        #sex 默认参数
        print('welcome,%s,sex:%s%(name,sex))
    
    welcome('fff')
    welcome('female')        
    #默认参数可以不传,不传用默认,如果不传的话就用传入的值
    def age(age,my_age=18)
        if age>my_age:
        return False
     else:
        return True

    -----------------------------------------------------   

    默认参数陷阱

    针对可变数据类型,不可变不受影响

    def c(a=[]):
        a.append(1)
        print(a)
    c()
    c()
    c()
    结果:
    [1]
    [1, 1]
    [1, 1, 1]

    ---------------------------------------------------

    def c(a=[]):
        a.append(1)
        print(a)
    c([])
    c([])
    c([])
    结果:
    [1]
    [1]
    [1]

    --------------------------------------------------

    动态参数

    arg形参  para实参
    *是动态参数的标识  后面变量名

    def func(*a):
        h = 0
        for item in a:
            h += item
        print(h)
    func(33,44,55,88,77,78)

    动态参数可以接受多个传过来的实参

    li = [1,2,3,4,5,6,7]
    func(*li)   #把列表打散了传参
    #*在形参前,*是聚合,将每个参数组合成一个元组
    #*在实参前,*是打散,将一个列表或者元组打散成多个参数
    #一个*只针对按位置传参,不能关键字传参
    func fa(**li):
       print(li)
    fa(a=1,b=1,c=1)
    结果
    {'a': 1, 'b': 1, 'c': 1}
    #**两个*是针对关键字传参,传出值是字典,变量变成key
    #**在关键字形参前是聚合  组成字典
    #**在实参前,是打散
    
    def fa(*a,**f):
        print(a)
        print(f)
    fa(3,8,3,5,6,5,8,g=4,c=7,o=9)

    混用必须位置传参在前
    实参传形参也是这样一个*的放在前面两个*放在后面


    站在函数定义角度上:所有参数都是形参
    位置参数
    默认参数
    动态参数:*args,**kwargs
    站在函数调用的角度上:所有的参数都是实际参数
    按照位置传参
    按照关键字传参
    混用先位置再关键字
    先定义动态参数里面的*args再放默认参数再放**kwargs

    def func(位置参数,*args,默认参数=10,**kwargs):
        print(位置参数)
     print(*args)
     print(默认参数)
     print(**kwargs)

    这样可以显示出默认参数,如果默认参数放在了*args前,就永远都用不到设定的默认参数值
    放在关键词传参前面,就而已用,但是必须要在写入时用字符串写出默认参数的变量名,然后赋值
    例如:

    def funk(a,b,*args,c=10,**kwargs):
        print(a,b)
        print(args)
        print(c)
        print(kwargs)
    funk(3,5,4,8,6,2,1,z=10,y=8,o=9)


    这样的话就可以将c=10利用,加载1和z=10中间的位置。

  • 相关阅读:
    大数减法
    MySQL配置的一些坑
    最大流_Edmonds-Karp算法
    最小生成树两连
    最短路三连
    对拍
    Broadcast
    Intent
    Custom Views
    Fragment
  • 原文地址:https://www.cnblogs.com/gaoshengyue/p/7448536.html
Copyright © 2020-2023  润新知