python中函数传参的几种实现方式

作者:

文章目录
  • 实参与形参的位置数量一致 def foo(a,b): #形参 print(a) if __name__ == ‘__main__’: foo(1,2) #实参
  • 关键字传参是指使用形参的名字来确定输入的参数。 通过该方式指定实参时,不需要与形参位置一致,只要参数名称写正确即可 def foo(a,b): print(f”a是{a},b是{b}”) if __name__ == ‘__main__’: foo(b=1,a=2) #结果 a是2,b是1
  • 调用函数时,如果没有指定某个参数将抛出异常,即在定义函数时,直接指定形式参数的默认值。 这样,当没有传入参数时,则直接使用定义函数时设置的默认值。 语法格式如下: def foo(a,b,c=”我是默认参数”): print(f”a是:{a},b是:{b},c是:{c}”) if __name__ == ‘__main__’: foo(b=1,a=2)
  • –也可以叫不定长参数 1.*args可以接收任意长度的位置参数 2.**kwargs可以接收任意长度的关键字参数 3.*args和**kwargs同事使用时,*args(位置参数)在前,**kwargs(关键字)参数在后。 形参为可变参数 def foo(*args, **kwargs): print(“Positional arguments:”) print(type(args)) for arg in args: print(arg) print(“nKeyword arguments:”) print(type(kwargs)) for key, value in kwargs.items(): print(key + “: ” + str(value)) if __name__ == ‘__main__’: a = foo(1,2,3,4,5,name = “tom”,age = 18) help(foo()) 实参为可变参数 def foo(a,b,name,age): print(a,b,name,age) if __name__ == ‘__main__’: a = [1,2] b = {“name”:”tom”,”age”:18} c = foo(*a,**b) #结果 1 2 tom 18 实参和形参都为可变参数 def foo(*args, **kwargs): print(“Positional arguments:”) print(type(args)) for arg in args: print(arg) print(“nKeyword arguments:”) print(type(kwargs)) for key, value in kwargs.items(): print(key + “: ” + str(value)) if __name__ == ‘__main__’: a = [1,2,3,4,5] b = {“name”:”tom”,”age”:18} a = foo(*a,**b)
  • 以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。 您可能感兴趣的文章: python中函数传参的多种方式 一文搞懂Python的函数传参机制 python函数传参意义示例详解 详解python函数传参传递dict/list/set等类型的问题 详解python函数传参是传值还是传引用 python 函数传参之传值还是传引用的分析
  • 目录
    • 1.位置传参
    • 2.关键字传参
    • 3.默认传参
    • 4.可变参数传参(*args,**kwargs)
    • 总结

    实参与形参的位置数量一致

    def foo(a,b):  #形参
        print(a)
    
    if __name__ == '__main__':
        foo(1,2)   #实参
    

    关键字传参是指使用形参的名字来确定输入的参数。

    通过该方式指定实参时,不需要与形参位置一致,只要参数名称写正确即可

    def foo(a,b):
        print(f"a是{a},b是{b}")
    
    if __name__ == '__main__':
        foo(b=1,a=2)
    
    
    
    #结果
    a是2,b是1

    调用函数时,如果没有指定某个参数将抛出异常,即在定义函数时,直接指定形式参数的默认值。

    这样,当没有传入参数时,则直接使用定义函数时设置的默认值。

    语法格式如下:

    def foo(a,b,c="我是默认参数"):
        print(f"a是:{a},b是:{b},c是:{c}")
    
    if __name__ == '__main__':
        foo(b=1,a=2)

    –也可以叫不定长参数

    • 1.*args可以接收任意长度的位置参数
    • 2.**kwargs可以接收任意长度的关键字参数
    • 3.*args和**kwargs同事使用时,*args(位置参数)在前,**kwargs(关键字)参数在后。

    形参为可变参数

    def foo(*args, **kwargs):
        print("Positional arguments:")
        print(type(args))
    
        for arg in args:
            print(arg)
    
        print("nKeyword arguments:")
        print(type(kwargs))
        for key, value in kwargs.items():
            print(key + ": " + str(value))
    
    
    if __name__ == '__main__':
        a = foo(1,2,3,4,5,name = "tom",age = 18)
        help(foo())

    实参为可变参数

    def foo(a,b,name,age):
    
        print(a,b,name,age)
    
    if __name__ == '__main__':
        a = [1,2]
        b = {"name":"tom","age":18}
        c = foo(*a,**b)
    
    
    #结果
    1 2 tom 18

    实参和形参都为可变参数

    def foo(*args, **kwargs):
        print("Positional arguments:")
        print(type(args))
    
        for arg in args:
            print(arg)
    
        print("nKeyword arguments:")
        print(type(kwargs))
        for key, value in kwargs.items():
            print(key + ": " + str(value))
    
    
    if __name__ == '__main__':
        a = [1,2,3,4,5]
        b = {"name":"tom","age":18}
        a = foo(*a,**b)

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。

    您可能感兴趣的文章:

    • python中函数传参的多种方式
    • 一文搞懂Python的函数传参机制
    • python函数传参意义示例详解
    • 详解python函数传参传递dict/list/set等类型的问题
    • 详解python函数传参是传值还是传引用
    • python 函数传参之传值还是传引用的分析

    站内搜索