您的位置:首页 > 编程语言 > Python开发

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

2016-05-07 20:53 483 查看

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,是可以修改的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: