zoukankan      html  css  js  c++  java
  • python不定长参数 *argc,**kargcs(19)

        在 python函数的声明和调用 中我们简单的了解了函数的相关使用,然而在函数传递参数的时候,我们埋下了一个坑,关于不定长参数的传递我们还没有讲,今天这篇文章主要就是讲解这个问题。

    出来混迟早是要还的

     

    一.函数不定长参数语法

    函数的不定长参数包含*args和**kwargs,完整实例如下:

    def function_print(*args,**kwargs): # 传递不定长参数,即参数个数不固定
        print(args)
        print(kwargs)
     
    function_print()

    输出结果:

    ()
    {}

        代码分析:由输出结果可以看出来,第一个形参*args 是元组tuple类型,第二个形参**kwargs是字典dict类型.

     

        1.*args的使用方法 :

        a.形参 *args 类型是元组tuple,外部调用函数时传递的参数不论是整数还是BOOL值或者是字符串str,实际上传递的都是元组数据;

        b.如果函数形参是不定长参数,外部调用函数传递多个参数时,默认按顺序实参匹配形参,剩余的参数全部作为(元组)不定长参数传递;

        c.如果没有为函数的不定长参数传递参数,默认为空元组();

        示例代码如下:

    #普通形参
    def function_print1(arg):
        print("普通形参 : arg=",arg)
     
    #不定长形参
    def function_print2(*args):
        print("不定长形参 : args=",args)
     
    #普通形参 + 不定长形参
    def function_print3(arg,*args):
        print("普通形参 + 不定长形参 : arg=",arg)
        print("普通形参 + 不定长形参 : args=",args)
     
    function_print1(False)
    function_print1("hello world")
    print("***"*20)
     
    function_print2(False)
    function_print2("hello world")
    print("***"*20)
     
    function_print3(False) # 只为函数传递了一个形参,不定长参数的形参默认为空元组()
    function_print3("hello world")
    print("***"*20)
     
    # 如果函数的形参是不定长参数,当外部调用函数传递多个参数时,默认按顺序匹配形参,剩余的参数全部作为不定长参数传递
    function_print3(False,1,23,4,5)
    function_print3("hello world",False,0,True,"python教程")

        输出结果:

    普通形参 : arg= False
    普通形参 : arg= hello world
    ************************************************************
    不定长形参 : args= (False,)
    不定长形参 : args= ('hello world',)
    ************************************************************
    普通形参 + 不定长形参 : arg= False
    普通形参 + 不定长形参 : args= ()
    普通形参 + 不定长形参 : arg= hello world
    普通形参 + 不定长形参 : args= ()
    ************************************************************
    普通形参 + 不定长形参 : arg= False
    普通形参 + 不定长形参 : args= (1, 23, 4, 5)
    普通形参 + 不定长形参 : arg= hello world
    普通形参 + 不定长形参 : args= (False, 0, True, 'python教程')

     

     

        2.**kwargs的使用方法

        a.形参 **kwargs 类型是字典dict,函数外部调用函数传递参数时需要使用关键字参数,实参写法:a=1,b=2,c=False,d=”hello”;

        b.如果函数形参是不定长参数,外部调用函数传递多个参数时,默认按顺序实参匹配形参,关键字参数全部作为(字典)不定长参数传递;

        c.如果没有为函数的不定长参数传递参数,默认为空字典{};

        示例代码如下:

    #普通函数
    def function_print1(arg):
        print("普通函数形参 : arg=",arg)
     
    #普通函数不定长形参
    def function_print2(**kwargs):
        print("不定长形参 : args=",kwargs)
     
    #普通函数形参 + 不定长形参
    def function_print3(arg,**kwargs):
        print("普通函数形参 + 不定长形参 : arg=",arg)
        print("普通函数形参 + 不定长形参 : args=",kwargs)
     
    function_print1(False)
    function_print1("hello world")
    print("***"*20)
     
    function_print2(a=False)
    function_print2(c="hello world")
    print("***"*20)
     
    function_print3(False)
    function_print3("hello world")
    print("***"*20)
     
    function_print3(False,a=1,b=23,h=4,v=5)
    function_print3("hello world",y=False,i=0,a=True,j="python教程")

        输出结果:

     

        3.函数不定长参数*args和**kwargs只能放在形参的末尾,顺序不能错.

    别慌

     

    二.函数不定长参数实战

    # !usr/bin/env python
    # -*- coding:utf-8 _*-
    """
    @Author:何以解忧
    @Blog(个人博客地址): shuopython.com
    @WeChat Official Account(微信公众号):猿说python
    @Github:www.github.com
     
    @File:python_args.py
    @Time:2019/10/3 21:48
     
    @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
    """
     
    '''
    普通函数形参 + 不定长形参:
        arg1:普通形参
        arg1:普通形参
        args:不定长参数-元组
        kwargs:不定长参数-字典
    '''
     
    def function_print(arg1,arg2,*args,**kwargs):
        print(arg1,arg2,args,kwargs)
     
    function_print(False,1,b=23,h=4,v=5)
    function_print("hello world",False,0,True,j="python教程",a=True)

        输出结果:

        注意:注意参数的顺序匹配

     

    三.重点总结

        注意函数传参的三种形式:

        1.普通传参

        2.缺省参数,如果外部没有为缺省参数传递实参,形参等于默认值

        3.注意不定长参数的拆包,普通实参打包为元组tuple类型,关键字参数打包为字典dict类型

     

    猜你喜欢:

        1.python元组

        2.python字典

        3.python 函数声明和调用

     

        转载请注明:猿说Python » python 函数不定长参数 *argc,**kargcs

     

    技术交流、商务合作请直接联系博主
    扫码或搜索:猿说python
    python教程公众号
    猿说python
    微信公众号 扫一扫关注
  • 相关阅读:
    编程总结2
    编程总结1
    我的三位老师
    《秋季学期学习总结》
    CodeAction_beta02 斐波那契 (多维DP)
    bzoj3029 守卫者的挑战 (多维dp)
    修剪草坪 (单调队列)
    CF734F Anton and School (构造)
    CF359B Permutation (构造)
    CF989C A Mist of Florescence (构造)
  • 原文地址:https://www.cnblogs.com/shuopython/p/11848213.html
Copyright © 2011-2022 走看看