zoukankan      html  css  js  c++  java
  • python--基础学习(五)参数位置传递、关键字传递、包裹传递及解包裹(*args与**kwargs)

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    # 在定义或者调用参数时,参数的几种传递方式可以混合。基本原则是,先位置,再关键字,再包裹位置,再包裹关键字。
    # -------------------------------------------------------------------- #
    # 位置参数
    def func(a, b, c):
        print a, b, c
    
    
    func(1, 2, 3)
    
    abc = [4, 5, 6]
    func(*abc)  # unpacket
    
    bc = [7, 8]
    func(9, *bc)
    
    
    # *args表示接受元组类参数,可以是[任何多个无名参数],它是一个tuple;
    # **kwargs表示接受字典类参数,它是一个dict。
    # 并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前
    def tuple_dic(*args, **kwargs):
        print 'args = ', args
        print 'kwargs = ', kwargs
    
    
    tuple_dic(None, *abc, a=10, b='2', c=3)
    
    dicts = {"Tom": 99, "Bob": 98, "Lily": 95}
    tuple_dic(*bc, **dicts)
    # -------------------------------------------------------------------- #
    lst_enum = ["lists", "enums", "ranges"]
    for idx, itm in enumerate(lst_enum, 2):
        print idx, itm
    
    
    def print_everything(*args):
        for count, thing in enumerate(args):
            print('args[{0}]: {1}'.format(count, thing))
    
    
    print_everything(*abc)
    
    
    def table_things(**kwargs):
        for name, value in kwargs.items():
            print('kwargs[{0}] = {1}'.format(name, value))
    
    
    table_things(**dicts)
    print "Tom:", dicts.get("Tom")
    print "LiLei:", dicts.get("LiLei", None)
  • 相关阅读:
    UE4 Cel Shading(卡通渲染)
    UE4 常用数学
    锈迹材质全流程实例:Blender-》SP-》UE4
    ue4 优化建议与经验
    VisualStudio开发UE4工程设置
    Procedural Mesh Component in C++:Getting Started
    Java容器有哪些?
    java 连接mongodb
    mongodb 系列 ~ mongo 用户验证系列
    mongodb连接认证失败
  • 原文地址:https://www.cnblogs.com/guxuanqing/p/6060651.html
Copyright © 2011-2022 走看看