功能注释:PEP-3107
我遇到了演示Python3功能注释的一小段代码。这个概念很简单,但是我想不出为什么要在Python3中实现这些功能或对其有什么好处。也许可以启发我吗?
这个怎么运作:
def foo(a: 'x', b: 5 + 6, c: list) -> max(2, 9):
... function body ...
在参数后冒号后面的所有内容均为“注释”,而在后面的信息->
为函数返回值的注释。
foo.func_annotations将返回一个字典:
{'a': 'x',
'b': 11,
'c': list,
'return': 9}
提供此功能有什么意义?
我认为这实际上很棒。
来自学术背景,我可以告诉您,注释已证明对启用像Java这样的语言的智能静态分析器非常有用。例如,您可以定义语义,例如状态限制,允许访问的线程,体系结构限制等,然后有很多工具可以读取这些内容并进行处理,以提供超出编译器的保证。您甚至可以编写检查先决条件/后置条件的东西。
我觉得这样的事情在Python中特别需要,因为它的类型较弱,但是实际上没有任何结构可以使它变得简单明了,并成为正式语法的一部分。
注解还有其他用途,无法保证。我可以看到如何将基于Java的工具应用于Python。例如,我有一个工具,可让您为方法分配特殊警告,并在调用它们时向您提供指示,以指示您应阅读其文档(例如,假设您有一个不能用负值调用的方法,但是名称不直观)。通过注释,我可以为Python技术性地编写类似的内容。同样,如果存在正式语法,则可以编写基于标签将大型方法组织起来的工具。
那么在这里@OrderColiv(name="order_id")有什么用呢? 那么在这里@OrderColiv(name="order_id")有什么用呢?
问题内容: 我大致了解这种构造的作用:它创建了SomeType EJB,并将对象注入到另一个EJB中。 现在,我有一个以这样的方式开始的类:(尽管我认为只有的相关,我会给出所有类级别的注释) 什么的就做吗?他们可能会从JNDI获取或创建“ name1” …对象,但是将结果放在哪里?我看不到附近有任何电话,但是代码库很大,所以我对此不太确定。 额外的问题:我想这两个注释只是重复默认值? 更新:目前有
确保对模块, 函数, 方法和行内注释使用正确的风格 Python中的注释有单行注释和多行注释: Python中单行注释以 # 开头,例如:: # 这是一个注释 print("Hello, World!") 多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来,例如: 1、单引号(''') #!/usr/bin/python3 ''' 这是多行注释,用三个单引号 这是多行注释
问题内容: 最近,我开始使用Python3,它缺乏xrange的好处。 简单的例子: 1) Python2: 2) Python3: 结果分别是: 1) 1.53888392448 2) 3.215819835662842 这是为什么?我的意思是,为什么xrange被删除了?这是学习的好工具。对于初学者来说,就像我自己一样,就像我们都处在某个时刻。为什么要删除它?有人可以指出我正确的PEP,我找不
Eclipse源菜单有一个“generate hashCode/equals method”,它生成如下函数。 如果我在生成和时选择多个字段,Eclipse使用上面显示的相同模式。 我不是散列函数的专家,我想知道生成的散列函数有多“好”?在什么情况下它会发生故障并导致太多碰撞?
本文向大家介绍你有使用过render函数吗?有什么好处?相关面试题,主要包含被问及你有使用过render函数吗?有什么好处?时的应答技巧和注意事项,需要的朋友参考一下 template也会翻译成render,只有一点,template中元素的tag_name是静态的,不可变化,使用createEelment可以生成不同tag_name, 比如h1 ... h6, 可以通过一个number变量控制
函数注释似乎重复了Python中已经发现的行为。不仅如此,它们的含义没有以任何方式强制执行,因此它们可以用于PEP 3107中记录的以下任何一项: 提供打字信息 类型检查 让IDE显示函数期望和返回的类型 函数重载/泛型函数 外语桥梁 改编 谓词逻辑函数 数据库查询映射 RPC参数封送 其他信息 参数和返回值的文档 甚至是完全不同的东西。 在某种程度上,函数注释让我想起Python幽默系列中的一个