【python】python指南(五):静态类型注解之List

简介: 【python】python指南(五):静态类型注解之List

一、引言

对于算法工程师来说,语言从来都不是关键,关键是快速学习以及解决问题的能力。大学的时候参加ACM/ICPC一直使用的是C语言,实习的时候做一个算法策略后台用的是php,毕业后做策略算法开发,因为要用spark,所以写了scala,后来用基于storm开发实时策略,用的java。至于python,从日常用hive做数据策略用python写udf,到基于tensorflow深度学习框架写python版的模型网络,再到现在实用pytorch做大模型。眼看着在语言纷争中,python的应用越来越广,开一个单独的专栏用于记录python中常用到的技巧,算是做笔记,没事翻出来看看。

在Python 3.5版本后引入的typing模块为Python的静态类型注解提供了支持,这个模块在增强代码可读性和维护性方面提供了帮助,今天简要概述一下List

二、参数类型注解之List

2.1 列表类型

List是常用的数据结构:列表,用于存储若干个元素。List类型注解如下

from typing import List
 
# 定义一个名为user的函数,接收一个整数列表(List[int])类型的参数user_data,并无返回值(None)
# 函数作用:打印传入数据user_data是一个整数列表,以及列表中的每个元素都是整数类型,同时输出数据本身
def user(user_data: List[int]) -> None:
    print(user_data, type(user_data))
    return user_data
 
 
user_list=user(["daoguang", 520]) #['ligo', 123] <class 'list'>
for i in user_list:
    print(i,type(i))

2.2 常见问题

这里有2个地方其实不是很规范:

  1. user函数定义的是一个int型列表,在传入的过程中输入了字符串,这是不规范的用法,Python 解释器不会抛出异常,但会将字符串当作一个列表的单个元素进行处理,
  2. user函数return返回实际是一个List[int],但定义返回类型是None,应该是List[int]

以上两点Python 解释器不会检查函数的返回类型,所以这段代码可以正常运行。但是,如果使用类型检查工具,它会检测到类型不匹配,并发出警告或错误

三、总结

本文使用简单的例子讲解函数注解List的用法,下一篇讲解Dict字典类型。

目录
相关文章
|
6天前
|
存储 索引 Python
Python散列类型(1)
【10月更文挑战第9天】
|
3天前
|
存储 数据安全/隐私保护 索引
|
5天前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
10天前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
46 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
3天前
|
消息中间件 存储 监控
redis 的List类型 实现 排行榜
【10月更文挑战第8天】
18 2
WK
|
5天前
|
存储 Python
Python内置类型名
Python 内置类型包括数字类型(int, float, complex)、序列类型(str, list, tuple, range)、集合类型(set, frozenset)、映射类型(dict)、布尔类型(bool)、二进制类型(bytes, bytearray, memoryview)、其他类型(NoneType, type, 函数类型等),提供了丰富的数据结构和操作,支持高效编程。
WK
9 2
|
7天前
|
存储 编译器 索引
Python 序列类型(2)
【10月更文挑战第8天】
Python 序列类型(2)
|
8天前
|
存储 C++ 索引
Python 序列类型(1)
【10月更文挑战第8天】
|
4月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
780 1
|
3月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。