程序的格式框架,即段落格式,是语法的一部分,可以提高代码的可读性和可维护性。
Python语言采用严格的缩进来表示程序逻辑。也就是我们所说的Python程序间的包含与层次关系。一般代码不要求缩进,顶行编写且不留空白。在等保留字所在完整语句后通过英文的“”结尾并在之后行进行缩进,表明后续代码与紧邻无缩进语句的所属关系。
缩进可以用键实现,也可以用多个空格实现(),但两者不能混用。建议采用4个空格方式书写代码。
注释是代码中的辅助性文字,会被编译器或解释器略去,不被计算机执行,一般用于程序员对代码的说明。Python语言中使用“”表示一行注释的开始。注释可以在一行中任意位置通过“”开始,其后面的本行内容被当作注释,而之前的内容依然是Python执行程序的一部分。
- 注释一般用于在代码中标明作者和版权信息
- 解释代码原理和用途
- 通过注释单行代码辅助程序调试。
Python程序是逐行编写的,每行代码长度并无限制,但从程序员角度,单行代码太长并不利于阅读。这个时候就可以使用续行符将单行代码分割为多行表达。
Python中的续行符为“”。续行符之后不允许再存在空格,即续行符后直接换行。
Python语言的基本单位是单词,少部分单词是Python语言规定的,被称为保留字。大部分单词是用户自己定义的,通过命名过程形成了变量或函数,用来代表数据或代码,称为标识符。
变量是保存和表示数据值的一种语法元素,变量的值是可以改变的,通过赋值运算符“”方式被修改。Python语言中,变量可以随时命名、随时赋值、随时使用。
由三部分组成:
多次赋值后将指向新的空间
保留字也称keyword关键字,被编程语言内部定义并保留使用的,每种程序设计语言都有一套保留字,保留字一般用来构成程序的整体框架,中一共有35个保留字。
Python3.x中的35个保留字
Python二级考试涉及到的保留字一共有22个。选学5个:Python中的保留字也是大小写敏感的。举例:为保留字,而则不是保留字。
标识符可以简单的理解为一个名字,主要用来标识变量、函数、类、模块和其他对象的名称。
标识符的命名规则
- 字母、数字、下划线
- 不能以数字开头
- 不能是Python中的保留字
- 只允许使用字符集中的和
- 允许使用中文,但不建议
- 注意:标识符对大小写敏感,和是两个不同的名字。
二进制是一套计数方法,每个位置上的数有 2 种可能(0 - 1);二进制是计算机的执行语言,但是早在计算机出现前就存在这套计数方法,最早可追溯到古埃及。在日常生活中,我们使用的是十进制,每个位置上的数有 10 种可能(0 - 9)。 早期的程序员爸爸为了让计算机能够认识我,将我能够认识的符号和数字对应好,然后做成一张表叫表,告诉计算机某种符号你应该使用哪个整数表示,使用了8个位(置)才能装得下我,在计算机中他们叫一个字节。
ASCII码表
ASCII码表字符解释
Python提供的3种数值类型:整数类型:与数学中的整数一致,包含正、负、0。一个整数有二进制、八进制、十进制、十六进制4种表示方式。
浮点数类型:与数学中的小数一致,没有取值范围限制,可正、可负。有两种表示形式,一种是小数点的形式,另外一种是科学计数法。浮点数只有十进制形式。
复数:与数学中的复数一致,采用的形式表示,存在实部和虚部。
计算机经常处理文本信息,文本信息在程序中使用字符串类型表示。在Python中使用单引号或双引号括起来的一个或多个字符来表示。单引号和双引号的作用相同。
字符序列有两种序号体系:正向递增序号: 有效范围为[0,N-1],其中N为字符串中字符的个数。最左侧的字符序号为0,依次向右递增,最右侧字符序号为N-1。
反向递减序号:有效范围为[-1,-N],其中N为字符串中字符的个数。最右侧的字符序与为-1,依次向左递减,最左侧的字符序号为-N。两种索引可以同时使用,以下代码为对单个字符进行的索引。
还可以采用格式获取字符串的子串,这种操作被称为切片操作。获取字符串中从到(但不包含)的连续的子字符串。和都表示的是索引序号,可以混合使用正向递增序号和反向递减序号。
通过Python默认提供的len()函数获取字符串的长度,一个中文字符和一个英文字符的长度都记为1。
产生或计算新数据值的代码片段称为表达式。类似于数学中的公式,一般由数据和操作符构成。
对变量进行赋值的一行代码被称为赋值语句。在Python中使用一个“”表示“赋值”,即将等号右侧表达式计算后的结果值赋给左侧的变量。
基本赋值语句语法:
同步赋值语句就是同时给多个变量进行赋值。同步赋值语句语法:
同步赋值语句应用最多的就是互换变量的值,即交换两个变量的值。
Python程序会经常使用到当前程序之外已有的功能代码,这个过程叫引用。
Python语言中使用这个保留字引用当前程序以外的功能库。 引用功能库之后使用 的方式调用基本功能,这种方式简称为“”方式。
除了赋值语句之外,Python还有分支语句和循环语句。先简单介绍一下使用,后面后详细讲解。
分支语句:根据判断条件选择程序执行路径。一般包含单分支结构、双分支结构和多分支结构。单分支语法结构:
任何能够产生True或False的语句都可以作为条件,当条件为True时,则执行语句块中的内容。
双分支语法结构:
当条件为时,执行语句块1,当条件为时,执行语句块2。其中 都是保留字。
循环结构与分支结构一样都是程序控制语句,它的作用是根据判断条件确定一个程序是否再执行一次或者多次。
条件循环的语法结构:
当条件为时,执行语句块1,然后再次判断条件,当条件为时,退出循环,执行语句块2。
函数是从控制台获得用户的一行输入,无论用户输入什么内容,函数都以字符串类型返回。函数可以包含一些提示性文字,用来提示用户。
input语法格式: 无论用户输入的是数字还是字符,函数统一按照字符串类型输出,为了后续能够操作用户输入的信息,需要将输入指定一个变量进行存储。
函数的提示性文字不是必须的,可写可不写。
函数将去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符内容。
eavl语法格式:
变量用来保存对字符串内存进行Python运算的结果。
函数去掉了字符串’’最外侧的引号,结果赋值给,所以的类型为类型。函数去掉了字符串最外侧的引号,对其内容当作Python语句进行运算,运算的结果为,保存到变量a中,所以a的类型是类型。
当函数处理字符串’’时,字符串去掉了两边的引号,Python语句将其解释为一个变量,由于这个变量在之前别有定义,因此解释器报错。如果定义变量并赋值为,再运行这个语句时就没有问题,如果输出为。
函数经常和函数一起使用,用来获取用户输入的数字。
与函数一起使用的语法:
用户输入的数字、包括小数和负数,解析为字符串,再由去掉字符串引号,将被直接解析为数字保存到变量中。
函数用于输出运算结果。
分隔符,默认为一个空格结束符,默认以换行结束
函数的三种用法:
- 仅用于输出字符串或单个变量
对于字符串,函数输出后将出掉两侧引号,对于其它类型,则会直接输出。
当输出字符串表示时,字符串统一使用单引号表达。在中的字符串都使用了双引号,但是在被函数打印输出时,输出结果都采用了单引号。
- 用于输出一个或多个变量 ,输出后的各变量之间用一个空格分隔。
- 用于混合输出字符串与变量的值,其中输出字符串模板中使用表示一个槽位,每个槽位对应中的一个变量。
函数输出的输出内容
函数输出的目的地
‘整数{}和整数{}的差是:’是输出字符串模板,也就是混合字符串输出的样式,大括号表示一个槽位,括号中的内容由后面紧跟着的方法中的参数按顺序填充。
为什么需要转义字符?当字符串中包含反斜杠、单引号和双引号等有特殊用途的字符时,必须使用反斜杠对这些字符进行转义(转换一个含义)。
- 反斜杠 :
- 单引号:
- 双引号:
当字符串中包含换行、回车,水平制表符或退格等无法直接表示的特殊字符时,也可以使用转义字符当字符串中包含换行、回车,水平制表符或退格等无法直接表示的特殊字符时,也可以使用转义字符。
- 换行:
- 回车:
- 水平制表符 :
- 退格 :
原字符:不希望字符串中的转义字符起作用,就使用原字符,就是在字符创之前加上
注意事项,最后一个字符不能是反斜线
Python提供了9个基本的数值运算操作符。
所谓函数表现为对参数的特定运算。
Python解释器自身提供了一些预先编写好的函数称为,其中与数值运算相关的函数如下:
赋值运算符:运算顺序
链式赋值,相同
参数赋值
系列解包赋值
布尔类型
- 表示真
- 表示假
- 布尔值可以转化为整数
-
-
Python中一切皆对象,所有对象都有一个布尔值,获取对象布尔值使用内置函数
比较运算符: 比较的值为True 或 False
和 二元数值构成了基本的真假逻辑,因此诞生了逻辑运算。
程序按照线性顺序依次执行的一种运行方式。
例:把大象装冰箱分几步:
程序根据判断条件的布尔值选择性地执行部分代码明确的让计算机知道在什么条件下,该去做什么。
中文语义:
条件语句:判断一次,条件为时执行一次
中文语义:
双分支结构,二选一执行
中文语义:
例: 从键盘录入一个整数成绩: 90-100 : A 80-89 : B 70-79 : C 60-69 : D 0-59 :E 小于0或大于100 不及格
代码:
:
例:商场消费
代码:
语法结构:
运算规则:如果判断条件的布尔值为,条件表达式的返回值为,否则条件表达式的返回值为
语句什么都不做,只是一个占位符,用在语法上需要语句的地方
什么时候使用语句:先搭建语法结构,还没想好代码怎么写的时候 。
s语句与哪些语句一起使用:
- 语句的条件执行体
- 语句的循环体
- 定义函数时的函数体
反复做同一件事情的情况,称为循环,语言的循环结构包括两种:遍历循环和无限循环。遍历循环使用保留字依次提取遍历结构各元素进行处理;无限循环使用保留字根据判断条件执行程序
:用于生成一个整数序列
创建对象的三种方式代码:
函数的返回值是一个迭代器对象
类型的优点 :不管对象表示的整数序列有多长,所有对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有当用到对象时,才会去计算序列中的相关元素
与 判断整数序列中是否存在(不存在)指定的整数
循环
- 表达从(字符串、序列等)中依次取值,又称为遍历
- 遍历的对象必须是可迭代对象
的语法结构
的执行图
使用循环 计算1-100之间的偶数和
输出100-999之间的水仙花数
:
四步循环法:
- 初始化变量
- 条件判断
- 条件执行体(循环体)
- 改变变量
- 打印输出
计算0-4之间的累加和
选择结构的与循环结构的区别
- 是判断一次,条件为执行一行
- 是判断次,条件为执行次
循环结构有两个辅助循环控制的保留字:与。
- 语句
用来跳出最内层或循环,脱离该循环后程序继续执行循环后续代码,通常与 分支结构 一起使用。
例:从键盘录入密码,最多录入三次,如果正确就结束循环
- 语句
语句用来结束当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环,进入下一次循环,通常与分支结构 一起使用
例:要求输出1-50-之间所有5的倍数
循环结构中又嵌套了另外的完整的循环结构,其中内层循环做为外层循环的循环体执行。
例1:打印一个三行四列矩形
例2:输出乘法口诀表
列表类型是包含0个或多个元素的有序序列,属于序列类型。列表可以进行元素的增加、删除、替换、查找等操作。列表没有长度限制,无素类型可以不同,不需要预定长度。列表类型用中括号表示,也可以通过函数将集合或字符串类型转换成列表类型。函数可生成空列表。
列表需要使用中括号,元素之间使用英文的逗号进行分隔
列表示意图:列表创建方式
- 使用方括号
- 使用内置函数
- 列表生成式
- 列表元素按顺序有序排列
- 索引映射唯一一个数据
- 列表可以存储重复数据
- 任意数据类型混存
- 根据需要动态分配内存空间
索引是列表的基本操作,用于获得列表第一个元素。该操作沿用序列类型的索引方式,即正向递增序号和反向递减序号,使用中括号作为索引操作符,索引序号不能超过列表的元素范围,否则会产生 的错误。
获取列表中指定元素索引
语法:
如果列表中含有相同元素,只返回相同元素的第一个元素的索引。
可以使用遍历循环对列表类型的元素进行遍历操作。
语法:
切片是列表的基本操作,用于获得列表的一个片段,即获得零个或多个元素。切片后的结果也是列表类型。切片有两种使用方式:
- 列表或列表变量
- 列表或列表变量
根据索引获取元素值
列表类型的一些常用操作方法:
代码:
运行结果:
方法
按升序对列表进行排序,返回 。 排序是原地的(即列表本身被修改)和稳定的(即 保持两个相等元素的顺序)。 如果给出了一个键函数,对每个列表项应用一次,并对它们进行排序, 根据它们的函数值升序或降序。 反向标志可以设置为降序排序。
内置函数
返回一个新列表,其中包含可迭代对象中的所有项,按升序排列。 可以提供自定义键函数来自定义排序顺序 可以设置 标志,以降序请求结果。
列表生成式: 简称列表生成的公式。
语法格式:例:
字典: 内置的数据结构之一,与列表一样是一个 可变序列,以 键值对的方式存储数据,字典是一个 无序的序列。 语言中的字典使用大括号 建立,每个元素是一个键值对。“”是组织数据的一种重要方式,广泛应用在当代大型信息系统中,如系统。键值对的基本思想是将“值”信息关联一个“键”信息,进而通过键信息找对应的值信息,这个过程叫映射。语言中通过字典类型实现映射。
字典的原理: 中的字典是根据 查找 所在的位置
在 中创建一个字典对象,常用的方式有两种。
- 第一种方式,使用花括号
- 第二种方式,使用内置函数。
- 创建空字典
根据键获取字典的值
内置数据结构:字典类源代码:
字典类型的一些通用操作函数
字典类型有一些操作方法,使用的语法格式为:
- key的判断
- 字典的删除
- 字典的清除
- 字典元素的新增
- 字典元素值的修改
- 获取所有的键, 方法 返回值为列表
- 获取所有的值,方法,返回值为列表
- 获取所有的键值对,方法 返回值为元组
字典元素的遍历:使用循环
1.键 不可以重复,值 可以重复2.字典中元素是无序的
3.字典会浪费大的内存,是一种使用空间换时间的数据结构,但是查询速度快。
- 内置函数
用于将可迭代对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
- 字典生成式:
元组:内置的数据结构之一,是一个不可变序列。
不可变序列与可变序列
- 不变可变序:、
不变可变序列:没有增、删,改的操作
- 可变序列:、
可变序列:可以对序列执行增、删、改操作,对象地址不发生更改
- 直接小括号
- 使用内置函数
- 只包含一个元组的元素需要使用逗号和小括号
- 空元组创建方式
为什么要将元组设计成不可变序列
在多任务环境下,同时操作对象时不需要加锁,因此,在程序中尽量使用不可变序列 。注意事项:元组中存储的是对象的引用
- 如果元组中对象本身不可对象,则不能再引用其它对象。
- 如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变。
这样设计的原因是,元组的不可变性保证了数据的完整性,这样如果有多个地方都用到了元组,我们可以保证它的数据不会被改变。并且,相较于列表,元组的读取速度更快,占用的内存空间更小,并且可以作为字典的去使用。
元组是可迭代对象,所以可以使用进行遍历
列表类型覆盖了元组类型的所有主要功能。
什么是集合
- 内置数据结构之一
- 与列表,字典一样都属于可变序列
- 集合是没有的字典
- 集合中的元素是无序的,元素不可以重复
- 使用
- 使用内置函数
字符串又称为字符序列,根据字符串的内容多少分为 单行字符串和 多行字符串。单行字符串可以由一对单引号或一对双引号作为边界,单引号和双引号的作用相同。当使用单引号时双引号可以作为字符串的一部分,使用双引号时,单引号可以作为字符串的一部分。
多行字符串由一对三单引号或三双引号作为边界来表示,二者作用相同。
字符串: 基本数据类型:是一个不可变序列
仅保存一份相同且不可变字符串的方法,不同的值会被保存在字符串的驻留池中。的驻留机制会对相同的字符串只保留一份拷贝,后续创建相同的字符串时,不会开辟新的空间,而是把字符串的地址付给新创建的变量。
- 字符串的长度为
- 符合标识符的字符串(只包含字母,数字,下划线)
- 字符串只在编译是进行驻留,而非运行时
- 之间的整数数字
中的 方法强制两个字符串指向同一个对象
对字符串进行了优化处理 。
当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的。在需要进行字符串拼接时建议使用 类型的方法,而非 ,因为方法是先计算出所有字符中的长度,然后再拷贝,只一次对象,效率要比""效率高 。
两个字符串进行比较时,比较的是 (原始值) ,如果相等则继续比较下一个字符,知道两个字符串不相等
对字符串中某个子串或区间的检索称为切片。
语法如下:
切片获取字符串 到 (不包含 )的子字符串,其中, 和 为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。切片要求 和 都在字符串的索引区间,如果 大于 ,则返回空字符串。如果 缺失,则默认将 设为 ;如果 缺失,则默认表示到字符串结尾。
- 为什么要格式化字符串
在字符串中整合变量是需要使用字符串的格式化方法。 字符串格式化用于解决字符串和变量同时输出的格式安排问题。
- 格式化字符串的三种方式
- 作为占位符
- 作为占位符''.format()
- '我叫,今年岁了' 占了一个字符串 占了一个整数
- ,其中,逗号用于显示数字类型的千分位分隔符。
- 有小数点开头。
编码:将字符串转换为数据()解码:将类型的数据转换成字符串类型
语法格式:
例:
函数的定义也叫函数“声明”,定义后的函数不能直接运行,需要经过“调用”才能得到运行。
语法格式:
函数的参数在定义时可以指定默认值,当函数被调用时,如果没人传入对应的参数时,则使用函数定义时的默认值替代。
语法格式
- 函数定义处的参数称为形式参数
- 函数调用处的参数称为实际参数
在函数调用过程中,进行参的传递:
- 如果是不可变对象,函数体的修改不会影响实参的值
- 若果是可变对象,函数体的改变会影响到实参的值
- 个数可变的位置参数:
参数定义时,可能无法事先确定传递的位置实参的个数,使用可变的位置参数
- 个数可变的关键字形参:
参数定义时,可能无法事先确定传递的位置实参的个数,使用可变的位置参数在一个函数的定义过程中,既有个数可变的 位置形参,又有个数可变的关键字形参,要求把放在前面
语句用来结束函数并将程序返回到函数调用的位置继续执行。 语句可以出现在函数中的任何部分,同时可以将 个、 个或多个函数运算的结果返回给函数被调用处的变量。
函数的返回值
- 如果没有返回值(函数执行完毕后,不需要给调用处提供数据),可以不写
- 若果返回值为个,直接返回类型
- 如果返回值为个,返回结果为
变量的作用域:程序代码能访问该变量的区域
- :在函数内定义并使用的变量,只在函数内部有效,局部变量使用声明,这个变量就会变成全局变量
- :函数体外定义的变量,可作用于函数内外
函数是程序的一种基本抽象方式,它将一系列代码组织起来通过命名供其他程序使用。的直接好处是代码复用,任何其他代码只要输入参数即可调用函数,从而避免相同功能的代码在被调用处重复编写。代码复用有另一个好处,当更新函数功能时,所有被调用处的功能都被更新。
程序由一系列代码组成,如果代码是顺序但无组织的,不仅不利于阅读和理解,也很难进行升级和维护。当程序长度在百行以上,如果不划分模块,程序的可读性就已经很糟糕了。解决这一问题最好的方法是将一个程序分割成短小的程序段,每一段程序完成一个小的功能。使用函数对合理划分为功能模块,并基于模块设计程序是一种常用方法,被称为“”。
模块化设计是指函数的封装功能将程序划分成主程序、子程序和子程序间关系的表达。模块化设计是使用函数设计的思考方法, 以功能块为基本单位,一般有两个基本要求:
- :尽可能合理划分功能块,功能块内部耦合紧密;
- :模块间关系尽可能简单,功能块之间耦合度低。
使用函数只是模块化设计的必要非充分条件,根据计算需求合理划分函数十分重要。一般来说,完成特定功能或被经常复用的一组语句应该采用函数来封装,并尽可能减少函数间参数和返回值的数量。
如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数。
与 。
每递归调用一次函数,都会在栈内存分配一个栈帧,每执行完一次函数,都会释放相应的空间。
缺点: ; 优点: 。
- 使用递归函数计算阶乘
- 斐波那契数列
程序一般对输入有一定要求,但当实际输入不满足程序要求时,可能会产生程序的运行错误。
世界上第一部万用计算机的进化版-马克2号( )
1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“ ”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”
从此以后,人们将计算机错误戏称为虫子(),而把找寻错误的工作称为()。
- 粗心导致的错误
1.漏了末尾的冒号: 循环语句、 语句等 2.缩进错误 3.英文符号写为中文符号 4.把字符串 和数字凭借在一起 5. 循环没有定义变量 6.比较运算符 和赋值运算符 混用
- 知识不熟悉导致的错误
1. 索引越界 2.列表方法
- 思路不清晰导致的错误
- 被动掉坑引起的错误
除零异常
解决办法
提供了异常处理机制,可以在异常出现时即时捕获,然后内部“ ”,让程序继续运行
正常输出:除零异常:值错误:
如果 中没有抛出异常,则执行 块;如果 中抛异常,则执行 块, 块不执行。
无论是否发生异常都会被执行,常用来解释 块中申请的资源
使用 模块打印异常信息
先看一段代码:
程序运行到此处,暂时挂起,停止执行。此时可以详细观察程序的运行情况,方便做出进一步的判断。
进入调试视图的三种方式:
(1)单击工具栏上的按钮
(2)右键单击编辑区:点击:
(3)快捷键:
:事物比较简单,可以用线性思维取解决( )
:事物比较复杂,使用简单线性思维无法解决( )共同点:面向过程和面向对象都是解决实际问题的一种思维方式
二者相辅相成,并不是独立的,解决复杂问题,通过面向对象便于我们从宏观上把握事物之间复杂关系,方便我们分析整个系统;具体到微观操作,仍然使用面向过程来处理
:多个类似事物组成的群体统称,能够帮我们快速理解和判断事物的性质。数据类型:1.不同数据类型属于不同的类 2.使用内置函数查看数据类型
:类的具体化 中一切皆对象,创建对象称为类的实例化
创建类的语法:
:
- 类属性 类中方法外的变量,被该类的所有对象所共享
- 实例方法 方法必须有第一个形参,通常叫做
- 静态方法 使用修饰,使用类名直接访问的方法
- 类方法 使用修饰,使用类名直接访问的方法
类的创建:
对象的创建又称类的实例化 意义:有了实例 就可以调用类中的内容
:
类属性,类方法,静态方法都是使用 调用 实例方法采用 调用
动态绑定属性: 动态绑定方法:
:将属性和方法包装到类对象中,在方法内部对属性进行操作,在类对象外部调用方法。
代码实现:
如果不希望实例属性在类的外部被使用,可以在前面加上两个下划线" "
:子类可以继承父类的属性和方法,提高代码的复用性。 如果一个对象没有继承任何类,则默认继承 t类
语法格式:
代码实现:
如果子类对继承自己父类的某个属性不满意,可以在子类对其(方法体)进行重新编写。子类重写后的方法通过 调用父类中被重写的方法。
一个子类可以有多个“直接父类”,这样,就具备了“多个父类”的特点,通过类的特殊属性 可以查看类的组织结构。定义子类时,必须在其构造函数中调用父类的构造函数
:多态就是具有多种形态,即便不知道一个变量所引用的对象是什么类型,仍然可以使用这个变量调用方法,在运行过程中根据变量所引用的对象类型,动态决定调用那个对象中的方法。
代码实现:
动态语言与静态语言
是一门动态语言,可以在创建对象后动态的绑定属性和方法,
静态语言和动态语言关于多态的区别:
实现多态的三个必要条件( )
:( 动态语言的多态崇尚 “ “ 一只鸟走起来像鸭子,游起来像鸭子,那么这只鸟就可以被称为鸭子。在鸭子类型中,不需要关心对象是什么类型,到底是不是鸭子,只关心对象的 '''
方法和 方法
方法
方法
只是多生成了一个变量,实际上还是指向同一个对象
赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。
拷贝一般都是 ,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象。
**浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变)**
哪些是浅拷贝:
- 完全切片方法;
- 工厂函数,如;
- 模块的函数。
使用 模块的 函数,递归拷贝对象中包含的子对象,源对象和拷贝对象所有的子对象也不相同。
深拷贝:创建一个新的对象,并且递归的复制它所包含的对象。
修改其中一个,另外一个不会改变。因此,新对象和原对象没有任何关联。 例如:{ 模块的 )函数}
1.:英文名
2.在中 一个拓展名为的文件就是一个模块
3.函数与模块的关系:
- 包含语句
- 包含类
- 一个模块中可以包含多个函数
4.使用模块的好处:
- 方便其它程序和脚本的导入
- 避免函数名和变量名冲突
- 提高代码的可维护性
- 提高代码的课重用性
创建模块:
新建一个 文件,名称尽量不要与 自带的标准模块名相同
导入模块:
代码实现:
自定义模块
导入自定义模块
在每个模块的定义中都包含了一个记录模块名称的变量 ,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其他程序中执行,那么它可能在解释器的顶级模块中执行。
顶级模块变量的值为_
语句:
自定义模块
导入模块
1.包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下
2.包的作用:
- 代码规范
- 避免模块名称冲突
3.包与目录的区别:
- 包含文件的目录称为
- 目录里通常不包含文件
4.包的导入:
包下面有模块和模块
模块
模块
导入包
导入带有包的模块注意事项
1.使用 方式进行导入时,只能跟 或
2.使用 可以导入 , , ,
与python解释器及环境相关的标准库
提供与时间相关各种函数的标准库
提供访问操作系统服务功能的标准库
常见的字符编码格式
的 使用的是 定长编码: 个字节表示一个字符文件放在磁盘上使用 变长编码:是的实现,个字节表示一个字符,英文个字节,汉字个字节。
新建文件
记事本打开:
输入,输出
文件操作原理
- python操作文件
- 打开或新建文件
- 读,写文件
- 关闭资源
内置函数创建文件对象
通过 流将磁盘文件中的内容与程序中的对象中的内容进行同步
语法规则
代码演示:文件
文件
文件类型:按文件中数据的组织形式,文件分为以下两大类:1.:存储的是普通“字符”文本,默认为Unicode字符集,可以使用记事本程序打开
2.:把数据内容以字节进行存储,无法用记事本打开,必须使用专用的文软件打开,举例:音频文件 图片 文档等
常用 的文件打开模式
代码演示:
文件
文件
文件文件文件
语句可以自动管理上下文资源,不论什么原因跳出 块,都能确保文件正常关闭,以此来达到释放资源的目的
语句:
称为 ,同时创建一个运行时上下文,自动调用 方法,并将返回值赋给 , 实现了特殊方法 , ,遵守了上下文管理协议,这句表达式的对象就是上下文管理器,离开运行时上下文,自动调用上下文管理器的特殊方法
语句复制文件:
1. 模块是 内置的与 和 相关的模块,该模块中的语句执行结果通常与操作系统有关,在不同操作系统上运行,得到的结果可能不一样.2.模块于模块用于对目录或文件进行操作
打开记事本:
打开计算器:
模块操作目录相关函数
代码实现:
模块操作目录相关函数
代码实现:
代码实现:
本文地址:http://xiaoguoguo.dbeile.cn/quote/1303.html 多贝乐 http://xiaoguoguo.dbeile.cn/ , 查看更多