为什么局部变量会在Python中循环

越南的

这段代码中发生了什么:

class Solution:
    def removeComments(self, source: List[str]) -> List[str]:
        in_block = False
        ans = []
        for line in source:
            print("current line:", line)
            i = 0
            if not in_block:
                newline = []
            while i < len(line):
                if line[i:i+2] == '/*' and not in_block:
                    in_block = True
                    i += 1
                elif line[i:i+2] == '*/' and in_block:
                    in_block = False
                    i += 1
                elif not in_block and line[i:i+2] == '//':
                    break
                elif not in_block:
                    print("line:", line, "line i:", line[i], "newline", newline)
                    newline.append(line[i])
                    print("newline after:", newline)
                i += 1
            if newline and not in_block:
                ans.append("".join(newline))
                print("ans:", ans)
        return ans

newline是在一行的每次迭代中创建的source(如果未打开块注释),那么newline当当前行位于“ b”时,代码如何以“ a”获得?

input: ["a/*comment", "line", "more_comment*/b"]
print:
current line: a/*comment
line: a/*comment line i: a newline []
newline after: ['a'] <= this makes sense, after removing everything after /*
current line: line <= this makes sense, we ignore this because the block comment is still open
current line: more_comment*/b <= at this last line, block comment is still open
line: more_comment*/b line i: b newline ['a'] <== this isn't supposed to happen
newline after: ['a', 'b'] <= how?
ans: ['ab']

在当前行=“ more_comment * / b”处,它是输入索引2处的项目sourcenewline不应存在​​于该行,因为它是在for循环内创建的。

我可以理解这种解决方案,因为在buffer循环之外创建了,并且每次将追加到后都会清除它output但是,上面的代码使我完全困惑。

保罗

Python没有类似于Java的基于块范围的概念。虽然仍按块定义作用域,但块定义为以下之一:

  • 模组
  • 功能定义

和其他一些与此问题无关的信息。您可以在此处查找详细信息

对于上面的代码,这意味着名称newline在循环的第一次迭代中绑定,然后将一直存在,直到离开当前块(函数removeComments为止有关如何解析和处理变量的详细信息,请参见此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么局部变量不会在数组定义中隐藏全局变量

来自分类Java

为什么增强的for循环的局部变量必须是局部的?

来自分类Java

为什么局部变量在Java中是线程安全的

来自分类Dev

为什么lambda对象中的局部变量是const?

来自分类Java

为什么局部变量在Java中也称为“自动”?

来自分类Dev

为什么我不能从python中的异常返回我的局部变量?

来自分类Dev

为什么即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量?

来自分类Dev

python:glob,循环和局部变量

来自分类Dev

为什么在类中定义的变量不是局部变量而是Java中的实例变量?

来自分类Java

什么是线程中的局部变量?

来自分类Dev

为什么在此函数中全局变量与局部变量不同?

来自分类Dev

Python修改函数中的局部变量

来自分类Dev

异步修改Python中的局部变量

来自分类Dev

为什么解释器调用变量ia局部变量

来自分类Java

为什么在case语句中变量不是局部变量?

来自分类Java

为什么局部变量在if-else构造中而不在if-else-if构造中启动?

来自分类Dev

Python为什么不从封闭范围切换到局部变量范围?

来自分类Dev

在分配之前引用了Python局部变量'charcheck',为什么?

来自分类Dev

为什么python显示UnboundLocalError:赋值之前引用了局部变量'w'?

来自分类Dev

为什么我的函数局部变量之间在堆栈中没有存储空间?

来自分类Dev

为什么要在C中重新加载静态局部变量?

来自分类Dev

为什么/如何确定函数何时覆盖Julia中的局部变量?

来自分类Dev

为什么分配给堆栈中的局部变量的内存比C ++所需的内存多?

来自分类Dev

为什么不能在ngAfterViewInit函数中访问局部变量?

来自分类Dev

为什么必须为存储在堆中的函数的局部变量调用delete?

来自分类Dev

为什么在Node.js中执行SQL查询后不能使用局部变量?

来自分类Java

为什么Spring Security将SecurityContext存储在线程局部变量中

来自分类Dev

为什么使用* ngIf时模板局部变量在模板中不可用?

来自分类Dev

为什么函数无法访问外部声明的对象中的局部变量

Related 相关文章

  1. 1

    为什么局部变量不会在数组定义中隐藏全局变量

  2. 2

    为什么增强的for循环的局部变量必须是局部的?

  3. 3

    为什么局部变量在Java中是线程安全的

  4. 4

    为什么lambda对象中的局部变量是const?

  5. 5

    为什么局部变量在Java中也称为“自动”?

  6. 6

    为什么我不能从python中的异常返回我的局部变量?

  7. 7

    为什么即使使用 setlocal enabledelayedexpansion 也无法访问 for 循环(批处理文件)中的局部变量?

  8. 8

    python:glob,循环和局部变量

  9. 9

    为什么在类中定义的变量不是局部变量而是Java中的实例变量?

  10. 10

    什么是线程中的局部变量?

  11. 11

    为什么在此函数中全局变量与局部变量不同?

  12. 12

    Python修改函数中的局部变量

  13. 13

    异步修改Python中的局部变量

  14. 14

    为什么解释器调用变量ia局部变量

  15. 15

    为什么在case语句中变量不是局部变量?

  16. 16

    为什么局部变量在if-else构造中而不在if-else-if构造中启动?

  17. 17

    Python为什么不从封闭范围切换到局部变量范围?

  18. 18

    在分配之前引用了Python局部变量'charcheck',为什么?

  19. 19

    为什么python显示UnboundLocalError:赋值之前引用了局部变量'w'?

  20. 20

    为什么我的函数局部变量之间在堆栈中没有存储空间?

  21. 21

    为什么要在C中重新加载静态局部变量?

  22. 22

    为什么/如何确定函数何时覆盖Julia中的局部变量?

  23. 23

    为什么分配给堆栈中的局部变量的内存比C ++所需的内存多?

  24. 24

    为什么不能在ngAfterViewInit函数中访问局部变量?

  25. 25

    为什么必须为存储在堆中的函数的局部变量调用delete?

  26. 26

    为什么在Node.js中执行SQL查询后不能使用局部变量?

  27. 27

    为什么Spring Security将SecurityContext存储在线程局部变量中

  28. 28

    为什么使用* ngIf时模板局部变量在模板中不可用?

  29. 29

    为什么函数无法访问外部声明的对象中的局部变量

热门标签

归档