小编Pul*_*yal的帖子

我们如何将字节作为关键字参数的关键字传递给函数?

让我们举个例子:

def fun(**args):
    print(str(args))

dic = {'name': 'Pulkit'}
fun(**dic)
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常,我有以下输出:

{'name': 'Pulkit'}
Run Code Online (Sandbox Code Playgroud)

现在让我们将值作为字节传递:

dic_vb = {'name': b'Pulkit'}
fun(**dic_vb)
Run Code Online (Sandbox Code Playgroud)

这也很好,并具有以下输出:

{'name': b'Pulkit'}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将密钥作为字节时,事情会发生变化:

dic_kb = {b'name': 'Pulkit'}
Run Code Online (Sandbox Code Playgroud)

这导致TypeError说:

TypeError: fun() keywords must be strings
Run Code Online (Sandbox Code Playgroud)

有没有办法我们可以传递字节作为关键字参数.我还在repo检查了CPython代码,它处理关键字参数,似乎我们无法通过.是否有任何解决方法或我需要确保传递unicodes.

我正在处理一个代码库,我们在Python 2上有很多这样的实例,需要移植到Python 3.所以唯一可能的方法是将所有关键字参数转换为unicodes?

python function keyword-argument python-3.x

5
推荐指数
1
解决办法
259
查看次数

标签 统计

function ×1

keyword-argument ×1

python ×1

python-3.x ×1