eval知识
eval函数备注:会将字符串中的内容当成有效的表达式执行,并返回结果
1234# 千万不可以将任何用户的输入用eval来使用eval("合理的python内容")# 在输入框中输入"__import__(os).system("touch file")"可以调用系统的命令
包管理
包知识点包结构123# 包是一个包含多个模块的特殊目录# 目录下有一个特殊的文件: __init__.py# 包名的命名方式和变量名一致,"小写字母" + "_"
新建包方法1:右键【项目】–> 【Directory】–> 新建一个【__init__.py】文件
方法2:右键【项目】–> 【python packages】
__init__.py编辑1234# 要在外界使用包中的模块,需要在__init__.py中指定对外界提供的模块列表# .表示从当前目录导入模块列表from . import 模块名from . import 模块名
发布模块
创建setup.py文件,该文件与要打包的目录平级,内容非常的固定
123456789101112from distutils.core import setupsetup(name = "message" # 包名,也就是包文件夹的名称 version= "1.0" # 版本 description = " ...
单例设计模式
单例设计模式知识点12# 让类创建的对象,在系统中只有一个唯一的实例# 每执行一次"类名()"返回的对象,内存地址都是相同的
分配空间:__new__123456# 实例化对象时,先调用__new__方法为对象分配空间,其是object的内置方法,作用包括以下: # 1. 在内存中为对象分配空间 # 2. 返回对象的引用,然后将该引用作为第一个参数,传递给__init__方法# 重写__new__方法的代码固定: # 1. 重写new方法一定要:return super().__new__(cls),否则python得不到分配空间的对象引用,就不会调用对象的初始化方法 # 2. __new__是一个静态方法,调用时需主动传递"cls"参数
123456789101112131415161718# 单例设计:用同一个类创建的对象,在系统中只有唯一的一个实例# 配合类属性还可以使初始化动作只执行一次class MusicPlayer(object): # 定义一个空值,用于保存创建的对象 instance = ...
面向对象基础
面向对象基础知识点备注:类更注重对象和职责,不同的对象承担不同的责任
概念123# 类是一类具有相同特征/行为的事物的统称,是抽象的概念,不能直接使用 # 特征:在类中被称为属性 # 行为:在类中被称为方法
12345# 在完成需求前,首先要确定职责 -- 要做的事情(方法)# 根据职责确定不同的对象(类): # 将属性和方法封装到一个抽象的类中 # 外界使用类创建对象,然后通过对象调用属性、方法# 最后完成的代码,就是让不同的对象调用不同的方法
类的设计1234# 先有类,后有对象# 类名定义满足大驼峰命名法# 面向对象设计前,需分析需求,程序中包含哪些类
dir():查看对象的所有属性和方法1234# 查看对象所拥有的属性、方法# 1. 在标识符/数据后加.,然后按Tab键# 2. 使用dir(对象)dir(对象)
内置函数/方法
方法名
作用
__new__
创建对象时,自动调用
__init__
对象初始化时,被自动调用
__del__
对象从内存中删除,会被自动调用
__dir__
返回对象的描述信息,print函数输出 ...
导入模块注意点
模块的导入知识点导入模块12345678# 导入模块时,每个导入应该独占一行import 模块名# 为导入的模块设置别名, 别名的命名规则符合大驼峰命名法import 模块名 as 别名# 希望从一个模块中导入部分工具,这种导入的方式可以直接使用导入的工具from 模块名 import 函数# (不推荐使用)将一个模块中所有的函数全部导入from 模块名 import *
导入同名模块123# 导入同名函数时,可以使用as给其中一个函数取别名的方式# 在未取别名时,后面导入的同名函数会覆盖掉之前的函数from 模块名 import 函数 as 别名1
模块搜索顺序1234# 导入模块时,python会在当前目录下搜索指定模块名的文件,如果有则直接导入,如果没有就搜索系统目录# 给自建模块起名时,不要和系统的模块名重名# python中每一个模块都有属性__file__可查看模块的具体路径print(模块名.__file__)
模块导入原则12345678910# 每个被开发的独立文件都是一个模块,导入文件时,文件所有无任何缩进的代码都会被执行一遍。# __name__属性:可以用 ...
程序异常
异常知识点备注:发生异常时,会逐渐的将异常不断的向上一级进行传递,直到该异常被解决掉。当传递到主函数时还未解决则会终止程序
简单捕获异常1234try: 正常代码except: 正常代码执行失败时,执行的代码
不同的异常同时处理12345678try: 正常代码except 异常1: 发生异常1时执行的代码except (异常2, 异常3, 异常4, ... ): 发生异常2、3、4时执行的代码except Exception as msg: print("发生未知的错误信息:%s" %msg)
异常处理的完整语法123456789101112try: 正常代码except 异常1: 发生异常1时执行的代码except (异常2, 异常3, 异常4, ... ): 发生异常2、3、4时执行的代码except Exception as msg: print("发生未知的错误信息:%s" %msg)else: pass # 没有异常时才会执行的代码finally: pass ...
文件读写知识
文件操作知识点文件指针12# 文件指针是一个标记(标记从哪个位置读取数据),第一次打开文件,指针位于文件起始位置;# 执行read()方法后,文件指针移动到文件末尾,此时再执行read()方法就读取不到任何内容了
os模块备注:以下文件、目录均支持相对路径、绝对路径
方法
说明
os.rename(源文件名, 目标文件名)
重命名文件
os.remove(文件名)
删除文件
os.listdir(目录名)
目录列表
os.mkdir(目录名)
创建目录
os.rmdir(目录名)
删除目录
os.getcwd()
获取当前目录
os.chdir(目标目录)
修改工作目录
os.path.isdir(文件路径)
判断是否是文件
os.system(系统命令)
执行shell命令
文件编码备注:在python2中,文件采用Ascii码,不支持中文,此时需要在文件中进行标识
12345方法1:# *-* coding:utf8 *-*方法2: # coding=utf8# 同时在定义中文字符串变量时,全面加uusername = u" ...
类成员相关
类成员相关知识点实例化12# 程序在实例化的时候,都会创建一个自己独立的内存空间,用于保存各自不同的属性# 同一个类下实例化的不同对象,他们的方法在内存中却只有一份,只有需要时才将对象的引用传递到方法的内部
类对象、属性12# python程序在运行时也会直接将类加载到内存中,只是类对象在内存中只有一份,使用一个类可以创建多个实例对象# 类对象同时有自己的属性(类属性)、方法(类方法),可以通过"类名.属性/方法"进行访问
使用
12345678910111213# 类属性是给类对象中定义的属性,常用来记录这个类相关的特征,类属性不会用来记录具体对象的特征# 定义方式:属性名 = 属性值 (在类下方直接定义)# 使用方式:类名.类属性名 class Tool(object): # 使用赋值语句定义类属性,记录被调用的次数 count = 0 def __init__(self): Tool.count += 1 # 每次使用类实例化一个对象都会自动+1,并且该变量值存放在内存中的类对象中 tool ...