python的typing模块

参考:3个提高 Python 开发效率的小工具Python3 Typing模块详解

typeing模块在python中提供类型支持,主要功能有:

  1. 类型检查,防止运行时出现参数和返回值类型不符合
  2. 作为开发文档附件说明,方便使用者调用时传入和返回参数类型(python在调用函数或变量时,无需对参数或变量进行类型说明,不利于阅读)

使用typing模块,可以对参数类型做注释并检查,不会影响程序运行,不会报正式错误,只有提醒。

# 可以省略,str,int都是Python内置的数据类型
from typing import * # 创建函数
def digits_sum(num:str) -> int:
digits_arr = map(lambda x: int(x), num)
return sum(digits_arr) # 测试
num = "352"
result = digits_sum(num=num)
print(result)
# 输出
10

map函数:

参考:python中的map函数

map是python的内置函数,会根据提供的函数对指定的序列做映射,第一个参数为函数名,后面的参数是一个或多个可迭代的序列,返回一个新的集合:

map(function,iterable,...)

具体是:将函数作用在序列中的每个元素上,得到一个新的序列,不改变原有序列:

  • 例1
def square(x):
return x ** 2
res = map(square,[1,2,3,4,5]) # 返回迭代器
list(res)
# 结果如下:
[1, 4, 9, 16, 25]
  • 例2
from typing import Dict, Any

# 创建函数
# d为字典,其key值为str,val为任意类型(Any);输出为字典,key值为str,val值为float或者int
# 可以使用多个数据类型,如使用 or 或 | 分隔多个数据类型
def dict_multipy(d: Dict[str, Any]) -> Dict[str, float or int]:
new_dict = {}
for k, v in d.items():
# isinstance():判断一个函数是否是一个已知的类型,类似 type()
if isinstance(v, (float, int)):
new_dict[k] = v * 2
return new_dict # 测试
d = {"no": "100", "age": 12, "work_year": 3, "name": "JC"}
new_d = dict_multipy(d=d)
print(new_d)
# 输出
{'age': 24, 'work_year': 6}
  • 例3:创建别名或者新的数据类型
from typing import List

# 取List[float]别名为Vector
Vector = List[float] def scale(scalar: float, vector: Vector) -> Vector:
return [scalar * num for num in vector]
scale(2.0, [1.0, -4.2, 5.4])
# 输出
[2.0, -8.4, 10.8]

lambda 匿名函数:

参考: python 匿名函数(lambda函数)

lambda函数没有函数名,无需定义,直接使用:

lambda 参数,参数,······:表达式

定义:

  1. 由关键词lamdba修饰
  2. 冒号之前的是函数参数,可以为空,即无参数匿名函数
  3. 冒号之后是表达式,无需写return,结果即是输出
  • 例子
f = lambda x, y, z: x+y+z
f(1,2,3)
# 输出
6

python的typing模块的更多相关文章

  1. 25、typing导入Python的数据类型模块、collections集合模块

    一.typing模块 1.typing模块的作用 类型检查,防止运行时出现参数和返回值类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报 ...

  2. python类型检测最终指南--Typing模块的使用

    正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...

  3. Python - typing 模块 —— 常用类型提示

    前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 ...

  4. python进阶(21)typing模块--类型提示支持

    typing介绍   Python是一门弱类型的语言,很多时候我们可能不清楚函数参数的类型或者返回值的类型,这样会导致我们在写完代码一段时间后回过头再看代码,忘记了自己写的函数需要传什么类型的参数,返 ...

  5. 使用python3的typing模块提高代码健壮性

    前言:很多人在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,加上Python本身就是一门弱类型的语言,这种 ...

  6. 基于Python的datetime模块和time模块源码阅读分析

    目录 1 前言  2 datetime.pyi源码分步解析 2.1 头部定义源码分析 2.2 tzinfo类源码分析 2.3 date类源码分析 2.4 time类源码分析 2.5 timedelta ...

  7. typing模块

    目录 一.引言 二.typing模块的作用 三.使用typing模块 四.typing常用类型 一.引言 前言:很多人在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么 ...

  8. python3.5以上版本,typing模块提高代码健壮性

    一 前言 Python是一门弱类型的语言,很多时候我们可能不清楚函数参数类型或者返回值类型,很有可能导致一些类型没有指定方法,在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数, ...

  9. typing 模块

    目录 typing模块 一.引言 二.typing模块的作用 三.使用typing模块 四.typing常用类型 typing模块 目录 一.引言 二.typing模块的作用 三.使用typing模块 ...

  10. python之platform模块

    python之platform模块 ^_^第三个模块从天而降喽!! 函数列表 platform.system() 获取操作系统类型,windows.linux等 platform.platform() ...

随机推荐

  1. Galera_Cluster_Mysql部署

    前言 先来了解下它的身世,Galera Cluster是Codership公司开发的一套免费开源的高可用方案 官网为http://galeracluster.com.Galera Cluster即为安 ...

  2. 实现无感刷新Token技术:.Net Web API与axios的完美结合

    这是我之前分享在星球里面的课程,下面整理下,分享下这个无感刷新Token技术方案. 我们都知道Token是有设置有效期的,为了安全都不会设置过长的有效期:但设置有效期太短,又会导致经常需要重新登录. ...

  3. TypeError: fs.existsSync is not a function | import { ipcRenderer } from 'electron'

    在electron的渲染进程中导包会发生TypeError: fs.existsSync is not a function node_modules/electron/index.js:6 var ...

  4. 这可能是最好的Spring教程!即便无基础也能看懂的入门Spring,仍在持续更新。

    开启这样一个系列的原因 这一段时间都在学spring,但是在学习的过程中一直都很难找到一个通俗易懂,又带了学习体系的文章教程,很多地方都不懂,需要自己去慢慢查询和理解,感觉学起来很耗时,所以我自己就像 ...

  5. php 安装使用 seaslog扩展

    这是一个高性能的日志记录扩展,能迅速帮你格式化的写入日志文件. 首先来看安装: sudo pecl install seaslog 一句话搞定,然后更新php.ini配置文件 添加启用以及一部分配置 ...

  6. LinkedHashMap源码分析(基于JDK1.6)

    LinkedHashMap类似于HashMap,但是迭代遍历它时,取得"键值对"的顺序是插入次序,或者是最近最少使用(LRU)的次序.只比HashMap慢一点:而在迭代访问时反而更 ...

  7. x-easypdf 初始

    一.概述 一个 java 语言简化处理 pdf 的框架 项目主页 https://x-easypdf.cn 项目概述 x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfb ...

  8. Codeforces Round 642 (Div3)

    K-periodic Garland 给定一个长度位\(n\)的\(01\)串,每次操作可以将\(1\)变为\(0\)或者将\(0\)变为\(1\),现在你需要通过操作使得所有\(1\)之间的距离为\ ...

  9. AO SDK安装问题

    ao sdk for .net安装时,需要进行验证.net框架,没装vs的时候会提示 arcobjects SDK for the Microsoft.NT Framework requires a ...

  10. 《JavaScript 模式》读书笔记(8)— DOM和浏览器模式1

    在本书的前面章节中,我们主要集中关注于核心JavaScript(ECMAScript),而并没有太多关注在浏览器中使用JavaScript的模式.本章将探索一些浏览器特定的模式,因为浏览器是使用Jav ...