gpt4 book ai didi

Python 语法结束 "return outside function"

转载 作者:行者123 更新时间:2023-11-28 22:34:38 24 4
gpt4 key购买 nike

我注意到 Python 语法允许 return 语句出现在函数外,但我真的不明白,为什么?我相信可以指定语法,这样就不会被允许。

这是一段 Python 语法,它允许:

single_input: NEWLINE | simple_stmt | compound_stmt NEWLINE
simple_stmt: small_stmt (';' small_stmt)* [';'] NEWLINE
small_stmt: (expr_stmt | del_stmt | pass_stmt | flow_stmt |
import_stmt | global_stmt | nonlocal_stmt | assert_stmt)
flow_stmt: break_stmt | continue_stmt | return_stmt | raise_stmt | yield_stmt
return_stmt: 'return' [testlist]

解释器也将此报告为语法错误('return' 外部函数),但如果语法中未指定,解析器如何检测到它?

最佳答案

首先,中断器构建 AST 树。然后,当它通过访问 AST 树为基本 block 生成代码时,它会验证 return 语句是否在函数内部。

compiler_visit_stmt(struct compiler *c, stmt_ty s)
...
switch (s->kind) {
...
case Return_kind:
if (c->u->u_ste->ste_type != FunctionBlock)
return compiler_error(c, "'return' outside function");

如您所见,语言的语义不仅仅由其语法定义。

关于Python 语法结束 "return outside function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38828017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com