首页 > 编程语言 >python的typing模块

python的typing模块

时间:2024-02-19 14:00:11浏览次数:33  
标签:函数 python float num 模块 typing lambda

python的typing模块

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

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

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

image-20240219135435756

使用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,float,num,模块,typing,lambda
From: https://www.cnblogs.com/pam-sh/p/18020943

相关文章

  • BOSHIDA DC电源模块的保护与安全措施包括以下几个方面
    BOSHIDADC电源模块的保护与安全措施包括以下几个方面DC电源模块的保护与安全措施包括以下几个方面: 1.过压保护:在输入端加入过压保护电路,当输入电压超过设定值时,保护电路会自动切断电源,防止电源模块损坏。2.过流保护:在输出端加入过流保护电路,当输出电流超过设定值时,保护电......
  • typescript修改target导致模块找不到
    编译ts代码时,发现一个包只支持es6及更高的版本,无奈修改编译选项target,从es5修改为es6,发现原来导入包的地方报错,提示notfound。tsconfig.json{"files":["src/main.ts"],"compilerOptions":{"noImplicitAny":true,"target":......
  • Python量化金融风险分析
    金融市场是一个复杂且多变的生态圈,涉及从经济数据到政治动态的各种影响因素。无论你身处何种角色——小投资者、企业财务,还是大型金融机构的资产经理,你都必须面对各种不确定性,例如股价波动、利率变动或突发事件如政治危机和自然灾害。因此,量化风险评估不仅是一种科学需求,更是一种......
  • python多版本管理软件pyenv
     [安装]#installpyenvrequmentlibrariessudoaptupdate;sudoaptinstallbuild-essentiallibssl-devzlib1g-dev\libbz2-devlibreadline-devlibsqlite3-devcurl\libncursesw5-devxz-utilstk-devlibxml2-devlibxmlsec1-devlibffi-devliblzma-dev#i......
  • Python模块之warnings
    模块作用简介:warnings模块由PEP230引入,作为一种警告程序员关于语言或库功能的变化的方法,以预测Python3.0带来的向后不兼容的变化。它还可用于报告从丢失的库中恢复的配置错误或功能退化。不过,最好是通过logging模块提供面向用户的消息,因为发送到控制台的警告可能丢失。......
  • python+selenium基础语法
    一、执行环境Python3.12.0selenium3.14.0二、八大元素定位//示例:打开百度,输入123,点击搜索fromseleniumimportwebdriverfromtimeimportsleepfromselenium.webdriver.common.byimportBydeftest():driver=webdriver.Chrome("D:/driver/chromedri......
  • JS模块化系统
    随着JavaScript开发变得越来越广泛,命名空间和依赖关系变得越来越难以处理。人们已经开发出不同的解决方案以模块系统的形式来解决这个问题。CommonJS(CJS)CommonJS是一种同步加载模块的规范,主要用于服务器端的Node.js环境。//模块导出module.exports={//模块内容......
  • python函数传参
    python函数传参参考:python函数参数传递(params,*params,**params)位置参数常见的函数参数:defadd_both(x,y):returnx+y默认参数defenroll(name,gender,age=6,city='Beijing'):print('name:',name)print('gender:',gender)print(&......
  • 【60行代码解决】2024年最新版python爬虫有道翻译js逆向
    一、表单参数sign加密sign:c0f36866a9c650144ed5bac4eba532a7这种32位一般是MD5加密1.搜索sign:2.点击去分别在每个**sign:某某某**处打上断点结果在这个断点断住了3.原代码constu="fanyideskweb",d="webfanyi"functionj(e){returnc.a.createHash......
  • Python教程(27)——如何使用Python中的上下文管理器
    当我们在编写代码时,经常会遇到需要管理资源的情况,比如打开和关闭文件,如果遇到了一些异常情况,我们需要关闭资源,不然会导致资源泄露,虽然我们可以通过手动的方式来关闭,但如果有多个异常情况需要考虑的话,万一不小心漏了一处,就芭比Q了。所以,如果有一种更加优雅的方式来处理资源泄露的问......