学习笔记 一、注释 单行注释:以 # 开头,# 右边的所有东西都被当做说明文字,而不是真正要执行的程序,只起到辅助说明作用 多行注释:要在 Python 程序中使用多行注释,可以用 一对 连续的 三个 引号(单引号和双引号都可以) 二、变量的基本使用 定义:在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建 等号(=)用来给变量赋值 = 左边是一个变量名 = 右边是存储在变量中的值 变量的类型: 数字型: 整型(int) 浮点型(float) 布尔型(bool)真 True 或非0 假 False 0 复数型complex 非数字型: 字符串(str) 列表(list) 元组(tuple) 字典(dict) 不同类型之间的计算 1、数字型变量之间可以直接计算(True = 1 False = 0) 2、字符串变量之间使用+拼接字符串 3、字符串变量可以和整数使用*重复拼接相同的字符串 4、数字型变量和字符串之间不能进行其他计算 类型转换函数 变量的格式化输出: · 在 Python 中可以使用 print 函数将信息输出到控制台 · 如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符 · % 被称为 格式化操作符,专门用于处理字符串中的格式 o 包含 % 的字符串,被称为 格式化字符串 o % 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符 | | | | | 有符号十进制整数,%06d 表示输出的整数显示位数,不足的地方使用 0 补全 | | | | |
· 语法格式如下: print("格式化字符串" % 变量1) print("格式化字符串" % (变量1, 变量2...)) 三、变量的命名 标识符就是程序员定义的变量名、函数名 · 标示符可以由 字母、下划线 和 数字 组成 · 不能以数字开头 · 不能与关键字重名 关键字 · 关键字 就是在 Python 内部已经使用的标识符 · 关键字 具有特殊的功能和含义 · 开发者 不允许定义和关键字相同的名字的标示符 变量的命名规则 在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格 在 Python 中,如果 变量名 需要由 二个 或 多个单词 组成时,可以按照以下方式命名 a. 每个单词都使用小写字母 b. 单词与单词之间使用 _下划线 连接 小驼峰命名法:第一个单词以小写字母开始,后续单词的首字母大写 大驼峰命名法:每一个单词的首字母都采用大写字母 四、判断语句 逻辑运算符 与and:全真才为真,有假则为假 或or: 有真就是真,全假才为假 非not: 相反 elif语法 if 条件1: 条件1满足执行的代码 …… elif 条件2: 条件2满足时,执行的代码 …… elif 条件3: 条件3满足时,执行的代码 …… else: 以上条件都不满足时,执行的代码 …… if嵌套语法: if 条件 1: 条件 1 满足执行的代码 …… if 条件 1 基础上的条件 2: 条件 2 满足时,执行的代码 …… # 条件 2 不满足的处理 else: 条件 2 不满足时,执行的代码 # 条件 1 不满足的处理 else: 条件1 不满足时,执行的代码 随机数处理: improt random random.randint(0, 100) 五、运算符 算数运算符 | | | | | | | | | | | | | | | | | 返回除法的整数部分(商) 9 // 2 输出结果 4 | | | | | | |
比较运算符 | | | 检查两个操作数的值是否 相等,如果是,则条件成立,返回 True | | 检查两个操作数的值是否 不相等,如果是,则条件成立,返回 True | | 检查左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回 True | | 检查左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回 True | | 检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回 True | | 检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回 True |
逻辑运算符 | | | 检查两个操作数的值是否 相等,如果是,则条件成立,返回 True | | 检查两个操作数的值是否 不相等,如果是,则条件成立,返回 True | | 检查左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回 True | | 检查左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回 True | | 检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回 True | | 检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回 True |
赋值运算符 | | | | | c = a + b 将 a + b 的运算结果赋值为 c | | | | | | | | | | | | | | | | | | | | | |
成员运算符 | | | | 如果在指定的序列中找到值返回 True,否则返回 False | | | 如果在指定的序列中没有找到值返回 True,否则返回 False | 3 not in (1, 2, 3) 返回 False |
六、循环 While语句基本语法 while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件(计数器 + 1) Break和continue break 和 continue 是专门在循环中使用的关键字 · break 某一条件满足时,退出循环,不再执行后续重复的代码 · continue 某一条件满足时,不执行后续重复的代码 break 和 continue 只针对 当前所在循环 有效 While循环嵌套 while 条件 1: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... while 条件 2: 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件 2 处理条件 1 # 向控制台输出内容结束之后,不会换行 print("*", end="") # 单纯的换行 print("") 七、函数基础 · 所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用 · 函数的使用包含两个步骤: 1. 定义函数 —— 封装 独立的功能 2. 调用函数 —— 享受 封装 的成果 · 函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的 重用 参数的作用 在函数内部,把参数当作变量使用,进行需要的数据处理 函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据通过参数传递 形参:定义函数时,小括号中的参数,时用来接收参数用的,在函数内部作为变量使用 实参:调用函数时,小括号中的参数,时用来把数据传递到函数内部用的 Return:哪里调用返回到哪;后面的代码不执行;需要用变量来接 八、高级变量类型 在 Python 中,所有 非数字型变量 都支持以下特点: 1. 都是一个 序列 sequence,也可以理解为 容器 2. 取值 [] 3. 遍历 for in 4. 计算长度、最大/最小值、比较、删除 5. 链接 + 和 重复 * 6. 切片 列表 · List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 · 专门用于存储 一串 信息 · 列表用 [] 定义,数据 之间使用 , 分隔 · 列表的 索引 从 0 开始 遍历 # for 循环内部使用的变量 in 列表 for name in name_list: 循环内部针对列表元素进行操作 print(name) 元组 · Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改 o 元组 表示多个元素组成的序列 o 元组 在 Python 开发中,有特定的应用场景 · 用于存储 一串 信息,数据 之间使用 , 分隔 · 元组用 () 定义 · 元组的 索引 从 0 开始 o 索引 就是数据在 元组 中的位置编号 元组中只包含一个元素时,需要在元素后面添加逗号 info_tuple = (50, ) 字典 · dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型 · 字典同样可以用来 存储多个数据 o 通常用于存储 描述一个 物体 的相关信息 · 和列表的区别 o 列表 是 有序 的对象集合 o 字典 是 无序 的对象集合 · 字典用 {} 定义 · 字典使用 键值对 存储数据,键值对之间使用 , 分隔 o 键 key 是索引 o 值 value 是数据 o 键 和 值 之间使用 : 分隔 o 键必须是唯一的 o 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组 字符串 · 字符串 就是 一串字符,是编程语言中表示文本的数据类型 · 在 Python 中可以使用 一对双引号 " 或者 一对单引号 ' 定义一个字符串 o 虽然可以使用 \" 或者 \' 做字符串的转义,但是在实际开发中: § 如果字符串内部需要使用 ",可以使用 ' 定义字符串 § 如果字符串内部需要使用 ',可以使用 " 定义字符串 · 可以使用 索引 获取一个字符串中 指定位置的字符,索引计数从 0 开始 · 也可以使用 for 循环遍历 字符串中每一个字符 1) 判断类型 - 9 | | | 如果 string 中只包含空格,则返回 True | | 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True | | 如果 string 至少有一个字符并且所有字符都是字母则返回 True | | 如果 string 只包含数字则返回 True,全角数字 | | 如果 string 只包含数字则返回 True,全角数字、⑴、\u00b2 | | 如果 string 只包含数字则返回 True,全角数字,汉字数字 | | 如果 string 是标题化的(每个单词的首字母大写)则返回 True | | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True | | 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True | 2) 查找和替换 - 7 | | | 检查字符串是否是以 str 开头,是则返回 True | | 检查字符串是否是以 str 结束,是则返回 True | string.find(str, start=0, end=len(string)) | 检测 str 是否包含在 string 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1 | string.rfind(str, start=0, end=len(string)) | | string.index(str, start=0, end=len(string)) | 跟 find() 方法类似,不过如果 str 不在 string 会报错 | string.rindex(str, start=0, end=len(string)) | | string.replace(old_str, new_str, num=string.count(old)) | 把 string 中的 old_str 替换成 new_str,如果 num 指定,则替换不超过 num 次 | 3) 大小写转换 - 54) 文本对齐 - 3 | | | 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串 | | 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串 | | 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 | 5) 去除空白字符 - 36) 拆分和连接 - 5 | | | 把字符串 string 分成一个 3 元素的元组 (str前面, str, str后面) | | 类似于 partition() 方法,不过是从右边开始查找 | string.split(str="", num) | 以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 '\r', '\t', '\n' 和空格 | | 按照行('\r', '\n', '\r\n')分隔,返回一个包含各行作为元素的列表 | | 以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
切片 切片 方法适用于 字符串、列表、元组 o 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串 o 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据 o 字典 是一个 无序 的集合,是使用 键值对 保存数据 注意: · 从 起始 位开始,到 结束位的前一位 结束(不包含结束位本身) 1. 从头开始,开始索引 数字可以省略,冒号不能省略 2. 到末尾结束,结束索引 数字可以省略,冒号不能省略 3. 步长默认为 1,如果连续切片,数字和冒号都可以省略 九、变量进阶 引用:变量中记录数据的地址,就叫做引用 不可变类型:数值型int,bool,float,complex 字符串:str 元组tuple 可变类型: 列表list 字典dict 通过方法改变可变变量,其引用不会改变 · 局部变量 是在 函数内部 定义的变量,只能在函数内部使用 · 全局变量 是在 函数外部定义 的变量(没有定义在某一个函数内),所有函数 内部 都可以使用这个变量 函数在执行时,需要处理变量时会:1)首先查找函数内部是否存在指定名称的局部变量,如果有直接使用。 2)如果没有,查找函数外部是否存在指定的全局变量,如果有,直接使用 3)如果还没有,程序报错 如果在函数中需要修改全局变量,是要使用global进行声明。 [size=14.0000pt]十、函数进阶 Return 可以返回多个返回值 只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量 如果传递的参数是可变类型,在函数内部,使用方法修改了数据的内容,同样会影响到外部的数据 面对对象 面对对象--谁来做? 1. 在完成某一个需求前,首先确定 职责 —— 要做的事情(方法) 2. 根据 职责 确定不同的 对象,在 对象 内部封装不同的 方法(多个) 3. 最后完成的代码,就是顺序地让 不同的对象 调用 不同的方法 类:是对一群具有 相同 特征 或者 行为 的事物的一个统称,是抽象的,不能直接使用 o 特征 被称为 属性 o 行为 被称为 方法 · 对象:是 由类创建出来的一个具体存在,可以直接使用 · 由 哪一个类 创建出来的 对象,就拥有在 哪一个类 中定义的: o 属性 o 方法 类名:这类事物的名字,满足大驼峰命名法 属性:这类事物具有什么样的特征 方法:这类事物具有什么样的行为 定义类的语法: class 类名: def 方法1(self, 参数列表): pass def 方法2(self, 参数列表): Pass 创建对象:对象变量 = 类名() 由哪个对象调用方法,方法内的self就是哪个对象的引用 初始化方法: · 在 __init__ 方法内部使用 self.属性名 = 属性的初始值 就可以 定义属性 · 定义属性之后,再使用 Cat 类创建的对象,都会拥有该属性 __str__方法:必须返回一个字符串 封装: 1. 封装 是面向对象编程的一大特点 2. 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 3. 外界 使用 类 创建 对象,然后 让对象调用方法 4. 对象方法的细节 都被 封装 在 类的内部 is 与 == 区别:is 用于判断 两个变量 引用对象是否为同一个
== 用于判断 引用变量的值 是否相等 在定义属性或方法时,在属性名或者方法名前增加两个下划线,定义就是私有属性或方法 继承:实现代码的重用,相同的代码不需要重复的编写 继承的概念:子类拥有父类的所有方法和属性。 继承语法: Class 类名(父类名1,父类名2,....) 重写父类的方法: 1、覆盖父类的方法 2、对父类方法进行扩展:在需要的位置使用super().父类方法来调用父类方法的执行 多态:不同的子类对象调用相同的父类方法,产生不同的执行结果 类是特殊的对象——类对象,在程序运行时,类对象在内存中只有一份,使用一个类可以创建出很多个对象实例 类属性:就是给类对象中定义的属性,通常用来记录与这个类相关的特征 类方法:需要用修饰器@classmethod来标识,第一个参数应该是cls. 静态方法:需要用修饰器@staticmethod来标识,不需要传递参数 单例:让类创建的对象,在系统中只有唯一的一个实例 Class MusicPlayer(object): Instance = None Def __new__(cls, *args, **kwargs) If cls.instance is None: Cls.instance = super().__new__(cls) Return cls.instance 只执行一次初始化工作 Class MusicPlayer(object): Instance = None Init_flag = False Def __new__(cls, *args, **kwargs) If cls.instance is None: Cls.instance = super().__new__(cls) Return cls.instance Def __init__(self): If not MusicPlayer.init_flag: MusicPlayer.init_flag = Ture 异常: try: # 尝试执行的代码 pass except 错误类型1: # 针对错误类型1,对应的代码处理 pass except (错误类型2, 错误类型3): # 针对错误类型2 和 3,对应的代码处理 pass except Exception as result: print("未知错误 %s" % result) 抛出异常: ex = Exception(“ ”) raise ex 文件 | | | 以只读方式打开文件。文件的指针将会放在文件的开头,这是默认模式。如果文件不存在,抛出异常 | | 以只写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 | | 以追加方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 | | 以读写方式打开文件。文件的指针将会放在文件的开头。如果文件不存在,抛出异常 | | 以读写方式打开文件。如果文件存在会被覆盖。如果文件不存在,创建新文件 | | 以读写方式打开文件。如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在,创建新文件进行写入 |
|