Python 如何动态生成变量后动态调用函数

2019-08-08 18:16:50 +08:00
 fghjghf

前提: 基于 redis 的封装,例如在 list 的 rpush 和 lpush,参数只能单个的传送。不支持 list,dict,tuple .如果传了就报错:redis.exceptions.DataError: Invalid input of type: 'list'. Convert to a byte, string or number first.

因为是二次封装,如何动态生成变量,然后作为入参动态调用 redis 函数。

3344 次点击
所在节点    Python
8 条回复
Trim21
2019-08-08 18:21:31 +08:00
def my_lpush(key: str, container: list):
redis_conn.lpush(key, *container)


你问的莫非是这个?
fghjghf
2019-08-08 20:50:06 +08:00
@Trim21 对对对,就是这个,dalao 怎么处理的
believeMe
2019-08-08 21:02:04 +08:00
@fghjghf #2 大佬 加个好友
Trim21
2019-08-08 21:03:02 +08:00
list 和 tuple 你在调用的时候就直接前面加一个星号就好了, 这是 python 的某个语法, 会直接把可迭代对象展开传给函数

redis_conn.lpush(key, *container)

你这么调用, 就会把 container 里面所有的元素 lpush 到对应的 redis 列表里面

比如 container==['1','2','3']

就会转化成 redis 的 LPUSH ${key} '1' '2' '3'这条命令

dict 的话还要额外处理一下, 我也不知道你到底要传什么进去.
AlvaIM
2019-08-08 21:04:14 +08:00
晕死, 基本的教程上就有的东西, 感情都不看直接撸的么?
aheadlead
2019-08-08 21:10:43 +08:00
@AlvaIM #5 这个还好吧,有时这种问题也确实不知道怎么 google
fghjghf
2019-08-08 21:15:09 +08:00
@Trim21 @AlvaIM 谢谢大佬,没仔细看语法,直接上手的,遇到问题在往回看
2DaYe
2019-08-09 01:38:09 +08:00
4 楼正解

def func(*args, **kwargs):
print(args, kwargs)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590252

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX