标签:return def 字符 false toc import iterator ring 迭代
def func(a,b):
return a+b
res = fun('10',20)
print(res)
must be str, not int(程序会进行报错,我们传的参数应该时数值型,才可以进行数值算数运算)
typing模块就可以帮我们解决这种问题,它可以再我们定义参数每一个位置形参的后面:+接收值的类型,来对我们进行一个提示,再pycharm里,如果我们传的参数不是typin给规定的类型的话,接收值会给我们进行划线提示。
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规定的类型来传值,我们最后返回列表的时候,程序再当前函数返回结果的时候时不会报错的
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))
再下一次函数调用当前函数返回值的时候,就会产生错误。
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 subscriptable
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)]
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))
3.可以对返回值里具体的值进行类型限制
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
标签:return def 字符 false toc import iterator ring 迭代
原文地址:https://www.cnblogs.com/XuChengNotes/p/11402840.html