重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
需要拿到一个函数里所有的传入的参数,并且存在一个字典里。
下面的方法确实拿到了字典,不过要求函数必须用非固定参数**kwargs定义,而且对调用函数很不友好
def func1(**kwargs):
d = 'local_d'
return kwargs
res = func1(a=1, b=2, c=3)
print(res)
# 结果:
# {'a': 1, 'b': 2, 'c': 3}
locals()函数会以字典类型返回当前位置的全部局部变量,看着很符合现在的需求:
def func2(a, b, c):
d = 'local_d'
return locals()
res = func2(1, 2, 3)
print(res)
# 结果:
# {'d': 'local_d', 'c': 3, 'b': 2, 'a': 1}
想着很好,但是实际用的时候,最后会把函数内部其他变量也返回。不完美,只想要入参的字典。
最后机制的小伙伴想到了,其实还是上面的方法:
def func3(a, b, c):
kwargs = locals()
d = 'local_d'
return kwargs
res = func3(1, 2, 3)
print(res)
# 结果
# {'c': 3, 'b': 2, 'a': 1}
其实就是在函数的开始,其他变量还没有出现的时候,就想把当前的locals()取出来,等到最后再返回。完美!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。