说我有以下代码
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
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
在第二个版本中创建了一个名为“元音”的字符串对象,而我在第一个版本中只写了“aeiouAEIOU”。
这两者之间会有运行时差异或空间使用差异吗?
另外,第一个版本的调用堆栈中是否会显示临时变量?如果没有,python 在完成 in 操作后是否只是丢弃它?
最佳答案
除去其余的评论,没有显着的运行时性能。如果您确实想检查它,您可以使用 timeit
模块看提供的两个版本代码的差异,应该是比较小的差异。
但是要回答您的问题,是的,只要访问和使用在堆栈(内存)中引用的变量,它就会被破坏。但是,我更喜欢第一个版本“更好”,因为它可以防止在实际表示的变量中产生歧义。有时变量存储会被客户端覆盖而您可能不知道,这可能会导致您不希望发生的函数的未定义行为。
关于python - python如何处理条件语句中的临时变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60574334/