在Python中,如何从argparse深层复制命名空间obj"args"

Hao*_*hen 6 python copy argparse

我从argparse获得了"args":

args = parser.parse_args()

我想将它传递给两个不同的功能,每个功能稍作修改.这就是为什么我要深度复制args,修改副本并将它们传递给每个函数.

但是,copy.deepcopy不起作用.它给了我:

TypeError:无法深入复制此模式对象

那么正确的方法是什么?谢谢

Hao*_*hen 9

我自己只是想办法做到这一点:

args_copy = Namespace(**vars(args))
Run Code Online (Sandbox Code Playgroud)

不是真正的深层复制.但至少比"更深":

args_copy = args
Run Code Online (Sandbox Code Playgroud)

  • 那是浅拷贝。 (2认同)
  • 是的,`args_copy=args` 被称为“引用副本”或“甚至不是副本”之类的东西。 (2认同)

Kam*_*chi 5

import copy
args = parser.parse_args()
args_copy = copy.deepcopy(args)
Run Code Online (Sandbox Code Playgroud)

使用 Python 2.7.15 进行测试