python如何处理条件语句中的临时变量?

python如何处理条件语句中的临时变量?,python,namespaces,garbage-collection,runtime,temporary,Python,Namespaces,Garbage Collection,Runtime,Temporary,假设我有以下代码 def vc_count(word, low, high): if low > high: return 0, 0 v, c = vc_count(word, low+1, high) if word[low] in "aeiouAEIOU": return v+1, c else: return v, c+1 在第二个版本中创建了一个名为“元音”的字符串对象,而我在第一个版本中只写了“ae

假设我有以下代码

def vc_count(word, low, high):
    if low > high:
        return 0, 0
    v, c = vc_count(word, low+1, high)
    if word[low] in "aeiouAEIOU":
        return v+1, c
    else:
        return v, c+1
在第二个版本中创建了一个名为“元音”的字符串对象,而我在第一个版本中只写了“aeiouAEIOU”

这两者之间会有运行时差异还是空间使用差异


另外,第一个版本的调用堆栈中是否会显示临时变量?如果没有,python会在完成in操作后丢弃它吗?

去掉其余的注释,就没有显著的运行时性能。如果您确实想检查它,您可以使用
timeit
模块查看所提供的两个版本的代码之间的差异,它应该是相当微小的差异


但要回答您的问题,是的,只要访问并使用堆栈(内存)中引用的变量,它就基本上被销毁了。然而,我更喜欢第一个版本“更好”,因为它可以防止变量实际代表的模糊性。有时变量存储会被客户端覆盖,而您可能不知道,这可能会导致函数的未定义行为,而这是您不希望发生的。

速度差异应该是微不足道的。在第二个版本中,
元音
只是一个引用字符串的局部变量。这两个版本可以看出差异。。。
def vc_count(word, low, high):
    if low > high:
        return 0, 0
    v, c = vc_count(word, low+1, high)
    vowels = "aeiouAEIOU"
    if word[low] in vowels:
        return v+1, c
    else:
        return v, c+1