用不同类型的值重新分配变量是一种python方式吗
我有一个来自命令行的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解决方案吗
Tags:
简短答复:
这是一个很好的方法。尽管您可以只执行
if kvs:
,因为在Python中空集合类型被认为是错误的(当然,如果这适合您的情况)长答覆:
不幸的是,这真的只是Python世界的观点。从严格类型语言到Python,你会看到人们用更严格的语言做不鼓励或禁止的事情
尽管如此,我认为尽可能避免变异,如果类型发生变化,则创建一个新变量总是更安全的。在没有类型检查的情况下传递参数的大型代码库中,这种方法可以在将来节省大量调试时间
另一种方式是将列表对象分配给一个新变量
编辑:修复了我发布的代码示例
这还不错,但您可能会发现在参数解析期间解析它更干净。例如,在
argparse
中,可以使用自定义的类型:输出:
相关问题 更多 >
编程相关推荐