python - 将由随机嵌套内置类型组成的对象中的所有 'bytes' 转换为 'str'

标签 python if-statement

这是我的尝试:

def convert(data):
    if isinstance(data, bytes):
        return data.decode('ascii')
    elif isinstance(data, dict):
        return dict(map(convert, data.items()))
    elif isinstance(data, tuple):
        return map(convert, data)
    else:
        return data

这可以更好地概括和/或提高易读性吗?

最佳答案

不知道速度优化,但我不是 if/return/else 范式的忠实拥护者,因为它用不必要的东西阻塞了代码并导致没有 elif 的语言的缩进阶梯(这里不是这样的问题)。

优化可读性(这通常是我的第一偏好),我会将所有那些 elif 行变成 if 并抛弃 else 完全,重新格式化以使其更紧凑:

def convert(data):
    if isinstance(data, bytes):  return data.decode('ascii')
    if isinstance(data, dict):   return dict(map(convert, data.items()))
    if isinstance(data, tuple):  return map(convert, data)
    return data

关于python - 将由随机嵌套内置类型组成的对象中的所有 'bytes' 转换为 'str',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137741/

相关文章:

python - django rest framework 过滤器忽略映射到枚举的 int 字段

c++ - 替代 IF 语句和 switch case

php - num rows if 语句不从我的数据库输出数据

python - 我对这段代码的分析是否正确,为什么会这样写?

javascript - .ajax 中的 if/else 语句

java - 如何确保我正在检查未选中的复选框 selenium java

python - 多处理与线程 Python

python - 如何使用 matplotlib 在 python tkinter 中显示独立于屏幕分辨率的图形?

python - 使用 numpy.where() 返回完整数组的索引,其中测试条件位于切片数组中

python套接字编程: Crafting pim-join-prune packet