2. 变量作用域问题
变量的作用域决定了变量在代码中的可见范围。要是在某个作用域内使用了在该作用域之外定义的变量,就可能出现“变量未定义”错误。
示例代码:
import flet as ft
def main(page: ft.Page):
def inner_function():
# 尝试使用外部函数作用域的变量
text.value = new_message # new_message 未在该作用域定义
# 定义变量
new_message = "New message"
text = ft.Text()
# 调用内部函数
inner_function()
page.add(text)
ft.app(target=main)
错误分析: new_message 变量是在 main 函数作用域内定义的,而在 inner_function 函数内部使用时,由于 Python 默认不会在外部作用域查找变量,所以会认为 new_message 未定义。
解决方案:可以将变量作为参数传递给内部函数,或者使用 nonlocal 关键字(如果是嵌套函数)。
import flet as ft
def main(page: ft.Page):
def inner_function(msg):
text.value = msg
# 定义变量
new_message = "New message"
text = ft.Text()
# 调用内部函数并传递变量
inner_function(new_message)
page.add(text)
ft.app(target=main)
...全文