当前位置: 首页 > 面试题库 >

在变量声明中使用冒号

柳俊健
2023-03-14
问题内容

最近有人问我这在python中是什么意思:

>>> char : str

我不知道。我以前从未见过。我检查了文档,没有类似的东西。一个人的建议是它是静态类型声明,但是在文档中也绝对没有任何内容。

有了以上,如果我 >>> type(char)失败了

如果我>>> char : str = 'abc'可以,并且type(char)的结果是<class: str>。但是它不能是静态声明,因为我可以>>> char : str = 4并且type(char)变为<class: int>

所以我来这里是为了收集许多SO霸主的智慧。这意味着什么?


问题答案:

您正在查看变量的 注释 。提示已移至__annotations__映射:

>>> char: str
>>> __annotations__
{'char': <class 'str'>}

变量注释在那里支持第三方工具,例如类型检查器;该语法是Python 3.6中的新增功能。

请参阅PEP 526- 变量注释的语法 ,以及
Python
3.6的新增功能

就像函数注释一样,Python解释器不会在变量注释中附加任何特殊含义,而仅将它们存储在__annotations__类或模块的属性中。



 类似资料:
  • let和const是JavaScript里相对较新的变量声明方式。 像我们之前提到过的,let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题。 const是对let的一个增强,它能阻止对一个变量再次赋值。 因为TypeScript是JavaScript的超集,所以它本身就支持let和const。 下面我们会详细说明这些新的声明方式以及为什么推荐使用它们来代替v

  • 问题内容: 我偶然发现了一个奇怪的问题,下面的代码无法编译: 错误(代码是linter推荐的代码)。: 注意,确实使用了该变量。 但是,如果我添加了else块-一切都会按预期编译: 这看起来像是编译器中的错误,还是一个已知问题?任何想法?(我正在使用go 1.11) 编辑:到目前为止的所有被告。按照:https : //golang.org/ref/spec#Short_variable_decl

  • 问题内容: 当我使用上面的语句时,我没有得到错误(我没有使用结尾),但是当我使用下面的语句时,我得到了这个错误: int类型的文字3244444444超出范围 如果使用,则没有错误。 这是什么原因呢?对于长变量,不强制使用l。 问题答案: 被解释为文字整数,但不适合32位变量。它必须是一个 字面量long值 ,因此它需要一个or或末尾: 更多信息: 原始数据类型,特别是 默认值 和 文字 部分。

  • 问题内容: 我正在尝试对MySQL 5.0中的变量进行一些简单的操作,但是我无法完全正常工作。我已经看到了很多(非常!)DECLARE / SET的不同语法,我不确定为什么……在任何情况下,我都可能会混淆它们/选择错误的语法/混合它们。 这是一个失败的最小片段: 我也尝试过使用BEGIN … END包装它;并作为一个程序。在这种情况下,MySQL Workbench会帮助我:第一行显示“’)’附近

  • 修改过程后,仍然返回错误#1324-未定义的游标:getid。我如何解决这个问题?

  • 问题内容: 如何在简短的变量声明中从其他块中重新声明变量? 关于此问题有很长的话题,但现在我很感兴趣如何解决此问题。 问题答案: 简短的变量声明的Go规范很明确: 短变量声明可以重新声明变量,只要它们最初是在同一块中以相同类型声明的,并且至少一个非空变量是新变量。 因此,在简短的变量声明中,您无法重新声明最初在其他块中声明的变量。 这是一个如何通过在内部块中声明局部变量()并将其()分配给在外部块