#python
##1.1字面量
- 在代码中,被写下来的固定的值,被称为字面量
- 整数(int)
- 浮点数(float)
- 字符串(string):要用双引//号包围起来
##1.2 注释
- 注释是在程序代码中对程序代码进行解释说明的文字,不能被执行
- 1.单行注释:
#注释内容
- 2.多行注释:
"""注释内容"""
##1.3 变量 - 在程序运行时,能储存计算结果或者能表示值的抽象概念
- 定义格式:
变量名称=变量的值
- 特征:变量的值可以改变
##1.4 数据类型 - 查看数据类型:语法:
type(被查看的数据类型)
,并可以返回值
##1.5 数据类型的转换
|语句(函数)|说明
|—|—
|int(x)|将x转换为一个整数
|float(x)|将x转换为一个浮点数
|str(x)|将对象x转换为字符串 - 这三个语句都是带有返回值的
##1.6 标识符 - 标识符的命名规则:
- 内容限定
- 大小写敏感
- 不可以使用关键字
- 标识符命名中,只允许出现:
- 英文
- 中文
- 数字
- 下划线
- 注意:
- 不推荐使用中文
- 数字不可以开头
- 变量的命名规范:
- 见名知意
- 下划线命名法
##1.7 运算符
- 算数运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | 两个对象相加 |
- | 减 | 得到负数或者一个数减去另一个数 |
* | 乘 | 两个数相乘或者返回一个被重复若干次的字符串 |
/ | 除 | 两个数相除 |
// | 取整数 | 返回商的整数部分 如:9//2输出结果4,9.0//2.0输出结果4.0 |
% | 取余 | 返回余数 |
** | 指数 | 做指数运算 |
-
赋值运算符:=
-
复合赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
+= | 加法赋值 | c+=a为c=c+a |
-= | 减法赋值 | c-=a为c=c-a |
*= | 乘法赋值 | c*=a为c=c*a |
/= | 除法赋值 | c/=a为c=c/a |
%= | 取模赋值 | c%=a为c=%a |
**= | 幂赋值 | c**=a为c=c**a |
//= | 取整除赋值 | c//=a为c=c//a |
##1.8字符串扩展
####1.字符串三种定义方式
- 单引号定义法
name=''
-双引号定义法name=""
- 三引号定义法
name=""""""
####2.字符串的引号嵌套 - 单引号定义法,可以内含双引号
- 双引号定义法,可以内含单引号
- 可以使用转义字符(\)来将引号解除效用,变成普通字符串
####3.字符串拼接 - 两个字符串直接可通过+拼接
- 无法和非字符串类型进行拼接
####4.字符串格式化 - 可用%s
- %表示:我要占位
- s表示:将变量变成字符串放入占位的地方
- 注意:多个变量占位,变量要用括号括起来,并按照占位顺序填入
格式符号 | 转化 |
---|---|
%s | 将内容转换成字符串,放入占位位置 |
%d | 将内容转换成整数,放入占位位置 |
%f | 将内容转换成浮点型,放入占位位置 |
####5.格式化的精度控制
- 使用m.n
- m:控制宽度,要求是数字,设置的宽度小于数字自身,不生效
- n:控制小数点精度,要求是数字,会进行小数的四舍五入
- 示例:
- %5d:表示将整数的宽度控制在5位,如数字11被设置成5d,就会变成[空格][空格][空格]11,用三个空格补足宽度
- %5.2f:表示将宽度控制为5,将小数点精度设置为2.如对11.345设置%7.2f后,结果是[空格][空格]11.35
####6.快速格式化
- 语法:
f"内容{变量}"
- 注意:
- 不会理会类型
- 不做精度控制
####7.对表达式格式化
- 在无需使用变量进行数据储存时,可以直接格式化表达式
##1.9 数据输入 - 数据输入:input
- 数据输出:print
- 注意:无论从键盘输入什么类型,获取到的数字永远是字符串类型
##2.1布尔类型和比较运算符 - bool类型
- True表示真,本质是1
- False表示假,本质是0
- bool类型不仅可以自己定义,也可以通过比较运算符得到
运算符 | 描述 |
---|---|
== | 判断内容是否相等 |
!= | 判断内容是否不相等 |
> | 判断左侧内容是否大于右侧 |
< | 判断左侧内容是否小于右侧 |
>= | 判断左侧内容是否大于等于右侧 |
<= | 判断左侧内容是否小于等于右侧 |
- 满足为True,不满足为Flse
##2.2 if语句的基本格式
if 要判断的条件:
条件成立时,要做的事情
#####判断语句的结果,必须是布尔类型True或False,True会执行if里面的语句,False则不会执行
#####归属于if判断的代码语句块,需要在前方填充4个空格缩进
#####python通过缩进判断代码块的归属关系
##2.3if else语句
- if 条件:
- 满足条件时要做的事情1
- 满足条件时要做的事情2
- …………
- else :
- 不满足条件时要做的事情1
- 不满足条件时要做的事情2
- …………
##2.4if elif else语句
- if 条件1:
- 满足条件1时要做的事情1
- 满足条件1时要做的事情2
- …………
- elif 条件2:
- 满足条件2时要做的事情1
- 满足条件2时要做的事情2
- …………
- elif 条件N:
- 满足条件N时要做的事情1
- 满足条件N时要做的事情2
- …………
- else :
- 所有条件都不满足时要做的事情1
- 所有条件都不满足时要做的事情2
- …………
#####判断时互斥且有顺序的
- 满足1将不会理会2和3
- 满足2,将不会理会3
- 1.2.3都不满足,进入else
- else也可以省略不写,效果等同于三个独立的if判断
#####可以将input语句直接写入判断条件中
##2.5判断语句的嵌套 - 可自由组合if elif else来构建多层次判断
##3.1whlie循环
- 语法:
- while 条件:
- 条件满足时,做的事情
- 只要条件满足就会无限执行
- 条件需提供布尔类型的结果,True继续,False停止
- 用四个空格缩进
- 规划好循环条件
##3.2while循环的嵌套 - 用空格缩进来确定归属
##3.3for循环 - while循环的循环条件是自定义的,自行控制循环条件
- for循环是一种轮询机制,是对一批内容进行逐个处理
- 语法:
- for 临时变量 in 待处理的数集:
- 循环满足时执行的代码
##3.3 range语句
-
- range(num):获取一个从0开始到num结束的数字序列,但不包括num
-
2.range(num1,num2):获取一个从num1开始到num2结束的数字序列,但不包括num2
-
3.range(num1,num2,step):获取一个从num1开始到num2结束的数字序列,但不包括num2,数字之间的步长为step,step默认为1
##3.4 for循环临时变量作用域
- for循环的临时变量作用域为:循环内
- 如果需要临时访问,可以预先在循环外定义它
##3.5 for循环的嵌套使用 - 利用空格缩进确定归属
####continue:中断本次循环直接进入下一次循环
####break:直接结束所在的循环
####注意:在嵌套循环中,只能作用在所在的循环中,无法对上层循环起作用
##4.1函数 - 函数:是组织好的,可以重复使用的,用来实现特定功能的代码段
##函数的定义语法
def 函数名(传入参数):
函数体
return 返回值 - 使用步骤:先定义函数,再调用函数
- 注意:参数和返回值不需要,可以省略
##4.2 函数的参数 - 函数定义中,提供的成为形式参数(形参),参数之间使用逗号分隔
- 函数调用中,提供的成为实际参数(实参),按照顺序传入参数,使用逗号分隔
##4.3 函数的返回值 - 返回值:函数在执行完成后:返回给调用者的结果
- 函数体在遇到return后就结束了,写在return后的代码不会被执行
##4.4 None类型 - 无返回值的函数,实际上就是就是返回了None这个字面量
- 1.用在无返回值的函数上
- 2.用在if判断,None等同于False
- 3.定义变量,但暂时不需要有变量的具体值,可以用None来代替
##4.5 函数的说明文档 - 内容应写在函数体之前
"""
函数说明
:param:x:形参x的说明
:param:y:形参y的说明
:return:返回值的说明
"""
##4.6 函数的嵌套
- 函数的嵌套是指一个函数里面调用了另外的函数
##4.7 变量的作用域 - 局部变量:定义在函数体内的变量,只在函数体内内部生效
- 作用:在函数体内部临时保存数据,当函数调用完成后,就销毁临时变量
- 全局变量:在函数体内外都能生效的变量
####global关键字:在函数内部声明变量为全局变量
##5.1 数据容器入门 - 列表:list
- 元组:tuple
- 字符串:str
- 集合:set
- 字典:dict
##5.2 列表
##5.2.1 列表的定义
基本语法:
#字面量
[元素1,元素2,元素3…………]
#定义变量
变量名称=[元素1,元素2,元素3…………]
#定义空列表
变量名称=[]
变量名称=list()
- 列表中的每一个数据,称为元素
- 以[]作为标识
- 列表中的每一个元素之间用逗号隔开
- 元素的数据类型没有限制,元素也可以是列表,这样就定义了嵌套列表
##5.2.2 列表的索引 - 从前向后从0开始,每次加1
- 从后向前从-1开始,内次减1
- 注意:通过下标索引数据,一定不要超出范围
##5.2.3 列表常用的操作方法
####查找某元素的下标 - 语法:
列表.index(元素)
- 如果找不到,报错ValueError
####修改特定位置的元素值
- 如果找不到,报错ValueError
- 语法:
列表[下标]=值
####插入元素 - 语法:
列表.insert(下标,元素)
- 在指定的下标位置,插入指定的元素
####追加元素 - 语法:
列表.append(元素)
- 将指定的元素,追加到列表的尾部
####追加元素2 - 语法:
列表.extend(其他数据容器)
- 将其他数据容器的内容取出,依次追加到列表尾部
####删除元素 - 语法1:
del列表[下标]
- 语法2:
列表.pop(下标)
####删除某元素在列表中的第一个匹配项 - 语法:
列表.remove(元素)
####清空列表 - 语法:
列表.clear()
####统计元素在列表内的数量 - 语法:
列表.count(元素)
####统计列表内有多少元素 - 语法:len(列表)
###列表总结 - 可以容纳多个元素(上限为2**63-1)
- 可以容纳不同类型的元素
- 数据是有序储存的
- 允许重复数据存在
- 可以修改
##5.2.4 列表的遍历循环 - 1.利用while来实现
index =0
while index<len(my_list):
elemet=my_list[index]
print(f"列表中的元素:{elemet}")
index+=
- 2.利用for来实现
for element in my_list:
print(f"列表中的元素:{elemet}")
##6 os模块
描述 | 方法 |
---|---|
检验权限模式 | os.access(path, mode) |
改变当前工作目录 | os.chdir(path) |
设置路径的标记为数字标记 | os.chflags(path, flags) |
更改权限 | os.chmod(path, mode) |
更改文件所有者 | os.chown(path, uid, gid) |
改变当前进程的根目录 | os.chroot(path) |
关闭文件描述符 fd | os.close(fd) |
关闭所有文件描述符,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略 | os.closerange(fd_low, fd_high) |
复制文件描述符 fd | os.dup(fd) |
将一个文件描述符 fd 复制到另一个 fd2 | os.dup2(fd, fd2) |
通过文件描述符改变当前工作目录 | os.fchdir(fd) |
改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限 | os.fchmod(fd, mode) |
修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定 | os.fchown(fd, uid, gid) |
强制将文件写入磁盘,该文件由文件描述符fd指定,但是不强制更新文件的状态信息 | os.fdatasync(fd) |
通过文件描述符 fd 创建一个文件对象,并返回这个文件对象 | os.fdopen(fd[, mode[, bufsize]]) |
返回一个打开的文件的系统配置信息。name为检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它 | os.fpathconf(fd, name) |
返回文件描述符fd的状态,像stat() | os.fstat(fd) |
返回包含文件描述符fd的文件的文件系统的信息,Python 3.3 相等于 statvfs() | os.fstatvfs(fd) |
强制将文件描述符为fd的文件写入硬盘 | os.fsync(fd) |
裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小 | os.ftruncate(fd, length) |
返回当前工作目录 | os.getcwd() |
返回一个当前工作目录的Unicode对象 | os.getcwdb() |
如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False | os.isatty(fd) |
设置路径的标记为数字标记,类似 chflags(),但是没有软链接 | os.lchflags(path, flags) |
修改连接文件权限 | os.lchmod(path, mode) |
更改文件所有者,类似 chown,但是不追踪链接 | os.lchown(path, uid, gid) |
创建硬链接,名为参数 dst,指向参数 src | os.link(src, dst) |
返回path指定的文件夹包含的文件或文件夹的名字的列表 | os.listdir(path) |
设置文件描述符 fd当前位置为pos, how方式修改: SEEK_SET 或者 0 设置从文件开始的计算的pos; SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始. 在unix,Windows中有效 | os.lseek(fd, pos, how) |
像stat(),但是没有软链接 | os.lstat(path) |
从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field) | os.major(device) |
以major和minor设备号组成一个原始设备号 | os.makedev(major, minor) |
递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹 | os.makedirs(path[, mode]) |
从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field ) | os.minor(device) |
以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制) | os.mkdir(path[, mode]) |
创建命名管道,mode 为数字,默认为 0666 (八进制) | os.mkfifo(path[, mode]) |
创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe) | os.mknod(filename[, mode=0600, device]) |
打开一个文件,并且设置需要的打开选项,mode参数是可选的 | os.open(file, flags[, mode]) |
打开一个新的伪终端对。返回 pty 和 tty的文件描述符 | os.openpty() |
返回相关文件的系统配置信息 | os.pathconf(path, name) |
创建一个管道. 返回一对文件描述符(r, w) 分别为读和写 | os.pipe() |
从一个 command 打开一个管道 | os.popen(command[, mode[, bufsize]]) |
从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串 | os.read(fd, n) |
返回软链接所指向的文件 | os.readlink(path) |
删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory | os.remove(path) |
递归删除目录 | os.removedirs(path) |
重命名文件或目录,从 src 到 dst | os.rename(src, dst) |
递归地对目录进行更名,也可以对文件进行更名 | os.renames(old, new) |
删除path指定的空目录,如果目录非空,则抛出一个OSError异常 | os.rmdir(path) |
获取path指定的路径的信息,功能等同于C API中的stat()系统调用 | os.stat(path) |
决定stat_result是否以float对象显示时间戳 | os.stat_float_times([newvalue]) |
获取指定路径的文件系统统计信息 | os.statvfs(path) |
创建一个软链接 | os.symlink(src, dst) |
返回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组 | os.tcgetpgrp(fd) |
设置与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组为pg | os.tcsetpgrp(fd, pg) |
Python3 中已删除。返回唯一的路径名用于创建临时文件 | os.tempnam([dir[, prefix]]) |
Python3 中已删除。返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除 | os.tmpfile() |
Python3 中已删除。为创建一个临时文件返回一个唯一的路径 | os.tmpnam() |
返回一个字符串,它表示与文件描述符fd 关联的终端设备。如果fd 没有与终端设备关联,则引发一个异常 | os.ttyname(fd) |
删除文件路径 | os.unlink(path) |
返回指定的path文件的访问和修改的时间 | os.utime(path, times) |
输出在文件夹中的文件名通过在树中游走,向上或者向下 | os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]]) |
写入字符串到文件描述符 fd中. 返回实际写入的字符串长度 | os.write(fd, str) |
获取文件的属性信息 | os.path 模块 |
获取当前目录的父目录,以字符串形式显示目录名 | os.pardir() |
重命名文件或目录 | os.replace() |
##7 面向对象
##7.1初识对象
-
步骤:
- 1.设计类(class)
- 2.创建对象
- 3.对象属性赋值
##7.2 类的成员方法
-
语法
-
class 类名称:
类的属性(定义在类中的变量(成员变量))类的行为(定义在类中的函数(成员方法))
-
创建类对象的方法:
对象=类名称()
- 从这里开始,定义在类内部的函数称之为方法
####成员方法的定义语法
def方法名(self,形参1,……,形参N)
方法体
可以看到,在方法定义参数列表中有一个self关键字
- self关键字是成员方法定义的时候必须填写的
- 它用来表示类对象自身的意思
- 当我们使用类对象调用方法的是,self会自动被python传入
- 在方法内部,想要访问类的成员变量,必须使用self