python – 这种奇怪的冒号行为是做什么的?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 这种奇怪的冒号行为是做什么的?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1304字,纯文字阅读大概需要2分钟。
内容图文
![python – 这种奇怪的冒号行为是做什么的?](/upload/InfoBanner/zyjiaocheng/715/4b1a8061c17f458799fe457911581554.jpg)
我使用的是Python 3.6.1,我遇到了一些非常奇怪的东西.我有一个简单的字典分配拼写错误,花了我很长时间才找到.
context = {}
context["a"]: 2
print(context)
产量
{}
什么是代码上下文[“a”]:2在做什么?它应该IMO时不会引发SyntaxError.起初我以为它创造了一个切片.但是,键入repr(context [“a”]:2)会引发SyntaxError.我还在控制台中键入了上下文[“a”]:2并且控制台没有打印任何内容.我想也许它没有返回,但我不太确定.
我也认为它可能是一行if语句,但这也不应该是正确的语法.
另外,context [“a”]应该引发KeyError.
我很困惑.到底是怎么回事?
解决方法:
您不小心编写了语法正确的变量注释.该功能是在Python 3.6中引入的(见PEP 526).
虽然变量注释被解析为annotated assignment的一部分,但赋值语句是可选的:
annotated_assignment_stmt ::= augtarget ":" expression ["=" expression]
因此,在上下文[“a”]中:2
> context [“a”]是注释目标
> 2是注释本身
> context [“a”]未被初始化
PEP声明“注释的目标可以是任何有效的单一分配目标,至少在语法上(由类型检查器决定如何处理)”,这意味着密钥不需要存在注释(因此没有KeyError).这是原始PEP的一个例子:
d = {}
d['a']: int = 0 # Annotates d['a'] with int.
d['b']: int # Annotates d['b'] with int.
通常,注释表达式应该评估为Python类型 –
毕竟主要使用注释是类型提示,但它没有强制执行.无论结果的类型或值如何,注释都可以是任何有效的Python表达式.
正如您所看到的,此时类型提示非常宽松且很少有用,除非您有一个静态类型检查器,如mypy.
内容总结
以上是互联网集市为您收集整理的python – 这种奇怪的冒号行为是做什么的?全部内容,希望文章能够帮你解决python – 这种奇怪的冒号行为是做什么的?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。