Python代码出现SyntaxError: illegal target for annotation错误的原因?
错误原因分析
核心语法错误
你代码里的string== Name:first_name这类写法犯了两个致命语法错误:
- 混淆赋值与比较:变量赋值要用单等号
=,你误用了双等号==(这是判断相等的比较运算符)。 - 错误使用类型注解:
Name:属于Python的类型注解语法,仅用于标注变量/参数的类型(比如string: str = "xxx"),你把它和错误的比较运算符混在一起,导致解释器识别为非法的注解目标,直接抛出SyntaxError。
其他附带问题
除了上述语法错误,代码还有几个逻辑/语法问题:
- 空字符串判断错误:测试用例传入的是空字符串
"",但你代码里判断的是空格" ",会导致逻辑完全不符合预期。 - 字符串拼接错误:
"first_name, last_name"会直接输出字面量,而非变量的值,应改为f"{first_name}, {last_name}"或first_name + ", " + last_name。 - print语句缩进错误:你把print放在了
return string之后,函数执行到return就会终止,这些print永远不会被执行。
修正后的示例代码
def format_name(first_name, last_name): if first_name == "" and last_name == "": string = "" elif first_name == "" and last_name != "": string = last_name elif first_name != "" and last_name == "": string = first_name else: string = f"{first_name}, {last_name}" return string print(format_name("Ernest", "Hemingway")) print(format_name("", "Madonna")) print(format_name("Voltaire", "")) print(format_name("", ""))
内容的提问来源于stack exchange,提问作者F. Y.
相关产品推荐
相关产品推荐

