我正在尝试设置一个函数来执行类似的操作
def __binaryTreeInsert(self, toInsert, currentNode=getRoot(), parentNode=None):
其中current node以root开始,然后我们将其更改为方法中的另一个节点,并递归地再次调用它。在
但是,我不能让'currentNode=getRoot()'工作。如果我尝试调用函数getRoot()(如上所述),它会说我没有给它所有必需的变量,但是如果我尝试调用self.getRoot()它抱怨self是一个未定义的变量。有没有一种方法可以在调用此方法时不必指定根目录就可以做到这一点?在
编辑:此方法的基本情况已经存在
^{pr2}$所以用这个来确定根是行不通的
你能做到的
虽然
arg=None
是未提供参数的惯用Python sentinel值,但它没有成为None
。例如,在Lua中,惯用的未提供参数是一个空表。我们可以将其应用于本案:输出:
^{pr2}$这适用于除显式传递
Foo.sentinel
之外的任何情况,因为Foo.sentinel
被保证有一个唯一的地址——这意味着,x is Foo.sentinel
在x是时才是真的:)因此,由于我们围绕Foo.sentinel
创建了闭包,因此只有一个对象可以创建一个不明确的情况,它绝不会被偶然使用。在定义函数或方法时,
def
行立即求值,包括任何关键字参数。因此,函数调用和可变对象之类的东西通常不适合作为默认参数。在解决方案是使用sentinel值。
None
是最常见的,但是对于None
是有效值的情况,您可以使用另一个sentinel,例如:相关问题 更多 >
编程相关推荐