Python中变量名后面加冒号是什么意思?
a:z=None
print(a)
x=func('22','3') #print出来是None
def func(a,arg2=''): #参数z改为a
a:z=None
print(a)
x=func('22','3') #print出来还是None
请问 a:z=None 这句是什么意思?尤其是z=None是什么意思?为什么无法改变变量a值? 展开
变量注释的语法:注释变量类型,明确指出变量类型,方便帮助复杂案例中的类型推断。
var: type = value 其实本质上就是 var = value # type就是var期望的类型
就像上一个人回答的那样:类型注释只是一种提示,并非强制的,Python解释器不会去校验value的类型是否真的是type
例如:a: str = 10 这样是没有错的,python解释器在执行时会把a当作int来操作(type(a)——int)。 这不像是 C 语言中 int a(a必须是int类型)。
还有一些使用时的注意事项:
1、省略初始值会使变量未初始化:a: str, print(a) —— 抛出 NameError 异常
2、注释局部变量将导致解释器始终使其成为局部变量:
同一函数范围内注释受全局或非本地变量是不允许的。
def fun():
global a
a: str = 'python'
print(a)
fun()
# 将抛出错误信息:SyntaxError: annotated name 'a' can't be global
# 即是 注释变量 a 不能是全局的。
3、类型注释还可用于在类主体和方法中注释类和实例变量。
4、注释的目标可以是任何有效的单个赋值目标:d = {}, d['a']: str = ''python"——输出d为字典 {'a': 'python'} ; d = [], d[0]: int = 10——输出为列表[10]
注意:带括号的名称也被视为表达式,而不是简单名称。比如:(a): int = 0
更详细的信息可以参考:网页链接
用法是var: type = value
var为要定义的变量,type为该变量期待的类型,value为赋给该变量的值。
本质上和var = value是一回事,只是加上了var的类型说明。
类型注解是一种提示,并非强制的,Python解释器不会去校验value的类型是否真的是type。
类型注解通常用在函数参数中,向函数的调用者提示参数类型:
def func(arg: int)
那么调用者调用函数func时就知道参数arg应该是一个int类型。