【人工智能概论】 Python标准库——typing(类型标注)、 assert断言、 @property装饰器、setter装饰器

news2025/1/12 6:04:25

【人工智能概论】 Python标准库——typing(类型标注)、 assert断言、 @property装饰器、setter装饰器

文章目录

  • 【人工智能概论】 Python标准库——typing(类型标注)、 assert断言、 @property装饰器、setter装饰器
  • 一. typing(类型标注)简介
  • 二. assert断言
  • 三. @property装饰器、setter装饰器


一. typing(类型标注)简介

  • 众所周知,Python是弱类型语言,大多情况下函数参数类型或返回值类型是难以知晓的,这可能导致一段时间后忘记了函数需要传什么参数,返回什么类型的结果,造成不必要的麻烦,而typing模块可以很好的解决这个问题。
  • typing的主要功能有:
  1. 作为开发文档附加说明,方便使用者使用时了解传入和返回的参数类型。
  2. 类型检查,防止运行时出现参数、返回值类型不符的情况,模块加入不会影响程序的运行,不会报正式的错误,pycharm支持typing检查错误时会出现黄色警告。
  • 语法:
def 函数名(参数名: 数据类型) -> 返回值类型:
    pass

变量名: 数据类型 = 变量值
  • 常见的标注类型:
  • Union :并集,Union[X, Y]即变量(参数)要么是X类型、要么是Y类型。
  • Optional : Optional[X]与Union[X, None]等价,即它默认允许变量(参数)为None类型。
  • Tuple : 举例:person: Tuple[str, int, float] = (‘Mike’, 22, 1.75),表示person是个元组,其内部元素类型分别为str,int,float。
  • List : 举例:var: List[int or float] = [2, 3.5],表示var是个列表,其内部元素可以是int或float类型;var: List[List[int]] = [[1, 2], [2, 3]],很明显组合使用罢了。
  • Dict: 举例: dic: Dict[str, int],表示dic是键为str类型,值为int类型的字典。
  • Sequence:可能在某些情况下,并不需要严格区分一个变量或参数到底是列表 list 类型还是元组 tuple 类型,此时就可以使用一个更为泛化的类型,叫做 Sequence,其用法类似于 List。

二. assert断言

  • assert通常在代码调试中被使用,被用来判断紧随其后的代码的正确性,如果满足条件(正确),程序自动向后执行,如果不满足条件(错误),便中断当前程序并产生一个AssertionError错误。
  • 举例:
a = -1
assert a < 0
assert a > 0

在这里插入图片描述

三. @property装饰器、setter装饰器

  • 举例与简介:
  • Python 提供@property装饰器、setter装饰器,被装饰的方法,可被当作属性来用
  • 举例:定义一个Exam类,为避免直接对内部属性_score进行操作,通过property装饰器、setter装饰器提供的方法实现间接控制属性,这样便起到封装的作用,把一些不想对外公开的属性隐蔽起来,而只是提供方法给用户操作,在方法里面,可以检查参数的合理性等。
class Exam(object):
    def __init__(self, score):
        self._score = score
 
    @property
    def score(self): # 属性访问
        return self._score

    @score.setter
    def score(self, val): # 属性赋值
        if val < 0:
            self._score = 0
        elif val > 100:
            self._score = 100
        else:
            self._score = val
 
if __name__ == '__main__':
	e = Exam(60)
	print(e.score)
 
	e.score = 90
	print(e.score)
 
	e.score = 200
	print(e.score)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/667596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

向量数据库的行业标准逐渐清晰!Vector DB Bench 正式开源!

大模型带火了向量数据库赛道&#xff0c;也让各式各样的向量数据库进入开发者视野。 对于开发者而言&#xff0c;如何选择一个适合自己的向量数据库至关重要。不过&#xff0c;向量数据库的选型并不简单&#xff0c;开发者不仅需要对市面上各种开源和闭源的数据库进行全面的性能…

我心中世界上最好的语言是PHP,别不信【偷笑】

文章目录 一、前言1.1 最适合的语言2.2 流行的语言2.3 Java和PHP2.4 PHP的性能2.5 关于PHP2.6 作文思路概览 二、PHP的优势2.1 跨平台2.2 开发运行环境搭建方便2.3 强大的包管理工具2.4 拥有优秀的代码调试工具xdebug2.5 上手快&#xff0c;学习成本低2.6 丰富的企业级框架2.7 …

集电极开路是什么?集电极开路电路工作原理讲述

​集电极开路是指集电极电路中出现了断路的情况&#xff0c;导致电路无法正常工作。在集电极开路的情况下&#xff0c;电路中的电流无法通过集电极流过&#xff0c;导致电路无法正常放大信号或者控制其他器件的工作。 集电极开路的原因有很多&#xff0c;可能是器件本身的故障…

端午节:传统文化与现代科技的交融

端午节&#xff0c;又称为龙舟节、重五节&#xff0c;是中国传统节日之一。每年农历五月初五&#xff0c;人们会吃粽子、赛龙舟、挂艾草等&#xff0c;以纪念屈原和抵御瘟疫的传说。但是&#xff0c;随着科技的发展&#xff0c;端午节的庆祝方式也在不断地变化和创新。 一、传统…

Selenium 相对定位

目录 前言&#xff1a; 相对定位 工作原理 可用的相对定位 Above Below Left of Right of Near 链式相对定位 相对于WebElement的相对定位 实例演示 前言&#xff1a; Selenium传统定位基本能解决80%的定位需求&#xff0c;但是还是有一些复杂场景传统定位定不到的…

C语言:实现有序序列判断

