zoukankan      html  css  js  c++  java
  • 可变长参数

    可变长参数

    可变长参数:指的是在调用函数时,传入的参数个数可以不固定
    调用函数时,传值的方式无非两种,一种是位置实参,另一种是关键字实参,因此形参也必须得有两种解决方法,以此来分别接收溢出的位置实参(*)与关键字实参(**)

    一、可变长实参之*

    # 可变长参数*
    # *args会接受多于的位置实参,尽量不使用其他的变量名,而应该使用args,args是约定俗称
    
    def func(name, pwd, *args):
        print('name:', name, pwd, )
        print(args)
        return 1
    
    res = func('randy', 123, 'a', 1, 3)
    print(res)
    
    

    结果:

    ('a', 1, 3)
    1

    二、可变长形参之**

    形参中的会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给后的参数。需要注意的是:**后的参数名约定俗成为kwargs。

    # 可变长参数 **
    # kwargs会接收多余的关键字实参,以字典形式存储
    def func(name, pwd, **kwargs):
        print('name', name, 'pwd', pwd)
        print(kwargs)
        return 1
    
    
    res = func('randu', 1234, a=2, b=4)
    print(res)
    
    

    结果:

    {'a': 2, 'b': 4}
    1

    三、 可变形参*之*(a,b,c)

    *会把元组打撒成位置实参传给形参

    
    def func(name, pwd, x, y, z):
        print(name, pwd, x, y, z)
        return 1
    
    
    tup = (1, 2, 3)
    print('randy', 12, *tup)  # *会把元组打撒成位置实参传给形参
    

    结果:

    randy 12 1 2 3

    四、可变形参**之**({‘a’:1, ‘b’:3})

    实参中的会将后参数的值循环取出,打散成关键字实参。以后但凡碰到实参中带的,它就是关键字实参,应该马上打散成关键字实参去看。

    def func(name, pwd, **kwargs):
        
        print(name, pwd)
        print(kwargs)
        return 1
    
    dic = {"a": 1, 'b': 3}
    res = func('2', 3, **dic)  # 会把字典打散成关键字实参传给形参
    
    

    结果:

    2 3
    {'a': 1, 'b': 3}

    在当下的阶段,必将由程序员来主导,甚至比以往更甚。
  • 相关阅读:
    Oracle查看正在执行的存储过程的sid---转
    使用WITH子句重用子查询
    oracle解决显示数据的层次问题--实现数据缩进
    oracle9i、10g、11g区别 --转
    oracle10g安装在裸设备上
    在Linux系统上面创建使用裸设备的数据库
    监控Oracle数据库的常用shell脚本-转
    sql server使用维护计划定时备份完整数据库、差异数据库
    使用Advanced Installer14.3 简单打包windows窗体应用程序
    SVG Path标签 A 参数
  • 原文地址:https://www.cnblogs.com/randysun/p/11329713.html
Copyright © 2011-2022 走看看