- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我已经安装了 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 byPython: 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
更新:我确实看到 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/
for /f "tokens=*" %%a in ('find /v ":" "%appdata%\gamelauncher\options.txt" ^| find "menu=a"') do (
我在 Javascript 中有一组全局计数器变量: var counter_0 = 0; var counter_1 = 0; var counter_2 = 0; 等等 然后我有一个 Javasc
好的,我正在阅读一些有关 RedBlackTrees 的代码。我注意到这一行“v1 = v2 = v3 = v4;”我理解类似“v1 += v2”(将 v2 添加到 v1 的当前值)和“v1 = v2
我正在为 C# 中的游戏数据加载制作一个 csv 阅读器,我想做的就是从数组(变量)的值声明一个变量,我们可以在 php 中像 $$foo 那样做。喜欢 void csvReader(string s
假设我有变量 内容为“ 123 ”和变量 b123 里面有一些文字。出于某种原因,我想使用变量 作为第二个 var 名称的一部分。像这样的东西: SET a=123 SET b123=some_tex
我对 javascript 有点陌生,我无法通过谷歌搜索找到任何内容,我正在编写一个程序,并且能够执行我所要求的操作: if (Variable == 1 或 Variable == 2 或 Vari
我发现我自己在做这种类型的 IF 语句分配。例如: if($variable == 1 || $variable == "whatever" || $variable == '492') { ...
我的虚拟 PC 在 MS-DOS 6.22 上运行时出现问题。 我需要使用变量 Date ,但我无法得到它,因为每当我尝试回显变量时,它都会显示 %variable%反而。 我在 Windows 控制
尝试运行此代码时: List list = em.createQuery("select balance b from Users where b.userName = '" + user_name.
我有一些代码,其中变量可以是 undefined、null 或正常值。无论变量是 undefined 还是 null,代码都需要做同样的事情。说有没有危险 for (var cur = this.bu
我正在编写一个批处理命令脚本,其中检查环境变量。我需要通过传递所有必需的变量来编写一个 FOR 循环,然后验证它是否已定义,如果未定义,则提示该键的值并永久设置该变量。 问题是我无法取消引用循环变量并
我知道这些是 Rails 的基础知识,但我仍然不知道 = 符号和 => 之间的全部区别以及 @some_variable 之间的区别、@@some_variable 和 :some_variable
我正在使用以下内容创建一个动态变量(PHP 术语中的“变量变量”): foo: "test1" set to-word (rejoin [foo "_result_data"]) array 5 但是
我一直在啃 PHP 套接字服务器和客户端的基础知识 here . 然后我偶然发现了这些行(摘自上面链接的第一个示例,发生在 while 中): if (false === ($buf = socket
这个问题在这里已经有了答案: What does "|=" mean? (pipe equal operator) (6 个答案) 关闭 9 年前。 我正在寻找一些编码来扩展我在 Java 方面的知
如何在 C++ 中从其他变量的值打印变量我只是 C++ 的新手。 在 php 中,我们可以通过其他变量的值来制作/打印一个变量。像这样。 $example = 'foo'; $foo = 'abc';
作为 Ruby on Rails 新手,我明白“@”和“:”引用有不同的含义。我看到了this post在 SO 中,其中描述了一些差异。 @ 表示实例变量(例如@my_selection) :表示别
编程新手/甚至更新。一个小的 go 程序有问题 - 不会编译带有 undefined variable 错误。代码: package main import ( "fmt" "io" "o
我知道其他一些语言,如PHP,支持“变量变量名”的概念--即,字符串的内容可以用作变量名的一部分。。我听说总的来说这不是一个好主意,但我认为它可以解决我在Python代码中遇到的一些问题。。有没有可能
我有两个版本的代码。 版本 1 Launcher.java class Launcher { public static void main(String[] args) {
我是一名优秀的程序员,十分优秀!