Python是动态语言,不像C++和Java等静态语言一样需要定义变量的类型。这使得Python使用起来非常方便,但是有的时候会带来代码理解上的问题,并且由于参数类型不确定,编译器没法很好进行代码补全提示。
使用 参数名:类型 的语法可以在定义类和方法时像静态语言那样指定参数类型,如:

def fun(a: list):return a

这样参数a就被指定为了list类型,编译器会在调用时做类型检查,并且后续代码编写的时候可以提供list类型相关的代码补全提示。


而Python内置的typing库(无需安装)提供了许多更强大的类型指定语法,例如我们希望指定参数的类型为一个list,而list的每一个元素都是一个tuple,使用typing库实现如下:

from typing import Listdef fun(tuples: List[tuple]):for t in tuples:print(len(t))

编译器同样能识别到tuples中的每一个元素都是一个tuple。

另外,如果希望指定参数为多种可能的类型,可以使用Union,实现如下:

from typing import Uniondef fun(a: Union[int, str]):return a

调用时如果类型为int和str都不会有问题,而如果为其他类型就会提示错误。

但是,Python毕竟是动态语言,这么写的目的主要是为了提高代码可读性,并不能真正从语法上禁止调用者传入其他类型参数!

Python限定参数类型相关推荐

  1. python 函数参数类型检查

    在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里. 我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参数有改动,这部分也需要改动. 下面 ...

  2. python函数参数类型及顺序_python函数参数类型及其顺序

    根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...

  3. python函数参数类型检查_Python中实现参数类型检查的简单方法

    Python是一门弱类型语言,很多从C/C++转过来的朋友起初不是很适应.比如,在声明一个函数时,不能指定参数的类型.用C做类比,那就是所有参数都是void*类型!void类型强制转换在C++中被广泛 ...

  4. python函数参数类型及其顺序

    根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...

  5. [转载] python 函数参数类型检查

    参考链接: Python函数参数 在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里. 我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参 ...

  6. Python函数参数类型*、**的区别

    函数接收参数为元组 例如 def myfun(*args): #相当于 def myfun(1,2,3) ==> args 就相当于(1,2,3) for a in args: print(a) ...

  7. python函数默认参数位置_二十二、Python函数参数类型(位置、关键字、默认、不定长参数)...

    调用函数时可使用的参数类型 在调用Python函数时可使用的参数类型主要有以下几种: 必要参数(位置参数) 关键字参数 默认参数 不定长参数 必要参数(位置参数) 在Python中, 必要参数必须以正 ...

  8. python 函数参数类型判断(判断类型)

    方法一 return (type(obj).__name__ == 'dict') 字典:dict  列表:list  集合:set 方法二 if isinstance(path_tmpls, str ...

  9. Python函数参数的五种类型

    之前项目需求,需要通过反射获取函数的参数,python中可以通过函数签名(signature)来实现. 首先需要了解函数参数的类型,Python的参数类型一共有5种:POSITIONAL_OR_KEY ...

最新文章

  1. Apache用户认证配置文件
  2. javaBean为什么要实现Serializable接口?
  3. 获山东科技最高奖-农业大健康·万书波:沉醉谋定花生增产
  4. mysql统计各年龄段的数量
  5. Tomcat集群快速入门2
  6. 支撑阻力指标_使用k表示聚类以创建支撑和阻力
  7. java xlsx怎么转换成excel格式_python小工具 | Excel的xls和xlsx格式文件转换
  8. python处理金融数据_python-金融数据处理demo
  9. 今天while if wlse..
  10. JS自定义表单提交处理方案
  11. 用照片进行三维模型重建
  12. Java计算点的质心_java-矩阵的质心
  13. QT开发代码格式化设置
  14. CleanMyMac最新版V4.11.4版MAC电脑系统加速器
  15. Excel文档误删的4种恢复方法,1秒就可以还原所有内容,你用过吗
  16. json字符串与python对象互转
  17. Linux read的用法
  18. 贝尔实验室的百年沉浮
  19. 无缝衔接的人会遭报应吗_无缝衔接会有报应吗?
  20. 修改 ubuntu 镜像源为国内源

热门文章

  1. VMware该虚拟机似乎正在使用中。如果该虚拟机未在使用,请按“获取所有权(T)”按钮获取它的所有权........
  2. Flink SqlServer CDC Listener线程无故消失问题
  3. Cocos2d-x之3D
  4. 纯手写原生PHP网站管理后台系统 网站管理系统
  5. 什么是DNS?DNS有什么作用?
  6. 解密豌豆荚应用内搜索协议:普适 经济 兼容
  7. 基于Python实现相机标定正畸并生成鸟瞰图
  8. 用MATLAB实现plu分解,编制计算给定矩阵 A 的 LU 分解和 PLU 分解的通用程序
  9. 梦幻西游2开店心得 日赚700万储备金
  10. word用户名的修改