题目&#xff1a; 输入一个整数序列&#xff0c;判断是否是有序序列&#xff0c;有序&#xff0c;指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。 输入描述&#xff1a; 第一行输入一个整数N (3≤N≤50) 。 第二行输入N个整数&#xff0c;用空格分隔N个整数…

面试滑铁卢,被HR坑惨了......

阎王易见&#xff0c;小鬼难缠。我一直相信这个世界上好人居多&#xff0c;但是也没想到自己也会在阴沟里翻船。我感觉自己被字节跳动的HR坑了。 在这里&#xff0c;我只想告诫大家&#xff0c;offer一定要拿到自己的手里才是真的&#xff0c;口头offer都是不牢靠的&#xff0…

C++学习之详解命名空间

1.理解命名空间 namespace命名空间正如翻译的那样给命名划分空间&#xff0c;每个函数名或变量等都有自己的使用范围&#xff0c;避免的使用函数名冲突的问题&#xff1b; 打个比方&#xff0c;一个班如果有两人叫做张三&#xff0c;那么其中如何区分这两个人那么就得给他们起…

UI自动化测试 | Jenkins配置优化

前一段时间帮助团队搭建了UI自动化环境&#xff0c;这里将Jenkins环境的一些配置分享给大家。 背景&#xff1a; 团队下半年的目标之一是实现自动化测试&#xff0c;这里要吐槽一下&#xff0c;之前开发的测试平台了&#xff0c;最初的目的是用来做接口自动化测试和性能测试&…

如何判断一家公司值不值得去?

通常职场新手都有这样的困惑&#xff1a;收到某某公司的面试&#xff08;或者offer&#xff09;&#xff0c;我该不该去呢&#xff1f; 为什么有这样的困惑&#xff1f; 大部分原因是因为海投简历导致的。刚出来工作时&#xff0c;我也海投过简历&#xff0c;不管公司好不好&a…

Java使用jna调用c开发的动态库dll文件

文章目录 前言1.c开发动态库dll1.1 新建项目dllDemo1.2 选择C library 在选择shared1.3 项目的目录结构1.4 定义动态库函数1.5 导出动态库 2.java中使用jna调用dll2.1 需要引入jna的依赖2.2 加载动态库dll2.3 测试程序2.3.1 测试代码&#xff1a;2.3.2 测试结果输出 前言 在日…

maven的依赖范围scope使用

测试依赖的范围 #1、依赖范围 标签的位置&#xff1a;dependencies/dependency/scope 标签的可选值&#xff1a;compile/test/provided/system/runtime/import #①compile 和 test 对比 main目录&#xff08;空间&#xff09;test目录&#xff08;空间&#xff09;开发过程…

linux重新安装Yapi

需要保留原来Yapi对应的数据&#xff0c;这样就不需要安装mongo。 1. 安装Yapi npm install -g yapi-cli —registry https://registry.npm.taobao.org yapi server2.平台部署配置 安装成功后&#xff0c;默认端口是9000&#xff0c;开发服务器9000端口&#xff0c;需要服务…

崩盘预警币圈项目:Fintoch(分投趣)为何模式能做千亿资金?

崩盘预警币圈项目&#xff1a;Fintoch&#xff08;分投趣&#xff09;为何模式能做千亿资金&#xff1f; 大家好&#xff0c;小编是微三云的胡佳东&#xff0c;一家软件开发公司的负责人 Fintoch&#xff08;分投趣&#xff09;为何模式崩盘前能够吸引如此巨额资金&#xff1f…

供应链 | 基于图神经网络和深度强化学习的柔性车间调度方法

编者按 本次解读的文章发表于IEEE TRANSACTIONS ON INDUSTRIAL INFORMATICS&#xff0c;原文摘要总结如下&#xff1a;本文考虑了众所周知的灵活作业车间调度问题&#xff0c;并通过提出一种新颖的深度强化学习&#xff08;DRL&#xff09;方法来端到端地学习高质量的优先级调度…

SpringBoot实现过滤器Filter的三种方式

# 实现Filter接口方式① 使用Filter接口方式② 使用Component注解方式③ Java Config 配置类 # 实现Filter接口 过滤器 Filter 由 Servlet 提供&#xff0c;基于函数回调实现链式对网络请求与响应的拦截与修改。由于基于 Servlet &#xff0c;其可以对web服务器管理的几乎所有…

重复消费和堆积

接受消息会重复这一现状&#xff0c;然后通过一些方法来消除重复消息对业务的影响 利用幂等性解决重复消息问题 幂等&#xff08;其任意多次执行所产生的影响均与一次执行的影响相同。&#xff09; 一个幂等的方法&#xff0c;使用同样的参数&#xff0c;对它进行多次调用和一…

flutter七牛云上传sdk插件qiniu_flutter_sdk使用

flutter七牛云上传sdk插件qiniu_flutter_sdk使用 最近在拆分代码&#xff0c;将上传组件设置成插件&#xff0c;下面记录下实现过程。 一、创建flutter_plugin上传插件 这里Android Studio使用创建plugin 填写一下信息 Project nameProject locationDescriptionProject typ…

单片机入门所需的基础数电和模电知识

要学习单片机并入门相关领域&#xff0c;推荐掌握以下数电和模电的基础知识&#xff1a; 数电知识&#xff1a; 布尔代数和逻辑门&#xff1a;了解布尔代数的基本概念和逻辑门的工作原理&#xff0c;包括与门、或门、非门、与非门、或非门、异或门等。 时序逻辑和时钟信号&a…

AIOps介绍

AIOps介绍 AIOps是指人工智能运维&#xff08;Artificial Intelligence for IT Operations&#xff09;的缩写。它是将人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;技术应用于IT运维领域的一种方法。 传统的IT运维通常需要人工监测和管理大量的系…