前提: 基于 redis 的封装,例如在 list 的 rpush 和 lpush,参数只能单个的传送。不支持 list,dict,tuple .如果传了就报错:redis.exceptions.DataError: Invalid input of type: 'list'. Convert to a byte, string or number first.
因为是二次封装,如何动态生成变量,然后作为入参动态调用 redis 函数。
1
Trim21 2019-08-08 18:21:31 +08:00 via Android
def my_lpush(key: str, container: list):
redis_conn.lpush(key, *container) 你问的莫非是这个? |
4
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 的话还要额外处理一下, 我也不知道你到底要传什么进去. |
5
AlvaIM 2019-08-08 21:04:14 +08:00
晕死, 基本的教程上就有的东西, 感情都不看直接撸的么?
|
8
2DaYe 2019-08-09 01:38:09 +08:00
4 楼正解
def func(*args, **kwargs): print(args, kwargs) |