Python的几种函数参数类型

Table of Contents
    # 位置参数,根据参数的传入顺序来赋值
    def add(a, b):
        return a + b
    
    
    # 默认参数,n就是默认参数,调用函数的时候可以不传
    # 默认参数必须写在后面且指向不变对象
    def power(a, n=2):
        s = 1
        for i in range(n):
            s *= a
        return s
    
    
    # 可变参数,可以传多个不定个数的参数,还可以在list和tuple变量前加一个*号进行传入
    def print_log(*logs):
        s = ''
        for log in logs:
            if len(s):
                s += ' | '
            s += log
        print(s)
    
    
    # 关键字参数,类似如可变参数关键字参数也可以接受多个不固定参数,区别是它的参数都有一个名称
    # 可以将字典当做关键字参数传入,前提是变量前增加两个**
    def print_kw(**kw):
        for k, v in kw.items():
            print(k, v)
    
    
    # 命名关键字参数,传参方式类似如关键字参数,但是参数名称和个数是固定的,也就是*号后面的参数
    # 如果前面是可变参数,由于可变参数本来就有个*号,那么命名关键字参数的*号是可以省略的
    def print_names(*, name, age):
        print(name, age)
    
    
    # 参数组合
    # 参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数
    def f1(a, b, c=0, *args, **kw):
        pass
    
    
    def f2(a, b, c=0, *, d, **kw):
        pass
    
    
    # 通用参数,下面这种函数适用于任意参数的调用方式(可变参数和关键字参数组合)
    def f(*args, **kw):
        pass