Python 加入类型检查

  Python 是一门强类型的动态语言, 对于一个 Python 函数或者方法, 无需声明形参及返回值的数据类型, 在程序的执行的过程中, Python 解释器也不会对输入参数做任何的类型检查, 如果程序中存在非法的数据操作, 程序会在相应的位置停止执行, 并抛出异常.  对象的调用者也无需声明所接收返回值的数据类型,所以这里就需要开发者在开发的过程中自行注意实参及所接收返回值的数据类型,并进行相应的业务处理.

def test_func(g, k):
try:
c = g + k
except Exception:
c = False
return c

如上面的示例, 函数 test_func 并不需要指明形参 g, k 及返回值的数据类型, 此时如果调用者传递了两个不同数据类型的实参, 那么就会导致该函数抛出异常.  这时就需要我们在函数中进行相应的业务处理,

或者进行异常捕捉,否则就需要开发者在调用函数前review该函数,严格传递正确的数据类型,并了解到该函数有可能出现的返回值类型,如上面的示例中,就有可能返回布尔值.在Python代码开发的过程中,

因为Python的这一特性,有时反而会加大我们不必要的开发时间成本

 

  从Python3.6开始, 加入了数据类型的检查功能,借助于现有IDE(如Pycharm)的高亮提示功能,在调用函数或者方法时,如果传递了错误的数据类型或者返回值数据类型异常,IDE会进行高亮,提示开发者及时进行更正,需要注意的是,这里只是进行提示开发者,但并不会要求你严格按照规则执行,更加不会因此而提升代码性能,它只是用来提升代码开发效率的一种方式而已,最起码可以有效的减少代码的调试时间

复制代码
# g:int, k:int  提示形参的数据类型为 int
# -> int 提示返回值为 int
def
test_func(g: int, k: int) -> int: return g + k
  # 在IDE(pycharm)中, 如果是返回一个字符串,那么就会将该字符串进行高亮提示,但并不代表该程序无法执行
# return "lowman"

a: int = 1
b: str = 2 # 仍然能赋值成功
print(a + b) # 在IDE(pycharm)中, print 函数内的 b 参数被高亮, 但是程序仍然能执行, 结果输出 int类型 3

复制代码


  所以,Python3.6版本新加入的类型检查功能, 只能算是提升开发效率的辅助方式而已.Python中的变量仍然是可动态变化的.实际上Python的数据类型检查是由Python解释器在执行代码时逐行进行完成的, 并动态的根据当前变量所指向的数据的类型为其指定,与其他语言(如Golang在使用变量之前必须先定义其数据类型,然后再根据其数据类型进行正确的赋值, Golang是强类型的静态语言)是有着本质区别.只能说,动态特性也是一把双刃剑

 

posted @   lowmanisbusy  阅读(2973)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
历史上的今天:
2018-09-26 django url 路由设置技巧
点击右上角即可分享
微信分享提示