【问题标题】:How does python handle the temporary variables in a conditional statement?python如何处理条件语句中的临时变量?
【发布时间】:2020-03-07 04:18:36
【问题描述】:

假设我有以下代码

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操作后是否就丢弃它?

【问题讨论】:

标签: python namespaces garbage-collection runtime temporary


【解决方案1】:

关闭其余的 cmets,没有显着的运行时性能。如果您确实想检查它,您可以使用timeit 模块来查看所提供的两个代码版本的差异,这应该是相当微小的差异。

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

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多