python基础班已经接近尾声,以下是我在上课过程中记录的一些我认为比较重要的知识点,供大家参考。 第一天: 1.什么是python 优点:简单、可读性高、适合短期开发 解释型语言,跨平台好 缺点:运行速度慢 中文资料较少 设计哲学: 简单 优雅 开源 python是完全面向对象语言 2.写下第一条python语句,hello world!(输入输出) 什么是报错,错误的类型 1.bug 2.手误 单词拼写错误 name error 命名错误 syntax error 语法错误 indentation error 缩进错误 多了空格 报错的原因:每一行代码只负责完成一个动作 python2.x和python3.x区别:python2.x不支持中文 解决方案:第一行代码-*-coding:utf-*- 可以使python2.x可以使用中文 3.python的交互方式---运行方式 1.使用终端命令去运行 cmd进入终端,输入python 2.ipython 有自动补全功能,缺点:不能够保存 pip install ipython 安装ipython 3.pycharm 集成开发环境 IDE pycharm 调试工具 debug 断点调试 第二天: 什么是注释 解释说明代码,让其他程序员能够看懂 单行注释 #XXXX 一个#号加注释语句 多行注释 """XXXX""" 连续敲三个引号,里面添加注释内容 1.定义函数的介绍 2.定义方法的介绍 算术运算符 最普遍的4则运算符 加减乘除 + - * / // 取整 8//3=2 % 取余 9//3=0 ** 幂 2**3=8 2的三次方 变量 变量定义 变量的类型 变量的命名 type函数,可以查看数据类型 变量类型之间的计算 数字类型和数字类型可以相加 字符串和字符串类型可以 + 数字类型之间可以直接相加,包括boolen类型 函数:一个功能代码的封装 目前学习了三个函数 print 输出 type 识别函数类型 input 输入 通过用户输入键盘的内容,input所接受的数据类型都是字符串型 input:输入 变量名= input("提示信息") 类型转换函数 int()将字符串转换成整数 float()将字符串转换成浮点型 注意:字符串类型不能直接相乘 字符型的数据需要添加双引号“” 格式化输出 %s 表示字符串 %d 表示整型 %f 表示浮点型 %% 表示% 标识符 1.标识符只能由字母数字下划线组成 2.不能以数字开头 3.不能与关键字重名 关键字有哪些:关键字是Python语言提前内置好的标识符,关键字具有特殊的功能和含义, 不能定义与关键字相同名字的关键字 import 导入“工具包” 第三天: 学习目标:判断语句 if ..elif...else 定义:1.如果条件满足,则完成某件事情 2.如果条件不满足,则完成另一件事情,或者什么事情都不做 条件成立,执行A 条件不成立,执行B 注意:代码的缩进为一个Tab键,或者4个空格--建议使用空格 在Python开发中,Tab和空格不要混用! 程序格式: if 要判断的条件: 4个空格 执行的语句 else 执行的语句 例:if(条件语句): 输出 else: 输出 比较运算符 ==判断是否相等 != 判断是否不相等 ==与=的区别 ==是等于的意思 = 是赋值,将等号右边的值赋值给左边 快捷键:ctrl+/ 单行注释 运行 shift+ctrl+f10 1 逻辑运算符 与 或 非 and or not 与 and:1.两个条件同时满足,返回true 2.只要有一个不满足,就返回false 或 or:1.两个条件只要有一个满足,返回true 2.两个条件都不满足,返回false 非 not:取反,原来是真的,变成假的。原来是假的,变为真的。对条件取反。 elif (平级判断) 语法结构: if 条件判断语句1: 代码1 elif 条件判断语句2: 代码2 elif 条件判断语句3: 代码3 else 代码4 注意:elif和else都不能单独使用,必须和if一起使用。 if的嵌套语句(在之前条件满足的情况下,再判断下一个条件) 应用场景:在之前的条件满足的前提下,再增加额外的判断 除了缩进不一样,其他都一样 import 导入工具包 random 随机整数 random.randint(a,b) ,随机a<=n<=b之间的数字 1.a=10,b=30,n大于等于10,小于等于30 2.a=10,b=10,n一直等于10 3.a=10,b=5,报错,前面一个数a必须大于后面的数b 第四天: 类是一系列事物的统称,同类事物必定具有相同的特征。 特征分类: 状态 变量(成员变量)属性 行为 方法(成员方法)函数 统称:类的成员 类定义 定义格式一: calss Cat: pass (pass代表什么都还没写,类里面为空) class 类名: ____pass 定义格式二: class 类名: ____成员 类名命名规范:大驼峰命名规则(例:TypeName 每一个单词首字母大写) 函数命名规则:小驼峰命名规则(例:cater 多个单子组合首字母小写,第二个字母的首字母大写) 创建对象: 格式: 变量名 = 类名() 注意:对象不限制数量 类成员包括: 成员变量 成员方法 成员变量的定义与调用 定义格式: class 类名: ____def ___init__(self) ____ ____self.变量名 = 值1 ____ ____self.变量名 = 值2 ____ ____self.变量名 = None ____ ____self.变量名 = None init(构造方法) 自定义参数 创建对象并进行赋值 def __init__(self,形参列表): self.属性名1 = 形参 1 self.属性名2 = 形参 2 调用格式: 取值:对象名.变量名 赋值:对象名.变量名 = 值 成员方法定义与调用 定义格式: class 类名: ____def 方法名(self): ________方法体 调用格式: 对象名.方法名() 定义格式二: class 类名: ____def 方法名(self,形参1,形参2......) ________方法体 调用格式二: 对象名.方法名(实参1,实参2......) str方法 在使用print函数打印对象时,将自动调用__str__()方法。 该方法无需手工调用即可执行 __str__()方法定义格式: def__str__(self): return 打印对象时显示的信息字符串 成员方法调用成员变量: 在成员方法中,访问类的成员变量,用self. 进行 注意:self仅在申明时占位,无需传递具体参数 iphone = phone(80) 传递的参数是传递给 init 里面的self代表内存地址 类 实例化 对象 iphone = phone() 面向对象有三大特性: 1.封装:私有属性,私有方法 通过私有化成员,可以防止类的成员进行访问 私有属性定义格式: self.__属性名 = 值 通过封装,可以对类中设定访问保护的成员开放访问控制权限。 达到保护数据不被非法访问的目的。 封装定义格式 访问器(get方法) : def get_变量名(self): return__变量名 修改器(set方法): def set_变量名(self,形参): self.__变量名 = 形参 私有化成员:通过私有化成员,可以防止对类的成员进行访问 私有属性定义格式: self._属性名 = 值 2.继承 3.多态 第五天: 类、继承、多态: object类是所有类的父类 class 类名(object) def 方法名: 方法体 多继承符合左原则(Father,Mother) 继承中,父类的私有变量和私有方法无法被子类继承 鸭子类型(stupid、foolish):对象在语法层面满足调用关系,实际不具有实际的对象形态,称该对象此时具备 鸭子类型 多态:描述对象多态的性质。对象的多态,一个对象有多个方法,必须要有继承的概念在里面,从多个对象继承相应的功能过来 多调用的方法与需要的方法内容不一致,就是鸭子类型。 self 对应的是对象的内存地址 cls 对应的是类的内存地址 面向对象中的三种方法: 类方法、成员方法、静态方法 类方法格式: @classmethod def 方法名(cls): 方法体 成员方法: def 方法名(self): 方法体 静态方法: @staticmethod def 方法名(形参) 方法体 类方法注意事项: 类方法中不允许使用成员变量和成员方法 成员方法中允许使用类变量和类方法,推荐使用类名调用 类名.方法名() 第六天: tuple 元组 True向数字方向延展 是1,向字符串方向延展是 字符串"True" 强制类型转换bool 字符串里面什么都没有“”转换成False, 字符串里面有数据" sss"转换成True 字典的命名规则是 key 和 value合一,简称键值 {"name": "李红", "age": "21"} range(步调数) 创建格式一: range(m) 生成0 到m-1的整数列表 创建格式二: range(m,n) 生成m 到 n-1的整数列表 (m<=x<n) 创建格式三: range(m,n,s) 生成m 到 n-1 的整数列表,每个间隔s(1.3..5.7) range作用 配合for循环构造指定次数的循环 for _ in range(....): _____循环执行的代码 第7天: 切片语法: 公共语法3 列表推导式: (表达式 for循环 if 判断) list1=[i for i in range(a,100)] print(list1) if i5%2 ==0 and i%7 ==0 print(list1) 字典中 item 是键值对 字符串判断操作 is判断方法 startswitch 判断是否是哪个字符开头 (结果是true or False) 例子:name = "张三丰" print(name.startswith("张")) endswitch 判断是否是哪个字符结尾(结果是true or False) 例子:filename = "1.jpg" if filename.endswith(".jpg") or filename.endswitch(".png") print("这是一个图片") 格式转换类型 经常使用,有注意,使用性比较强 strip(占位符) 去字符串左右两侧占位符(用户输入数据有可能误操作,输入空格,这个时候就可以使用) lstrip(占位符) 去字符串左侧占位符 ljust(长度,占位符) 左占位右侧补占位符 rjust(长度,占位符) 右占位左侧补占位符 center(长度,占位符) 两侧补占位符 zfill(长度) 左侧补0 注意: 省略占位符,默认为空白占位符 查询操作(判断语句的重点) find 语句,没有找到返回 -1 第8天: 函数的参数(形参、实参) 1.*args 可变参数 2. sep 分隔符 print(“a”,"b","c",sep="+") 结果:a+b+c 3.字典参数(**kw args) 形参里面没有的形参,在实参中出现,用 **kwargs,输出为字典格式 作用:函数/方法多层级调用间的关键字参数传递 递归函数: 函数体内出现对自身函数的调用 递归的终止条件叫递归出口 函数调用的最大层级是1000 引用:查看数据在内存中的存储位置 print(id()) -5到256是python中的常用地址 在内存中已经分配好,不需要再分配地址,其他数字在赋值时要重新分配内存地址 __sizeof__查看内存占用的size空间 可变类型和不可变类型 可变类型: 不可变类型 列表 字符串 集合 元组 字典 数值型 对象 布尔型
|