相关疑难解决方法(0)

什么是Python 3.6中的变量注释?

Python 3.6即将发布.PEP 494 - Python 3.6发布时间表提到12月底,所以我通过Python 3.6中的新功能看到他们提到了变量注释:

PEP 484引入了函数参数类型注释的标准,即类型提示.此PEP为Python添加语法以注释变量类型,包括类变量和实例变量:

primes: List[int] = []

captain: str  # Note: no initial value!

class Starship:
     stats: Dict[str, int] = {}
Run Code Online (Sandbox Code Playgroud)

与函数注释一样,Python解释器不会将任何特定含义附加到变量注释,只将它们存储在__annotations__类或模块的特殊属性中.与静态类型语言中的变量声明相比,注释语法的目标是提供一种通过抽象语法树和__annotations__属性为第三方工具和库指定结构化类型元数据的简便方法.

因此,根据我的阅读,它们是来自Python 3.5的类型提示的一部分,在Python 3.5中的什么是类型提示中有所描述.

我按照captain: strclass Starship示例,但不确定最后一个:如何primes: List[int] = []解释?它是否定义了一个只允许整数的空列表?

python annotations type-hinting python-3.x python-3.6

62
推荐指数
2
解决办法
4万
查看次数

`a:b`语句在python中做什么?

我在修改字典,偶然写了类似

data = dict(a=1, b=2)
if condition:
    data['c']: 3
Run Code Online (Sandbox Code Playgroud)

我希望这是一个语法错误,但是它可以正确运行,并且该语句似乎没有任何作用。

令我感到好奇的是:这是一种什么样的说法,为什么这是合法的?

python

7
推荐指数
0
解决办法
110
查看次数

难道“ a:1”不应该是python中的语法错误吗?

我在代码中打了一个错字,在语法上完全沉默了。

dict_args : {"arg1":1,"arg2":2,"arg3":3}
# .... Some more code
some_function(**dict_args)
# .... Some more code
Run Code Online (Sandbox Code Playgroud)

如果您没有注意到它,则在声明变量时使用:代替。=dict_args

所以我的问题是,莫非是Python语法:a:1本身,持有任何意义?还是假设它被认为是语法错误?

python syntax syntax-error python-3.x

5
推荐指数
1
解决办法
79
查看次数

如果我在打印后添加冒号,为什么解释器不会抛出错误?

我在打印后添加冒号和分号,但解释器没有抛出错误。

请使用 python3.8.x(edit) 运行

x=5
print:(x)
print;(x)
Run Code Online (Sandbox Code Playgroud)

python syntax-error python-3.x

4
推荐指数
1
解决办法
125
查看次数