为什么在Python for循环中带上局部变量

为什么在Python for循环中带上局部变量,python,algorithm,Python,Algorithm,这段代码中发生了什么: 类解决方案: def removeComments(self,source:List[str])->List[str]: in_block=False ans=[] 对于行输入源: 打印(“当前行:”,第行) i=0 如果不在_块中: 换行符=[] 而我

这段代码中发生了什么:

类解决方案:
def removeComments(self,source:List[str])->List[str]:
in_block=False
ans=[]
对于行输入源:
打印(“当前行:”,第行)
i=0
如果不在_块中:
换行符=[]
而我
newline
是在
source
中的每一行的每次迭代中创建的(如果块注释未打开),那么当当前行位于“b”时,代码如何使用“a”获得
newline

输入:[“a/*注释”、“行”、“更多注释*/b”]
打印:
当前行:a/*注释
行:a/*注释行i:换行符[]

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

  • 模块
  • 班级
  • 函数定义
还有一些与这个问题无关的问题。你可以查一下细节


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

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

  • 模块
  • 班级
  • 函数定义
还有一些与这个问题无关的问题。你可以查一下细节


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

在代码运行期间,只有一个
换行符的实例<代码>在\u块中
在第一行设置,并保持设置直到最后一行,从而防止
换行
被重新分配。谢谢Jason。那么for循环是如何前进到
源代码中的下一行的呢?我知道,
换行符
是在第一次迭代期间创建的,并且在特定迭代结束之前一直保留在那里。它是如何被带到for循环的其他迭代中的?与java不同,python没有基于块的作用域的概念。有一个范围:函数的范围,就是它。当您开始新的迭代时,该变量不会被删除谢谢Paul。这就是为什么。我正在努力自学Python。您介意回答这个问题吗?这样我就可以将它标记为已回答?在代码运行期间,只有一个
换行符
实例存在<代码>在\u块中
在第一行设置,并保持设置直到最后一行,从而防止
换行
被重新分配。谢谢Jason。那么for循环是如何前进到
源代码中的下一行的呢?我知道,
换行符
是在第一次迭代期间创建的,并且在特定迭代结束之前一直保留在那里。它是如何被带到for循环的其他迭代中的?与java不同,python没有基于块的作用域的概念。有一个范围:函数的范围,就是它。当您开始新的迭代时,该变量不会被删除谢谢Paul。这就是为什么。我正在努力自学Python。你介意回答这个问题吗?这样我就可以把它标记为已回答了?
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']