zoukankan      html  css  js  c++  java
  • Python中*args 和**kwargs的用法

    刚开始学习python,觉得args、**kwargs参数很难理解。
    大概知道
    args是解包元组,**kwargs是解包字典,但是仅仅知道这点,还是不会使用这两个参数。

    # *args参数的使用
    # 计算除第一个参数外所有参数之和
    def calculate_sum(*args):  # args是一个元组
        return sum(args)   # 使用内建函数’sum’,它使用元组或数列作为参数,返回元组所有元素的和。
    
    def ignore_first_calculate_sum(a,*iargs):  # 第一个参数被常规参数’a’接收,其他参数被’iargs’作为元组接收
        required_sum = calculate_sum(*iargs)
        print("sum is ", required_sum)
    
    def test_sum():
        ignore_first_calculate_sum(1,*(2,3,4,5,6))
        '''
        用到函数’calculate_sum’,’calculate_sum’需要多个位置参数作为元组传给’args’,
        所以在函数’ignore_first_calculate_sum’需要拆元组’iargs’,然后将元素作为位置参数传给’calculate_sum’。
        注意,用’*’拆元组
        '''
    
    def fun(a,**kwargs):
        print('a is :',a)
        print("We expect kwargs 'b' and 'c' in this function")
        print("b is ", kwargs['b'])
        print("c is ", kwargs['c'])
    
    def test_kwargs():
        fun(1,b=3,c=44)
        '''
        fun(1, {'b':2, 'c':34}),这样调用会报错:ypeError: fun() takes exactly 1 argument (2 given)
        尽管’kwargs’接收键值参数作为一个字典,但你不能传一个字典作为位置参数给’kwargs’
        可以这样调用:fun(1, **{'b':2, 'c':34})
        在一个字典前使用”**”可以unpack字典,传字典中的数据项作为键值参数。
        '''
    
    • todo

    https://www.cnblogs.com/cwind/p/8996000.html

  • 相关阅读:
    kali linux命令
    kali查看beef密码
    kali的ifconfig: command not found 解决办法
    git创建分支及日常使用
    fatal: Authentication failed for 问题解决
    php开启xdebug扩展及xdebug通信原理
    yii项目开发配置
    windows上把git生成的ssh key
    yii在Windows下安装(通过composer方式)
    rar在linux下安装更新
  • 原文地址:https://www.cnblogs.com/Uni-Hoang/p/13341758.html
Copyright © 2011-2022 走看看