有时,某些值/字符串在函数中是硬编码的.例如,在以下函数中,我定义了一个"常量"比较字符串并检查它.
def foo(s):
c_string = "hello"
if s == c_string:
return True
return False
Run Code Online (Sandbox Code Playgroud)
没有讨论太多关于为什么它的坏做到这一点,以及应如何在外部范围进行定义,我想知道幕后发生了什么时,它是这样定义的.
是否每次调用都会创建字符串?
如果不是字符串,"hello"那么它就是列表:( [1,2,3]或者如果重要的话,列表中包含可变内容的列表)会发生同样的情况吗?
我想为练习编写测试函数,以确保正确实现函数.
所以我想知道,有没有办法,给定一个函数"foo",来检查它是否是递归实现的?
如果它封装了一个递归函数并使用它,它也会计数.例如:
def foo(n):
def inner(n):
#more code
inner(n-1)
return inner(n)
Run Code Online (Sandbox Code Playgroud)
这也应该被认为是递归的.
请注意,我想使用外部测试功能来执行此检查.不改变函数的原始代码.