zoukankan      html  css  js  c++  java
  • args 、kwargs不定参数通过列表、元组、字典传递

    *args 、**kwargs是不定参数的表达方法,一般用于函数形参。*args 、**kwargs 作为传递参数的函数,在使用过程中,可对*args 、**kwargs多个输入,但是效率或者比较麻烦,所以可使用list、tuple、dict类型的变量传递给args,kwargs,再由*args 、**kwargs作为函数参数直接传递给函数。

    *args    可以用来容纳多个变量组成的list或tuple

    **kwargs     可以用来容纳多个key和value的dict

    那具体怎么直接将*args 、**kwargs通过list、tuple或dict传递了,来看实例:

    #变量及函数定义:

    dict_t = {'one':1,'two':2,'three':3}
    tuple_t = ('one','two','three')
    list_t = ['one','two','three']
    
    def list_tuple(*args):
        print(args)
    
    def tdict(**kwagrs):
        print(kwagrs)
    
    #使用方法:
    
    list_tuple (*tuple_t) #tuple类型的变量传递给args
    list_tuple (*list_t) #list类型的变量传递给args
    tdict (**dict_t) # dict类型的变量传递给kwargs
    

    执行结果:

    ('one', 'two', 'three')
    ('one', 'two', 'three')
    {'one': 1, 'two': 2, 'three': 3}
    

    也可以使用eval的方式,eval具体介绍可在内置函数介绍中查看:https://www.cnblogs.com/pinpin/p/10287534.html

    dict_t = {'one':1,'two':2,'three':3}
    tuple_t = ('one','two','three')
    list_t = ['one','two','three']
    
    def list_tuple(*args):
        args = eval('args')
        print(args)
    
    list_tuple (list_t)
    list_tuple (list_t)
    list_tuple(dict_t)
    

    执行结果:

    (['one', 'two', 'three'],)
    (['one', 'two', 'three'],)
    ({'one': 1, 'two': 2, 'three': 3},)
    
     
    使用eval的区别在于:将*args 、**kwargs当成一个字符串进行转递,当然,使用时读取数据就多一步:
    list_t = ['one','two','three']
    def list_tuple(*args):
        args = eval('args')
    return args
    
    tets = list_tuple (list_t)
    for i in range(len(tets[0])): #tets[0]第一个元素的长度,原因,eval将数据当成字符传传递
    print(tets[0][i])
    
     
    执行结果:
    one
    two
    three
    
     
  • 相关阅读:
    springcloud 学习笔记
    一文领悟HTTPS密钥为什么这样传输
    静态代码扫描工具PMD参数过程简介与JCommander 以及如何扩展
    静态代码扫描工具PMD分析XML的核心源码解读(从core主入口到子语言解析)
    Jenkins出现SVNException:E175002
    一个第三方登录的流程
    爬虫入门(三)爬取b站搜索页视频分析(动态页面,DBUtils存储)
    09 元素等待机制
    测试观点
    什么是请求
  • 原文地址:https://www.cnblogs.com/pinpin/p/10287555.html
Copyright © 2011-2022 走看看