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)
复制代码

 

posted @   PKICA  阅读(409)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示