Python3 Typing

部署运行你感兴趣的模型镜像

typing模块的作用:

  1. 类型检查,防止运行时出现参数和返回值类型不符合。
  2. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型。
  3. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒。
注意:typing模块只有在python3.5以上的版本中才可以使用,pycharm目前支持typing检查
  • 下面说说typing模块常用的方式:
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)
  • 说明:

  • 在传入参数时通过“参数名:类型”的形式声明参数的类型;

  • 返回结果通过"-> 结果类型"的形式声明结果的类型。

  • 在调用的时候如果参数的类型不正确pycharm会有提醒,但不会影响程序的运行。

  • 对于如list列表等,还可以规定得更加具体一些,如:“-> List[str]”,规定返回的是列表,并且元素是字符串。

  • 由于python天生支持多态,迭代器中的元素可能多种,如下:

from typing import List
def func(a:int, string:str) -> List[int or str]:
    list1 = []
    list1.append(a)
    list1.append(string)
    return list1

# 使用or关键字表示多种类型
  • typing常用的类型:

  • int,long,float: 整型,长整形,浮点型;
  • bool,str: 布尔型,字符串类型;
  • List, Tuple, Dict, Set:列表,元组,字典, 集合;
  • Iterable,Iterator:可迭代类型,迭代器类型;
  • Generator:生成器类型;

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### Python 中 `typing` 模块的使用说明 #### 什么是 `typing` 模块? 自 Python 3.5 起,PEP 484 引入了类型提示(Type Hints),而 `typing` 模块正是为此设计的一个标准库模块[^1]。它提供了各种工具来定义函数参数和返回值的静态类型。 #### 主要功能 `typing` 模块的主要目的是增强代码可读性和可靠性。通过为变量、函数参数以及返回值指定预期的数据类型,开发者可以更清晰地表达意图并减少运行时错误的发生概率[^2]。 #### 基本语法 以下是几个常见的数据类型的表示方法: - 整数:`int` - 浮点数:`float` - 字符串:`str` - 布尔值:`bool` 当涉及到复杂结构如列表、元组或字典时,则需借助于 `List`, `Tuple`, 和 `Dict` 这些泛型类来进行描述。例如: ```python from typing import List, Tuple, Dict def example_function(numbers: List[int]) -> Tuple[str, Dict[float, bool]]: result_string = "Processed" mapping = {number / 2 : number % 2 == 0 for number in numbers} return (result_string, mapping) print(example_function([1, 2, 3])) ``` 上述例子展示了如何利用 `List`, `Tuple`, 及 `Dict` 来声明复杂的输入输出关系[^3]。 #### 更多高级特性 除了基本的数据类型外,`typing` 模块还支持更多高级概念比如联合类型(`Union`)、可选类型(`Optional`)等。这些可以帮助处理更加灵活的情况。 ##### Union 类型 如果某个参数可能接受多种不同类型的值,那么就可以采用 `Union[X,Y,...]` 的形式来表明这一点。 ```python from typing import Union def process_data(data: Union[int, str]): if isinstance(data, int): print(f"Integer received: {data}") elif isinstance(data, str): print(f"String received: {data}") process_data(123) # Integer received: 123 process_data("hello") # String received: hello ``` ##### Optional 类型 对于那些可能是 None 或者其他特定类型的变量来说,推荐使用 `Optional[T]` ,这实际上相当于 `Union[T, None]`. ```python from typing import Optional def divide(dividend: float, divisor: Optional[float]=None) -> float: if divisor is not None and divisor != 0: return dividend / divisor raise ValueError("Invalid operation") divide(10, 2) # returns 5.0 divide(10) # raises an exception because no valid second argument was provided. ``` #### 工具集成 值得注意的是,在现代 IDEs 如 PyCharm 当中已经内置了对 `typing` 提供的支持,能够自动检测不符合设定好的类型约束的地方,并给出警告或者建议修正方案。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值