gpt4 book ai didi

python - 解析字符串并分配给同一个变量?

转载 作者:行者123 更新时间:2023-12-04 08:39:20 25 4
gpt4 key购买 nike

这是一种用不同类型的值重新分配变量的 pythonic 方式吗?

我有一个来自命令行的 k1:v1,k2:v2,k3:v3 等形式的字符串。解析它很简单:

kvs=args.kvs
if kvs is not None:
kvs = [(kv[0], kv[1]) for kv in [kv_str.split(':') for kv_str in kvs.split(',')]]

自从我从严格类型语言转向 python 以来,这种方法对我来说看起来并不干净,因为它被重新分配了不同的类型。

它会被认为是解析字符串的 pythonic 解决方案吗?

最佳答案

简答:

这是一个很好的方法。尽管您可以只执行 if kvs:,因为空集合类型在 Python 中被认为是错误的(当然如果这适合您的情况)。

长答案:

不幸的是,这实际上只是 Python 世界的观点。当从严格类型的语言转向 Python 时,您会看到人们做的事情在更严格的语言中是不鼓励或禁止的。

话虽这么说,但我认为尽可能避免突变并在类型发生变化时创建新变量总是更安全。在没有类型检查的情况下传递 args 的大型代码库中,这种方法可以为您在未来的调试中节省大量时间。

您可能看到的另一种写法是将列表对象分配给新变量。

kvs = "k1:v1,k2:v2,k3:v3"

kv_pairs = [
tuple(kv_str.split(':'))
for kv_str in kvs.split(',')
] if kvs else []

编辑:修复了我发布的代码示例

关于python - 解析字符串并分配给同一个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61511969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com