gpt4 book ai didi

python - 语法错误 : invalid syntax with variable annotation

转载 作者:太空狗 更新时间:2023-10-29 21:06:25 26 4
gpt4 key购买 nike

我已经安装了 visual studio code 和 code runner 扩展。然后我有这段代码:

text: str = "slkdfjsd"

我点击 CTRL-ALT-N 得到:

    text: str = "slkdfjsd"
^
SyntaxError: invalid syntax

我喜欢使用类型,而且这个程序工作正常,它看起来像是在提示类型我怎么能让它理解类型是好的?

更多详情:

$ /usr/bin/env python3 --version
Python 3.6.6 :: Anaconda, Inc.

当它运行时:

[Running] /usr/bin/env python3 "/home/myuser/dev/projects/python-snippets/text-summarization"
File "/home/myuser/dev/projects/python-snippets/text-summarization", line 44
text: str = "slkdfjsd"
^
SyntaxError: invalid syntax

Code runner 插件文档说:

$pythonPath: The path of Python interpreter (set by Python: Select Interpreter command)

但是当我按照评论的建议运行打印路径时,我得到了一个不同的版本:

sys.version_info(major=3, minor=5, micro=2, releaselevel='final', serial=0)

这与您在上面从我选择的 >python: select interpreter 中看到的有所不同。

另请注意,当我在终端而不是 CTRL-ALT-N 中运行此代码时,我在 visual studio code 中运行此代码,然后选择的 python 版本是 3.6,它运行良好,没有任何语法错误,所以我认为代码运行器没有看到我在选择 >python: select interpreter

时看到的相同 python 版本

更新:我确实看到 code-runner 如上所述使用了错误的 python 解释器,所以我打开我的用户设置并尝试更新 python 以指向正确的解释器,但它没有改变它仍然使用相同的错误解释器的任何东西这是我尝试过的:

{
"git.autofetch": true,
"terminal.integrated.rendererType": "dom",
"code-runner.executorMap": {
"javascript": "node",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"php": "php",
"python": "/home/user/home/user/dev/anaconda3/envs/pymachine/bin/python",
"perl": "perl",
"perl6": "perl6",
"ruby": "ruby",
"go": "go run",
"lua": "lua",
"groovy": "groovy",
"powershell": "powershell -ExecutionPolicy ByPass -File",
"bat": "cmd /c",
"shellscript": "bash",
"fsharp": "fsi",
"csharp": "scriptcs",
"vbscript": "cscript //Nologo",
"typescript": "ts-node",
"coffeescript": "coffee",
"scala": "scala",
"swift": "swift",
"julia": "julia",
"crystal": "crystal",
"ocaml": "ocaml",
"r": "Rscript",
"applescript": "osascript",
"clojure": "lein exec",
"haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
"racket": "racket",
"ahk": "autohotkey",
"autoit": "autoit3",
"dart": "dart",
"pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
"d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
"haskell": "runhaskell",
"nim": "nim compile --verbosity:0 --hints:off --run"
}
}

但是在更改之后(也许我做错了什么我是 vscode 新手)我仍然看到代码运行器正在运行它:

[Running] /usr/bin/env python3 "/home/myuser/dev/projects/python-snippets/text-summarization"

最佳答案

注意:以下答案假定您使用的是正确的版本 ( 3.6+ ),如果不是:简单地说,您当前版本的 Python 不支持变量注释。


问题可能看起来像是类型注释导致了 SyntaxError,但另一种非常合理的可能性是前面的行中有一个未闭合的括号或未闭合的东西。由于在 docs ,它说:

The parser repeats the offending line and displays a little ‘arrow’ pointing at the earliest point in the line where the error was detected. The error is caused by (or at least detected at) the token preceding the arrow

(强调我的)

只有在给定上下文中无效的标记时,解析器才能检测到未闭合的括号。由于方括号和圆括号可以贯穿多行(这意味着不会引发 EOL),并且 text 是一个有效的变量标识符,这只剩下括号或圆括号中不允许出现冒号(除了当它用作参数时,它也接受类型注释)。

以下是您在 tio.run(SE code-golf 编译器)上托管的代码的可重现示例:

https://tio.run/##K6gsycjPM/7/X4OrJLWixEqhuKRIwVZBXf3/fwA

(
text: str = ''

: 是该上下文中的第一个无效标记。

  File ".code.tio", line 2
text: str = ''
^
SyntaxError: invalid syntax

如果你有一个未封闭的字典,在允许冒号的地方,箭头将指向其他地方,因为 text: str 都是有效的标记,由一个开放的 { .指针将指向等号,因为这是第一个无效标记。

{
text: str = ''

异常(exception)情况:

  File ".code.tio", line 2
text: str = ''
^
SyntaxError: invalid syntax

关于python - 语法错误 : invalid syntax with variable annotation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51203670/

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