Python 之设计模式、异常处理、模块与包、文件操作及编码

简介: Python 之设计模式、异常处理、模块与包、文件操作及编码

单例设计模式

设计模式:前人工作的总结与提炼,针对某一特定问题的比较成熟的解决方案,使用设计模式可提高代码复用率、可读性,可靠性;

单例设计模式:目的是让类所创建的对象在系统中只有唯一一个实例,让每一次执行类名()所返回的对象的内存地址都是同一个的;

__new__()方法

作用:在内存中给对象分配空间,返回对象的引用;

重写时一定要return super().__new__(cls);

只执行一次初始化工作的解决方法之一

定义类属性init_flag用于标记是否执行过初始化动作,初始化为False;

然后在内置方法__init__方法中判断init_flag,若值为False则执行初始化操作,然后将init_flag置为True,若值为True则不再执行初始化动作;

异常

异常捕获的目的:增强程序稳定性和健壮性;

捕获异常的语法


try:
    #尝试执行的代码
    pass
except exception1:
  # TODO出现错误1后处理的代码
  pass
except exception2:
  # TODO出现错误2后处理的代码
  pass
except Exception:
  # TODO处理未知错误的代码
  pass
finally:
    # TODO无论是否有异常,都将执行的代码
    pass
  • 异常的传递

当函数/方法执行出现异常时,调用函数/方法的一方也会出现异常,当传递到主程序仍无异常处理时,程序才会终止;

  • 抛出异常
  • 创建一个Exception类的对象;
  • 使用raise关键字抛出异常;

模块与包

  • 导入语法
# 全部导入
import 模块名
# import 模块名 as 模块别名
# 局部导入
from 模块名 import 工具名
  • 注意:导入的不同模块中存在相同函数名时,后导入的会覆盖先导入的模块中的函数;
  • 原则:每个文件都应该可以做为被导入的模块;
  • __name_属性可以让测试的代码只在测试的情况下被运行,而在导入时不会被执行;
  • 如何制作发布压缩包,安装以及卸载
  • 1、创建setup.py文件
from distutils.core import setup
setup(name = '包名',
      version = '版本',
      description = '描述信息',
      long_description = '完整描述信息',
      author = '作者',
      email = '邮箱',
      url = '个人主页',
      py_modules = [包所包含的模块列表]
)

2、构建模块

python setup.py build


3、生成发布压缩包

python setup.py sdist


4、安装

python setup.py install


5、卸载

直接将所安装的软件包所安装的目录删除即可;


文件操作

当我们进行文件操作时,要记得关闭文件,否则就会造成系统资源消耗,且后续的文件访问也会受到影响;

文件指针

用于标记从哪个位置开始读取数据;

当第一次打开文件时,通常文件指针是指向文件开头位置;

进行文件读取方法后,指针会移动到读取内容的末尾;

文件访问模式

访问模式 功能

r 只读,文件指针位于文件开头,文件不存在则抛出异常

w 只写,文件存在则覆盖,不存在则创建

a 追加,文件存在则在文件末尾追加,不存在则创建后写入

r+ 读写,文件指针位于文件开头,文件不存在则抛出异常

w+ 读写,文件存在则覆盖,不存在则创建

a+ 读写,文件指针置于文件末尾,不存在则创建后写入

文件及目录操作

方法名 说明

rename 重命名文件,os.rename('源文件', '目标文件')

remove 删除文件, os.remove('文件名')

listdir 目录列表,os.listdir('目录名')

mkdir 创建目录,os.mkdir('目录名')

rmdir 删除目录,os.rmdir('目录名')

getcwd 获取当前目录,os.getcwd()

chdir 修改工作目录,os.chdir('目标目录')

path.isdir 判断是否为文件,os.path.isdir('文件路径')

文本编码

Python2.x中默认使用ASCII编码,Python3.x默认使用utf-8编码;

python2.x中在字符串前边加上u用于告知解释器这是一个utf-8编码格式的字符串;

内建函数 eval

功能:将字符串当成一个有效的表达式来求值并返回结算结果;

文章知识点与官方知识档案匹配,可进一步学习相关知识

Python技能树预备知识常用开发工具19845 人正在系统学习中


目录
相关文章
|
3天前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
2月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
65 4
|
2月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
2月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
11天前
|
设计模式 人工智能 前端开发
像品茶一样品设计模式,早日突破编码新境界。
设计模式在日常开发中虽非必需,但对解决复杂问题、提升代码质量至关重要。通过多个实际场景的分析,如会员卡系统、代码评审和AI视频编辑器等,展示了设计模式的重要性。学习设计模式不仅能提高代码的可读性和扩展性,还能为框架源码阅读和面试提供支持。其核心目标是实现高复用和易扩展的应用程序,遵循封装、面向接口、组合优于继承等基本原则,并遵守SOLID原则。前端开发者应掌握单例模式、工厂模式、装饰器模式等经典设计模式,以应对不同项目需求。总结而言,设计模式是一把双刃剑,需根据具体问题灵活运用,适合项目环境的设计模式才是最好的。 (239字符)
|
2月前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
4天前
|
程序员 Linux Python
python中模板和包的使用
本文介绍了 Python 模块和包的基本概念及使用方法。模块是 Python 程序结构的核心,每个以 `.py` 结尾的源文件都是一个模块,包含可重用的代码。文章详细讲解了模块的导入方式(如 `import` 和 `from...import`),模块的搜索顺序,以及如何创建和发布自己的模块。此外,还介绍了包的概念,包是包含多个模块的特殊目录,并通过 `__init__.py` 文件定义对外提供的模块列表。最后,文章简述了如何使用 `pip` 工具管理第三方模块的安装与卸载。作者:大石头的笔记;来源:稀土掘金。
|
1月前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
31 5
|
2月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
51 5
|
2月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性