python自动化课程笔记(十三)单例模型、代码性能、抛出异常

2023-11-12

#单例模型(重要)
class Person (object):
    __instance = None
    is_first = True

    def __new__(cls, *args, **kwargs): 

        #如果类属性__instance的值为None
        #创建一个对象,并赋值为这个对象的引用,保证下次调用这个方法时
        #能够知道之前已经创建过对象了,这样就保证了只有一个对象

        if not cls.__instance: #保存第一次创建对象
            cls.__instance = object.__new__(cls) 
        return object.__new__(cls) #返回第一次创建的对象

    def __init__(self, name, age):
        if Person.is__first:
            self.name = name
            self.age = age

xm = Person("小明",18)
xh = Person("小红",16)
print(id(xm))
print(id(xh)) #小明和小红的id相同 返回的ID都唯一
a = 6.99
b = 3.2
c = a * b
print(c) #输出 22.368000000000000002

from decimal import Decimal  #精确输出
from decimal import getcontext #设置精度

print(Decimal("6.99")*Decimal("3.2))

getcontext().prec = 2 #精度为2

print(Decimal("6.99")*Decimal("3.2))
def t1():
    l = []
    for i in range(1000):
        l.append(i)

def t2():
    l = []
    for i in range(1000):
        l = l + [i]  #使用 += 更快

def t3():
    l = [i for i in range(1000)]

def t4():
    l = list(range(1000))

from timeit import Timer #可以测试代码运行时间

time1 = Timer("t1()","from __main__ import t1") #第一个参数为执行的函数 第二个为从入口导入函数
print(time1.timeit(number = 10000)) #输出执行10000次time1函数所耗的时间 默认为一百万次

time2 = Timer("t2()","from __main__ import t2") 
print(time2.timeit(number = 10000)) 

time3 = Timer("t3()","from __main__ import t3") 
print(time3.timeit(number = 10000))

time4 = Timer("t4()","from __main__ import t4") #用时最短
print(time4.timeit(number = 10000))

#if __name__ == '__main__': #入口函数


import time
start_time = time.time()
#假装此处有代码
end_time =time.time()

print(end_time - start_time) #可以用来计算所耗时间

冒泡排序

def bubble_sort(alist):
    n = len(alist)
    for i in range(n-1)
        print("*")
        count = 0
        for j in range(n-1-i):
            if alist[j] >= alist[j+1]:
            alist[j],alist[j+1] = alist[j+1],alist[j]
            count+=1
        if count == 0:
            break

if___name___=='__main__':
    alist =[12,323,234,55454,32,323]
    bubble_sort(alist)
    print(alist)

抛出异常

try: # 尝试
    open("adsaadx.txt")
except FileNotFoundError as a:  # FileNotFoundError 为异常类型 发生异常后保存异常信息并打印
    print("错误",a)
else:  #未捕获到异常执行
    print("else") 
finally:  #无论是否捕获都执行
    print("finally")


自定义异常类
class AgeError(Exception):
    def __init__(self, age):
        self.age = age
    def __str__(self):
        return"1-15之间,age = %d" % self.age

class person(object):
    def __init__(self,name,age):
        if age > 0 and age <= 15:
            self.name = name
            self.age = age
        else: # 如果年龄不在0-15之间提示异常
            # print("您输入错误了")
            raise AgeError(age) #抛出异常

xm = Person("小明",1123)

class Test(object):
    def __init__(self,switch):
        self.swith = switch  #顶一个开关 

    def num(self,a,b):
        try:
            return a/b
        except Exception as result:
            if self.switch: # 如果switch 为真则打印
                print(result)
            else:  # 为假则抛出异常
                raise

a = Test(True)
a.num(11,0)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python自动化课程笔记(十三)单例模型、代码性能、抛出异常 的相关文章

  • Python的应用场景及优越性能

    你是否正在寻找一种能够在各种应用场景中广泛应用的编程语言 你是否希望能够使用一种易学易用 功能丰富 生态系统完善的语言进行开发工作 那么 Python就是你的不二选择 Python已成为广大开发者和企业的首选编程语言之一 其在各个领域的应用
  • python--数据分析pandas

    1 pandas概述 Pandas是进行科学数据分析中另一个比较常用的数据库 基于NumPy 但加入了更多的高级数据结构以及操作工具 进一步简化了NumPy等运算与应用 1 1安装 pip install pandas 可以通过import
  • Macbook Pro M1芯片Python开发环境配置

    文章主要介绍M1 Mac新机器如何进行开发环境配置 由于在进行开发环境配置的时候 需要经常使用终端 而且新机器是没有配置homebrew的 后面一些操作不是很方便 所以本文将会对日常终端使用方面进行一些配置 丰富我们的终端样式和使用 文章大
  • 苏宁图书爬虫第一版

    最近一直在忙于工作 当我知道这些都是借口 毕竟某些博主大佬深夜还在更新订阅号更新微博 或许这就是自制力的差距吧 不啰嗦了 今天要写的主要是一篇关于如何爬取 苏宁图书 当然只是半成品 但是大部分问题都已经解决 在这里记录一下发生过的问题 以免
  • Python 爬虫库以及库函数总结&&踩坑

    1 Re库的基本使用 Re库介绍 Re库是Python的标准库 主要用于字符串匹配 调用方式 import re 正则表达式的表示类型 raw string类型 原生字符串类型 re库采用raw string类型表示正则表达式 表示为 r
  • python作业记录1_字典运用的实例

    帮朋友做了几个作业题目 记录一下 一 某人到超市购买了以下物品 先需要对货物金额进行统计 清单如下图所示 牛奶 65 面包 15 可乐 39 饼干 45 糖果 24 水果 35 8 要求 1 使用字典保存以上数据 2 可乐的金额统计出错 请
  • 2019零基础如何学好Python?学习Python的策略是什么?

    跟几个IT界的大佬提起python 他们说零基础学好python很简单 python进阶需要花费写气力 都说Python简单易学 那么零基础如何学好Python 有哪些必须学的知识 学习的策略技巧有哪些 今天这篇文章将会给你启发 Pytho
  • Python设置excel单元格格式

    文章目录 xlwt 模块简介 设置数字的格式 设置字体 设置对齐方式 设置边框 设置 填充 设置保护 xlwt 模块简介 xlwt 是 python中一个用来操作 excel 文件的库 其中 封装了很多常用操作 本文主要讲解使用该库在生成e
  • Python学习-----起步1(Python的下载,脚本与交互模式,注释)

    目录 Python的下载 解释器 IDLE进入Python解释器 交互模式 脚本模式 注释 单行注释 多行注释 Python的下载 解释器 百度网盘链接 https pan baidu com s 1WEmOAGGHtHc1fxZzNGKu
  • pyqt5按钮点击时传递参数(通过lambda表达式)

    pyqt5中按钮点击事件的响应 常见的是下面的方式 self btn clicked connet self click method 现在想在按钮click的时候能够传递参数 可以借助lambda表达式 self btn clicked
  • python练习题3

    1 数列翻转 reverse 问题描述 编写程序对列表中的数据进行翻转转换 即将数组中第一个数和最后一个数交换 第二个数和倒数第二个数交换 依此类推 样例输入 4 100 200 300 400 样例输出 400 300 200 100 a
  • Python os.path() 模块

    os path 模块主要用于获取文件的属性 以下是os path 模块的几种常用方法 方法 说明 os path abspath path 返回绝对路径 os path basename path 返回路径中最后一个元素 以 结尾时返回空字
  • 学完Python,怎么变现?小哥哥10000元外快了解一下

    自学 Python 之后如果不去公司上班 自己一个人可以通过此技能挣什么钱 逆天的Python 只要你掌握了相关技术 就可以靠它赚钱 具体怎么赚 我们来看看一位小哥哥的回答 以我差不多四年的 Python 使用经验来看 大概可以按以下这些路
  • pandas数据判断是否为NaN值的方式

    实际项目中有这样的需求 将某一列的值 映射成类别型的数据 这个时候 需要我们将范围等频切分 或者等距切分 具体的做法可以先看某一些特征的具体分布情况 然后我们选择合适的阈值进行分割 def age map x if x lt 26 retu
  • python3 隐藏print的标准输出

    在使用python调用函数时 想将函数中的print输出禁止掉又不想改函数的代码 可以定义如下HiddenPrints类解决 class HiddenPrints def enter self self original stdout sy
  • python自动化课程笔记(六)函数

    函数 类 模块 包 项目 包与文件夹的区别在于 包中有很多模块 和init文件 函数 提高编码的效率及代码的重用 把独立功能的代码块组成一个小模块 def printInfo 定义一个函数 print 10 print 人生苦短 我用pyt
  • python中sqlite3对数据库的增删改查

    1 python API的介绍 1 connection 数据库连接对象 连接对象 建立python客户端与数据库的网络连接 创建方法 sqlite3 connect 参数 2 cursor 游标对象 2 增删改查的流程 select语句
  • Python基础教程:强大的Pandas数据分析库

    Pandas是一个基于 NumPy 的非常强大的开源数据处理库 它提供了高效 灵活和丰富的数据结构和数据分析工具 当涉及到数据分析和处理时 使得数据清洗 转换 分析和可视化变得更加简单和高效 本文中 我们将学习如何使用Pandas来处理和分
  • Leetcode刷题日志5.0

    目录 前言 1 两数相加 2 无重复字符的最长子串 3 整数反转 4 删除链表的倒数第 N 个结点 前言 今天我又来继续分享最近做的题了 现在开始进入我们快乐的刷题时间吧 编程语言Python3 0 难度 中等 1 两数相加 给你两个 非空
  • python自动化笔记(九)文件操作

    文件的打开 file open test txt w encoding utf 8 参数 文件名 访问模式 write 默认为read file write hello python 删除原有内容 并写入 ret file read 读取文

随机推荐

  • 面试准备:海量数据的处理方式

    文章目录 背景 数据排序 分治 字典树 数据去重 哈希 压缩存储空间 面试题汇总 1 TopK 2 查找中位数 3 随机选择K个数 4 找出出现次数最多的IP 背景 海量数据的处理主要包括三个方面 数据排序 数据统计 数据计算 我们可以简单
  • 扫雷小游戏最详细讲解【C语言】

    大家好 我是同学 森 一名计算机爱好者 今天让我们进入小游戏开发学习模式 若有错误 请多多指教 小主使用的是VS2019编译器 点赞 收藏 留言 都是我创作的最大的动力 目录 大家好 我是同学 森 一名计算机爱好者 今天让我们进入小游戏开发
  • Git GUI,Git Bash,Git CMD之间的区别

    Git CMD就像使用git命令的常规Windows命令提示一样 它允许您通过命令行使用所有Git功能 如果您已熟悉Windows cmd并且只能在Windows上工作 则非常有用 Git Bash在Windows上模拟bash环境 它允许
  • Mysql JDBC和事务(细致而易懂)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 安装环境 一 JDBC 二 preparedstament和statement的区别 三 批量处理 四 事务提交控制 最后 安装环境 1 jdk17 2 MySQL8
  • Qt自定义类使用自定义含参信号与槽

    最近在自定义类中使用了信号来连接到MainWindow类中的槽函数 具体操作如下 要点一 继承QObject 在头文件中初始化自定义类MyThread1 这里由于继承的QThread已经继承了QObject 无需嵌套继承 故不必public
  • Flutter 凸起效果底部导航栏一

    大多app中都会带有底部导航栏 系统默认自带的导航条不够新颖 今天我们改造一下导航条 将中间的按钮起到凸起的效果 特别有的app 中间常用扫一扫功能 Flutter为我们提供了一个控件BottomNavigationBar 结合Bottom
  • Linux——(第九章)磁盘分区、挂载

    目录 一 Linux分区概述 1 原理介绍 2 硬盘说明 二 查看磁盘和分区 1 du查看文件和目录占用的磁盘空间 2 df查看磁盘空间使用情况 3 lsblk查看设备挂载情况 4 mount unmount 挂载 卸载 5 fdisk 分
  • 解决VS Code开发Python3语言自动补全功能

    https www cnblogs com yuer20180726 p 10942372 html 1 打开设置界面 2 使用快捷键组合 Ctrl Shift p 入setting 选中首选项的user setting模式设置界面 在打开
  • 华为OD机试真题 Java 实现【光伏场地建设规划】【2023Q1 100分】

    一 题目描述 祖国西北部有一片大片荒地 其中零星的分布着一些湖泊 保护区 矿区 整体上常年光照良好 但是也有一些地区光照不太好 某电力公司希望在这里建设多个光伏电站 生产清洁能源 对每平方公里的土地进行了发电评估 其中不能建设的区域发电量为
  • 求字符串最长公共前缀

    第一种方法 for循环第一个字符串 然后再for循环除了第一个字符串以外的其它字符串 比较其它字符串是否以某个字符串开头 从而找到公共前缀 function getCommonStr arr if arr Array isArray arr
  • 面向对象编程(概念)

    面向对象编程 概念 面向过程 面向对象 面向过程思想 1 步骤清晰简单 第一步做什么 第二步做什么 2 面对过程是和处理一些较为简单的题目 面向对象思想 1 物以类聚 分类的思维模式 思考问题首先会解决问题需要哪些分类 然后对这些分类进行单
  • 解决ImportError: No module named zlib问题

    今天在创建django工程时 报了这个错 其实前几天也遇见过当时是在装一个setuptools时 报了这个错误zlib not available按照网上的方法 装好之后重新编译自己的Python 结果没有反应 还是报错 zlib模块是用来
  • java elasticsearch_Java操作ElasticSearch

    java客户端连接到ElasticSearch服务器 创建maven工程 添加坐标 最好跟服务器elasticsearch一致 org elasticsearch client transport 6 2 4 net sf json lib
  • type和interface的区别

    type和interface都可以用来表示接口 但实际用的时候会有写差异 1 type和interface的相同点 都是用来定义对象或函数的形状 interface example name string age number interf
  • 修复Chrome浏览器下载速度慢的问题

    前言 本人使用Mac端进行操作 Win端操作大体基本相同 差别不大 放心食用 特色 操作简单 配套软件链接齐全 传送门 链接 https pan baidu com s 1vcCcPlHaUQmYrQldVM8UVQ pwd 0000 提取
  • 2023第十四届蓝桥杯 C/C++大学生A组省赛 满分题解

    写在前面 以下代码 目前均可通过民间OJ数据 dotcpp New Online Judge 两个OJ题目互补 能构成全集 可以到对应链接下搜题提交 感谢OJ对题目的支持 如果发现任何问题 包含但不限于算法思路出错 OJ数据弱算法实际超时
  • linux固件以及与驱动的区别

    硬件越来越复杂 硬件的许多功能使用了程序实现 与直接硬件实现相比 固件拥有处理复杂事物的灵活性和便于升级 维护等优点 固件 firmware 就是这样的一段在设备硬件自身中执行的程序 通过固件标准驱动程序才能实现特定机器的操作 如 光驱 刻
  • Android Studio 真机调试与虚拟机

    虚拟机调试 1 创建一个简单的hello world例子 支持C 2 SDK manager 根据个人需要选择安装 勾选并点击右下角apply即会自动安装 3 AVD manager 4 运行android程序 弹出选择设备框时有可能无法查
  • python字典中键不允许重复_Python 字典中的“键”不允许重复。 (1.0分)_学小易找答案...

    填空题 已知 x 1 2 3 那么表达式 not set x 100 set x 的值为 1 0分 判断题 列表可以作为字典的 键 1 0分 填空题 已知 x 为非空列表 那么表达式 x reverse list reversed x 的值
  • python自动化课程笔记(十三)单例模型、代码性能、抛出异常

    单例模型 重要 class Person object instance None is first True def new cls args kwargs 如果类属性 instance的值为None 创建一个对象 并赋值为这个对象的引用