python 参数传递[打包与解包问题]

本文介绍了在Python中如何使用基于参数名的字典f(**param_dict)和基于位置的列表f(*param_list)进行参数传递的方法。同时,还讨论了如何获取函数或方法的参数列表,并提供了去除额外关键字如self或cls的实用函数。最后,文中对比了locals()和globals()的不同之处及它们在代码执行过程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

传递参数时,可以传递基于参数名的字典f(**param_dict)
也可以传递基于位置的列表f(*param_list)

2.获取参数列表

对于函数,可以直接在开头param_dict=locals()获取参数字典
对于方法(类、实例),获取的参数列表还额外含有cls、self项需要移除
可以用如下函数无副作用地得到纯洁的参数字典

def remove_key(dic,key):
    return {_key:dic[_key] for _key in dic if _key!=key}

3.关于locals、globals()的说明

globals是关于全局模块级的标识符字典
locals是局部的。

但globals可以直接修改(或说修改对全局标识符有效)
locals()虽然也可以赋值,但赋值是无效的(按理说应该报错才对。。。)

或说

默认的情况下下,globals()是可以直接用dict来操作的,但是locals()并不一样,可以先认为locals()是一个只读的dict(或者是没有写回作用的dict),只能知道你当前的代码的局部变量,但是无法通过修改locals() 使之生效

如果用exec在执行代码时,指定一个dict作为这这段代码的locals,是可以修改的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值