【发布时间】:2018-03-15 23:48:11
【问题描述】:
我正在编写一个使用treelib 库构建和填充树状数据结构的函数。您按如下方式创建树:
foo = Tree()
...然后从那里开始,这已经足够标准了。这是我的简化版:
def make_special_tree(tree, arg1, arg2):
tree = Tree()
other_stuff = things(arg1)
modify_tree(tree, other_stuff, arg2)
return tree
事情是这样的:假设我最终想要一个名为blah 的树对象。如果我执行以下操作,则命令运行时不会出现错误:
make_special_tree('blah', foo, bar)
...但是当我之后输入blah 时,我会返回NameError: name 'blah' is not defined。如果我执行以下操作,该命令也会运行而不会出现错误:
blah = make_special_tree('yoink', foo, bar)
...然后当我输入blah 时,我会返回<treelib.tree.Tree object at 0x10e60db10>,这就是我想看到的。 yoink 同时保持未定义,就像之前版本中的 blah。
因此我的问题是——我可以说这是基本的,但我无法解开这个问题,部分原因是我不确定问这个问题的准确程度。如您所见,现在我必须创建类 Tree() 的实例,并且我认为我必须为我的函数提供一个参数才能这样做。我认为blah = make_special_tree(args) 是格式化它的正确方法,但我怎样才能将变量blah 作为我想要返回的树结构的名称传递?
【问题讨论】:
-
您正在函数中创建 Tree 对象。所以不要将它传递给它,只需删除第一个参数。然后
blah = make_special_tree(foo, bar)就可以了。 -
值没有名字。你可以有多个变量都引用同一个值——或者甚至不是变量的东西,比如列表的各个元素。当然,你可以给一个值一个
name属性,或者任何你想要的,但这与你要存储它的变量(如果有的话)无关。
标签: python function parameter-passing