Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 键入提示和链接分配以及多个分配_Python_Python 3.x_Type Hinting_Chained Assignment - Fatal编程技术网

Python 键入提示和链接分配以及多个分配

Python 键入提示和链接分配以及多个分配,python,python-3.x,type-hinting,chained-assignment,Python,Python 3.x,Type Hinting,Chained Assignment,我想这两个问题是相关的,所以我将把它们放在一起: 1.-可以在链式分配中添加类型提示吗? 这两次尝试都失败了: >>> def foo(a:int): ... b: int = c:int = a File "<stdin>", line 2 b: int = c:int = a ^ SyntaxError: invalid syntax >>> def foo(a:int): ... b =

我想这两个问题是相关的,所以我将把它们放在一起:

1.-可以在链式分配中添加类型提示吗?

这两次尝试都失败了:

>>> def foo(a:int):
...     b: int = c:int = a
  File "<stdin>", line 2
    b: int = c:int = a
              ^
SyntaxError: invalid syntax
>>> def foo(a:int):
...     b = c:int = a
  File "<stdin>", line 2
    b = c:int = a
         ^
SyntaxError: invalid syntax
def foo(a:int): ... b:int=c:int=a 文件“”,第2行 b:int=c:int=a ^ SyntaxError:无效语法 >>>def foo(a:int): ... b=c:int=a 文件“”,第2行 b=c:int=a ^ SyntaxError:无效语法 2.-可以在多个作业中添加类型提示吗?

这些是我的尝试:

>>> from typing import Tuple
>>> def bar(a: Tuple[int]):
...     b: int, c:int = a
  File "<stdin>", line 2
    b: int, c:int = a
          ^
SyntaxError: invalid syntax
>>> def bar(a: Tuple[int]):
...     b, c:Tuple[int] = a
... 
  File "<stdin>", line 2
SyntaxError: only single target (not tuple) can be annotated
>>> def bar(a: Tuple[int]):
...     b, c:int = a
... 
  File "<stdin>", line 2
SyntaxError: only single target (not tuple) can be annotated
>>通过键入导入元组
>>>定义栏(a:Tuple[int]):
...     b:int,c:int=a
文件“”,第2行
b:int,c:int=a
^
SyntaxError:无效语法
>>>定义栏(a:Tuple[int]):
...     b、 c:元组[int]=a
... 
文件“”,第2行
SyntaxError:只能对单个目标(而不是元组)进行注释
>>>定义栏(a:Tuple[int]):
...     b、 c:int=a
... 
文件“”,第2行
SyntaxError:只能对单个目标(而不是元组)进行注释
我知道在这两种情况下,类型都是从a的类型提示推断出来的,但是我有一个很长的变量列表(在类的
\uuuu init\uuuuu
中),我希望是额外显式的

我正在使用Python 3.6.8

  • 正如“被拒绝/延期的建议书”一节中明确指出的,不支持链式作业中的注释。引用政治公众人物的话:

    这与元组解包类似,存在歧义和可读性问题,例如:
    x:int=y=1

    z=w:int=1

    这是不明确的,y和z的类型应该是什么?第二行也很难解析

  • 对于解包,根据相同的PEP,应该在赋值之前为变量放置裸注释。政治公众人物的例子:

    # Tuple unpacking with variable annotation syntax
    header: str
    kind: int
    body: Optional[List[str]]
    header, kind, body = message