为了账号安全,请及时绑定邮箱和手机立即绑定

请教python的冒号语法

/ 猿问

请教python的冒号语法

qq_1_156 2019-03-30 22:11:55
manager: Manager = LocalProxy(lambda: get_manager()) 问题起源,lin-cms框架的lin的core文件的一句

a=1
b=2
c=3
class MyClass():
    pass
d=4
a:MyClass=MyClass()

print(a,b,c,d)
a:MyClass=c   这种冒号语法是什么意思?
查看完整描述

2 回答

已采纳
?
pardon110

冒号不是关键,这种写法是对变量标注赋值, 用BFC语法标记描述如下

annotated_assignment_stmt ::=  augtarget ":" expression ["=" expression]

它的意思是 在单个语句中将变量或属性标注和可选的赋值语句合为一体。

标注通常用作类型提示或代码说明,你可以认为它是等同于强类型数据的类型)。

manager: Manager = LocalProxy(lambda: get_manager())

上述语句表明,声明了一个manager变量,预期接收Manager(通常为类名)数据类型。换而言之,manager变量是Manager实例,该变量来自于LocalProxy的返回值。

直白来说,相当于强类型语言的这种变量赋值写法,

Manager manager = LocalProxy(...)

如果你有go或者ts,哪怕是C,java相关静态编程语言的使用经验就不难理解了。除了变量标注,还有属性标注,函数标注,具体可参阅官方文档或博文

查看完整回答
1 反对 回复 2019-03-31
  • qq_1_156
    qq_1_156
    谢谢,在博文中看到,大约理解到,这是一个标注,让开发人员能直观地看到函数或者变量 期待的参数或变量的类型。这里的属性标注能赋值不怎么理解 >>> class c: ... b="123" ... d:'123' ... >>> c.b '123' >>> c.d Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: type object 'c' has no attribute 'd'
?
慕标4084357

冒号语法?

查看完整回答
反对 回复 2019-06-15

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信