def func(a,b): return a+b res = fun('10',20) print(res)
must be str, not int(程序会进行报错,咱们传的参数应该时数值型,才能够进行数值算数运算)python
typing模块就能够帮咱们解决这种问题,它能够再咱们定义参数每个位置形参的后面:+接收值的类型,来对咱们进行一个提示,再pycharm里,若是咱们传的参数不是typin给规定的类型的话,接收值会给咱们进行划线提示。app
from typing import List,Dict,Tuple def func(a:str,b:bool,c:int,lt:list,dct:dict,tp:tuple): lis = [a,b,c,lt,dct,tp] return lis res = func('a',True,25,[1,2,3,4],{'b':20},(7,8)) print(res)
['a', True, 25, [1, 2, 3, 4], {'b': 20}, (7, 8)]函数
可是若是咱们传的参数是利用typing规定的类型时,咱们使用列表来接收参数的时候,无论咱们是否按照typing规定的类型来传值,咱们最后返回列表的时候,程序再当前函数返回结果的时候时不会报错的code
from typing import List,Dict,Tuple def func(a:str,b:bool,c:int,lt:list,dct:dict,tp:tuple): lis = [a,b,c,lt,dct,tp] return lis # lt = 1 res = func('a',True,25,1,{'b':20},(7,8)) print(res) # ('a', True, 25, 1, {'b': 20}, (7, 8))程序再当前函数返回结果的时候时不会报错的,只是咱们传的参数不规范
('a', True, 25, 1, {'b': 20}, (7, 8))ip
再下一次函数调用当前函数返回值的时候,就会产生错误。字符串
from typing import Generator,Iterable,Iterator def func(i: int, f: float, b: bool, lt: list, tup: tuple, dic: dict): lis = [a,b,c,lt,dct,tp] return lis a,b,c,lt,dct,tp = func(1,2,3,4,5,6) # 不错误,只是不规范 def func1(lt): print(lt[4])# 这个时候程序会报错 func1(lt)
'int' object is not subscriptablepycharm
from typing import List,Dict,Tuple def func(a:str,b:bool,c:int,lt:list,dct:dict,tp:tuple): lis = [a,b,c,lt,dct,tp] return lis res = func('a',True,25,[1,2,3,4],{'b':20},(7,8)) print(res)
['a', True, 25, [1, 2, 3, 4], {'b': 20}, (7, 8)]string
from typing import List,Dict,Tuple def func(a:str,b:bool,c:int,lt:list,dct:dict,tp:tuple)-> tuple: lis = [a,b,c,lt,dct,tp] return tuple(lis) res = func('a',True,25,[1,2,3,4],{'b':20},(7,8)) print(res)
('a', True, 25, [1, 2, 3, 4], {'b': 20}, (7, 8))table
3.能够对返回值里具体的值进行类型限制class
from typing import List, Tuple, Dict def add(a: int, string: str, f: float, b: bool) -> Tuple[List, Tuple, Dict, bool]: list1 = list(range(a)) tup = (string, string, string) d = {"a": f} bl = b return list1, tup, d, bl print(add(5, "hhhh", 2.3, False))
([0, 1, 2, 3, 4], ('hhhh', 'hhhh', 'hhhh'), {'a': 2.3}, False)
from typing import List def func(a: int, string: str) -> List[int or str]: # 使用or关键字表示多种类型 list1 = [] list1.append(a) list1.append(string) return list1
from typing import Generator,Iterable,Iterator def func(i: int, f: float, b: bool, lt: list, tup: tuple, dic: dict,g:Generator) -> tuple: lis = [i, f, b, lt, tup, dic] return tuple(lis) def ger():# 生成器 yield res = func(1, 2, True, [1, 2], (1, 2), {'a': 1},ger()) print(res) # (1, 2, True, [1, 2], (1, 2), {'a': 1}) def func1(lt): print(lt) print(lt[0]) func1(res)
[1,2]
1