Python回炉复习 1

变量

Python的变量和C语言的变量书写方式类似;

书写要求

python程序编写结构利用缩进表示,抛弃花括号;

结构

分支:

  1. if(条件语句1):
  2. 执行语句块
  3. else if(条件语句2):
  4. 执行语句块
  5. else:
  6. 执行语句块

循环:

while 循环

  1. while 循环条件:
  2. 循环语句体

for 循环

  1. for 目标 in 表达式:
  2. 循环语句体

表达式的结果会和目标联成共体

  • range()函数:

步长函数;

range(x,y,z)

​ x:开始

​ y:结束(y-1)

​ z:步长

  • break 语句:

跳出当前结构体

  • continue 语句:

结束以此循环体的运行

列表

创建列表

  1. >>> num = [1,2,3,4,5] // 列表创建
  2. >>> num // 列表输出
  3. [1, 2, 3, 4, 5]
  4. >>> num = ['Hello','你好',666]
  5. >>> num // 列表支持各种类型,除数字以外的其他字符都需要用单引号
  6. ['Hello', '你好', 666]

append():添加元素

  1. >>> num.append(6)
  2. >>> num
  3. [1, 2, 3, 4, 5, 6]

extend():添加多个元素

  1. >>> num.extend([7,8,9])
  2. >>> num
  3. [1, 2, 3, 4, 5, 6, 7, 8, 9]

append()是添加一个单独的元素,就是简单的扩充;

而extend()则是将原有的列表和自己要添加的列表拼接成一个新列表

insert():在列表中插入元素

  1. >>> num.insert(0,0) // 在0索引位置添加元素0
  2. >>> num
  3. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

pop():删除列表元素

  • php():删除列表最后一个元素
  • php(X):删除列表中索引为X的元素
  • pop()会返回被删除的元素内容
  1. >>> num.pop()
  2. 9
  3. >>> num.pop(0)
  4. 0
  5. >>> num
  6. [1, 2, 3, 4, 5, 6, 7, 8]

del 语句:删除列表

  • del [ListName]:删除整个列表(也可以同时删除多个)
  • del [ListName[X]]:删除索引为X的元素
  1. >>> num = [1,2,3,4,5,6,7,8]
  2. >>> num
  3. [1, 2, 3, 4, 5, 6, 7, 8]
  4. >>> del num[7]
  5. >>> num
  6. [1, 2, 3, 4, 5, 6, 7]
  7. >>> del num
  8. >>> num
  9. Traceback (most recent call last):
  10. File "<pyshell#19>", line 1, in <module>
  11. num
  12. NameError: name 'num' is not defined

如报错提示:num不存在

remove():删除已知X元素

  • 搜索元素X内容并删除

我们之前的del语句和pop()函数都是依靠列表的索引来删除索引下的元素,remove()则是不靠索引,而是根据元素的具体内容来删除。

  1. >>> num = ['Hello','你好',666]
  2. >>> num
  3. ['Hello', '你好', 666]
  4. >>> num.remove(666)
  5. >>> num
  6. ['Hello', '你好']
  7. >>> num.remove('你好')
  8. >>> num
  9. ['Hello']

列表分片

将一个列表只输出或显示或复制一部分数据元素,就是所谓的列表分片

  1. >>> num = ['HUAWEI',"CHINA",'Mirror','XIAOMI']
  2. >>> num
  3. ['HUAWEI', 'CHINA', 'Mirror', 'XIAOMI']
  4. >>> num[0:1]
  5. ['HUAWEI']
  6. >>> num[0:2]
  7. ['HUAWEI', 'CHINA']
  8. >>> num[0:4]
  9. ['HUAWEI', 'CHINA', 'Mirror', 'XIAOMI']
  10. >>> num[:2]
  11. ['HUAWEI', 'CHINA']
  12. >>> num[:]
  13. ['HUAWEI', 'CHINA', 'Mirror', 'XIAOMI']
  14. >>> num[2:]
  15. ['Mirror', 'XIAOMI']

仔细观察,发现分片的[x:y]是左闭右开的范围(原则)【python里很多时候和范围有关的闭合问题都是左闭右开的原则】

同时,分片机制还支持省略范围值;即左为空则从0开始,右为空则到最后一个元素结束,左右皆为空则全部元素输出;

分片的高级玩法

大家都认为分片只有两个参数?

分片有三个参数 ==> [x:y:z]

​ x:开始

​ y: 结束

​ z: 步长(即每次递加的数量为z也可以理解为数学中的等差概念)

  1. >>> num = [] // 创建一个空数组
  2. >>> for i in range(1,10):
  3. num.append(i)
  4. >>> num
  5. [1, 2, 3, 4, 5, 6, 7, 8, 9]
  6. >>> num[0:10:2]
  7. [1, 3, 5, 7, 9]

深浅复制初讨论

  1. >>> list = [1,2,3,4]
  2. >>> copy = list
  3. >>> copy1 = list
  4. >>> copy2 = list[:]
  5. >>> copy1
  6. [1, 2, 3, 4]
  7. >>> copy2
  8. [1, 2, 3, 4]

从上边可以看出,list直接复制和list[:]分片复制的结果一样,但其实暗藏心急哦!

  1. >>> list.append(5)
  2. >>> copy1
  3. [1, 2, 3, 4, 5]
  4. >>> copy2
  5. [1, 2, 3, 4]

向原来的源列表 append() 添加一个元素,发现copy1的内容和list源列表一同别改变(append()操作)

  • 解释:

copy1 = list : 属于将list的内存地址给了copy1,

copy2 = list[:]:属于将list的值给了copy2

列表比较

列表支持比较运算符的比较操作:

  1. >>> list1 = [123]
  2. >>> list2 = [234]
  3. >>> list3 = [123]
  4. >>> list1 < list2
  5. True
  6. >>> list1 <= list3
  7. True
  8. >>> list1 == list3
  9. True
  10. >>> list1 != list2
  11. True
  12. >>> list1.append(234)
  13. >>> list2.append(123)
  14. >>> list1
  15. [123, 234]
  16. >>> list2
  17. [234, 123]
  18. >>> list1 > list2
  19. False

两个列表的比较是根据ASCII值的大小比较的,如果遇到两个元素,则比较第一个,若第一个相同在比较第二个元素。

字符串列表

拼接和重复

  1. >>> str1
  2. ['HUAWEI']
  3. >>> str2
  4. ['CHINA']
  5. >>> str1 + str2
  6. ['HUAWEI', 'CHINA']
  7. >>> str1 * 3
  8. ['HUAWEI', 'HUAWEI', 'HUAWEI']
  9. >>> str1 = str1 +str2
  10. >>> str1
  11. ['HUAWEI', 'CHINA']
  12. >>> str1[1] * 3
  13. 'CHINACHINACHINA'

元素判断:in/not in

  • 判断元素是否存在列表中:’str‘ in List / ’str‘ not in List
  1. >>> str1
  2. ['HUAWEI', 'CHINA']
  3. >>> "CHINA" in str1
  4. True
  5. >>> "CHINA" not in str1
  6. False

元素查询

index():查询元素的索引

  1. >>> str = ["H","U","A","W","E","I"]
  2. >>> str
  3. ['H', 'U', 'A', 'W', 'E', 'I']
  4. >>> str.index("I")
  5. 5
  6. >>> str.index("K") // 元素不存在保存
  7. Traceback (most recent call last):
  8. File "<pyshell#4>", line 1, in <module>
  9. str.index("K")
  10. ValueError: 'K' is not in list
  11. >>>

count():查询元素重复次数

  1. >>> list
  2. [3, 4, 5, 2, 5, 66, 7, 2, 5, 7]
  3. >>> list.count(5)
  4. 3

排序:reverse() 、sort()

  • reverse():反向排列
  • sort():升序排列
  1. >>> list
  2. [3, 4, 5, 2, 5, 66, 7, 2, 5, 7]
  3. >>> list.reverse() // 反向排列
  4. >>> list
  5. [7, 5, 2, 7, 66, 5, 2, 5, 4, 3]
  6. >>> list.sort() // 升序
  7. >>> list
  8. [2, 2, 3, 4, 5, 5, 5, 7, 7, 66]
  9. >>> list.reverse() // 反向排列 (srot+reverse ==> 降序)
  10. >>> list
  11. [66, 7, 7, 5, 5, 5, 4, 3, 2, 2]

元组

元组可以理解为:一旦定义不可被更改的列表。

元组创建

  1. >>> tuple = (1,2,3,4,5)
  2. >>> number = [1,2,3,4,5]
  3. >>> tuple
  4. (1, 2, 3, 4, 5)
  5. >>> number
  6. [1, 2, 3, 4, 5]

tuple是元组,number是列表;

可以发现;两者的定义有所不同

元组是由圆括号组成的一组列表数据,列表是由方括号组成的一组数据

元组访问

元组的访问方法和列表是一样的,主要通过元组的索引来访问元组的元素,和列表一样可以通过分片(切片)的方式访问。

  1. >>> tuple
  2. (1, 2, 3, 4, 5)
  3. >>> tuple[2]
  4. 3
  5. >>> tuple[3]
  6. 4
  7. >>> tuple[:]
  8. (1, 2, 3, 4, 5)

type() 方法

  • 返回参数的类型
  1. >>> tup = ()
  2. >>> num = []
  3. >>> type(tup)
  4. <class 'tuple'>
  5. >>> type(num)
  6. <class 'list'>

很多时候,都会认为圆括号定义的列表数据就是元组,然而并不是!

  1. >>> del tup
  2. >>> tup
  3. Traceback (most recent call last):
  4. File "<pyshell#14>", line 1, in <module>
  5. tup
  6. NameError: name 'tup' is not defined
  7. >>> tup = 1,2,3,4
  8. >>> type(tup)
  9. <class 'tuple'>

没错,没有圆括号的列表数据也是tuple元组。

定义元组的特点是:逗号

  1. >>> (6)*6
  2. 36
  3. >>> (6,)*6
  4. (6, 6, 6, 6, 6, 6)

所以在元组的定义时候,需要一个逗号告诉程序,这是元组

  1. >>> tup = (1,2,3,)
  2. >>> type(tup)
  3. <class 'tuple'>

这是最标准的定义方法,为什么?

元组更新与删除

  • 更新:

元组和列表的功能除了数据改变以外几乎一致,一个元组的数据是不可以改变的,但元组和元组之间是可以拼接的

  1. >>> tup
  2. (1, 2, 3)
  3. >>> tup = tup[:3] + 4, + 5,
  4. Traceback (most recent call last):
  5. File "<pyshell#28>", line 1, in <module>
  6. tup = tup[:3] + 4, + 5,
  7. TypeError: can only concatenate tuple (not "int") to tuple
  8. >>> tup = tup[:3] + (4,) + (5,6,)
  9. >>> tup
  10. (1, 2, 3, 4, 5, 6)

tup利用拼接将tup元组数据进行了更新;

注意:

​ 这里在拼接的时候,将拼接的内容均用括号和逗号等标志表示这是一个元组数据,否则会被程序认为是一个字符或者数字数据。

逗号是元组的标志定义

  • 删除:
  1. >>> tup = tup[:2] + tup[4:]
  2. >>> tup
  3. (1, 2, 5, 6)

通过拼接方法覆盖掉需要删除的元素,以此达到删除元素的目的。

  • 总结:

元组的数据是不变的,但是元组可以和列表一样自由的拼接:

​ 利用末尾的切片拼接的方式让元素增加元素(注意元组元素逗号标识)

​ 利用分片拼接的方式切除删除元素的前后内容拼接成一个新的元组

字符串

  • Python3的所有字符串都是Unicode(编码)字符串

创建

  1. >>> char = "HUAWEI"
  2. >>> str = 'XIAOMI'
  3. >>> char
  4. 'HUAWEI'
  5. >>> str
  6. 'XIAOMI'

字符串的创建可以使用单引号和双引号

字符串修改

  1. >>> str = str[:3] + "-" + str[3:]
  2. >>> str
  3. 'XIA-OMI'

字符串的修改和元组类似,采用分片拼接的方式实现更改字符串内容。

ps:是重新组成新的字符串给一个新的字符串变量所以要赋值

字符串格式化

format()

  • 按照索引坐标
  1. >>> '{0}-{1}={2}'.format('XIAOMI','HUAWEI','CHINA')
  2. 'XIAOMI-HUAWEI=CHINA'

从代码中可以看出,字符串中的花括号内容是对应这format方法的参数值索引内容,通俗说:花括号里的索引会将format中的对应的参数值调用组成一个字符串。{format中的参数称为:位置参数}

  • 按照(关键字)键值对
  1. >>> '{x}-{h}={c}'.format(x='XIAOMI',h='HUAWEI',c='CHINA')
  2. 'XIAOMI-HUAWEI=CHINA'
  • 注意:位置参数索引要放在关键字索引前面

格式化操作

格式化操作符

格式符号 描述
%c 格式化字符以及ASCII
%s 格式化字符串
%d 格式化整数(十进制)
%o 格式化无符号八进制
%x 、%X 格式化无符号十六进制(小写、大写)
%f 格式化浮点数
%e 、%E 格式化科学计数法浮点数

以上为常见的格式符号操作;和C语言异曲同工。

格式化操作书写

  1. '[格式化操作符]' % [需要格式化操作的内容]
  1. >>> '%c' % 99
  2. 'c'

格式化操作的表达方式是:百分号 ==> %

辅助参数

参数命令 描述
m.n m为最小从宽度,n为小数点后的位数
- 左对齐
+ 证书前显示加好
# 在八进制和十进制结果中分别显示:0o 和 0x/0X
0 数字前面用”0“填充空格
转义字符 描述
\ ' 单引号
\ " 双引号
\ a 系统响鸣
\ b 退格符
\ n 换行符
\ t , \ v 制表符(8个空格)
\ f 换页符
\ r 回车符
\ \ 反斜杠
\ 0 代表一个空字符

序列

  • 列表、元组、字符串(*)都可以视为可迭代对象

list():可迭代对象转为列表

  1. >>> list = list((1,2,3,4))
  2. >>> list
  3. [1, 2, 3, 4]
  4. >>> list = list("HUAWEI")
  5. >>> list
  6. ['H', 'U', 'A', 'W', 'E', 'I']

tuple():可迭代对象转为元组

  1. >>> tuple = tuple("HUAWEI")
  2. >>> tuple
  3. ('H', 'U', 'A', 'W', 'E', 'I')
  4. >>> type(tuple)
  5. <class 'tuple'>

str():obj对象转为字符串

  1. >>> s = str(1)
  2. >>> s
  3. '1'
  4. >>> type(s)
  5. <class 'str'>
  6. >>> tuple(s)
  7. ('1',)

len(sub):返回参数长度

  1. >>> num = [1,2,3,5,6,7]
  2. >>> len(num)
  3. 6

max()/min():序列最大/最小值

  1. >>> num = [1,2,3,5,6,7]
  2. >>> len(num)
  3. 6
  4. >>> max(num)
  5. 7
  6. >>> min(num)
  7. 1

sum():返回总和

  1. >>> num = [1,2,3,5,6,7]
  2. >>> sum(num)
  3. 24

sorted():排序

  1. >>> num
  2. [12, 24, 33, 32, 243, 3, 6, 23, 15, 7, 6, 5, 3, 2, 1]
  3. >>> sorted(num)
  4. [1, 2, 3, 3, 5, 6, 6, 7, 12, 15, 23, 24, 32, 33, 243]
  5. >>> num
  6. [12, 24, 33, 32, 243, 3, 6, 23, 15, 7, 6, 5, 3, 2, 1]
  7. >>> num.sort()
  8. >>> num
  9. [1, 2, 3, 3, 5, 6, 6, 7, 12, 15, 23, 24, 32, 33, 243]

代码中我们和前面的sort()进行了对比发现

​ sorted():返回升序后的结果但不改变原有数据

​ sort():将源列表进行了升序

reversed():逆向迭代

  1. >>> list = list((2,4,67,3,7,3,8))
  2. >>> for i in reversed(list):
  3. print(i,end='-')
  4. 8-3-7-3-67-4-2-

可以看出,reversed()方法会将一个可迭代的序列逆向迭代输出

enumerate():生成二元组

二元组:元素为2的元组构成一个迭代对象,每个二元组有迭代参数的索引和对应的元素组成。

  1. >>> for i in enumerate(list):
  2. print(i)
  3. (0, 'H')
  4. (1, 'U')
  5. (2, 'A')
  6. (3, 'W')
  7. (4, 'E')
  8. (5, 'I')

zip():迭代参数合为元组

返回可迭代参数共同组成的元组

  1. >>> list
  2. [2, 4, 67, 3, 7, 3, 8]
  3. >>> str
  4. ['H', 'U', 'A', 'W', 'E', 'I']
  5. >>> for i in zip(list,str):
  6. print(i)
  7. (2, 'H')
  8. (4, 'U')
  9. (67, 'A')
  10. (3, 'W')
  11. (7, 'E')
  12. (3, 'I')

函数

函数创建、调用

函数的含义就是将需要的且重复的功能代码封装在一个对象函数中,需要使用的时候直接调用即可。

  1. def out():
  2. print("Hello,World!")
  3. print("I am Mirror")
  4. out() // 调用out函数
  5. Hello,World!
  6. I am Mirror

函数参数

在函数定义的时候,可以在括号内添加参数设置,为函数设置参数,在调用函数时就会要求传入参数,函数体内也可以引用这个参数值进行工作。

  1. def name(s):
  2. print(s)
  3. def sum(x,y):
  4. print(x+y)
  5. name("Mirror")
  6. sum(1,2)
  7. ================ RESTART ================
  8. Mirror
  9. 3

函数可以接收零个或多个参数值,在函数定义的时候,参数的数据类型可以不定义

函数返回值

  1. def name(s):
  2. return "I am {0}".format(s)
  3. def sum(x,y):
  4. return "SUM = {0}".format(x+y)
  5. print (name("Mirror"))
  6. print (sum(1,2))
  7. ================ RESTART================
  8. I am Mirror
  9. SUM = 3

灵活的函数

形参和实参

从上例函数的参数认识到了参数的设置和传递,但是如果我们不知道我们传递多少个数据参数的时候怎么办?

  • 形参:函数创建时的参数定义
  • 实参:函数调用过程中有调用出传递的参数

函数文档

  • 指在函数定义下方注明函数的具体作用,增加可读性

一般情况下,在嗲吗开头的三引号里不会打印出来,但是依旧会被存储,和注释的功能非常的类似,我们可以在调用的时候获取这个三引中的内容,了解函数的作用

_ _ doc _ _:获取函数
  1. def sum(x,y):
  2. """ 返回 x,y 的求和"""
  3. return "SUM = {0}".format(x+y)
  4. print (sum.__doc__)
  5. ================ RESTART ================
  6. 返回 x,y 的求和

关键字函数

  1. def sum(x,y):
  2. """ 返回 x,y 的求和"""
  3. return "SUM = {0}".format(x+y)
  4. print (sum(x=1,y=2))

将形参的名称作为关键字,采用”赋值“模式对指定的形参传递实参

默认参数

  1. def sum(x=1,y=2):
  2. """ 返回 x,y 的求和"""
  3. return "SUM = {0}".format(x+y)
  4. print (sum())

默认参数:函数定义形参的同时给形参设置一个默认的参数,如果函数调用时为接收到实参传递则使用形参的默认参数进行运行

可变参数

回到形参时提出的关于不知道传递参数:

从上例函数的参数认识到了参数的设置和传递,但是如果我们不知道我们传递多少个数据参数的时候怎么办?

这时候就需要我们设置一个可变的形参(参数):

* 形参名

  1. def sum(* s):
  2. print(len(s))
  3. print(type(s))
  4. sum(1,2,3,4,5,6,7)
  5. ================ RESTART ================
  6. 7
  7. <class 'tuple'>

观察分析得出:使用星号表示的形参会自动将接收的实参序列压缩为一个”元组“,我们在没有使用可变参数的时候只可以传递单个(数字、字符、字符串)参数

  • 可变参数可以接收的是:可迭代的序列(列表,元组,字符,字符串……)

字典集合

  • python的字典集合采用:(Key:Value)键值对进行保存、读取等操作

字典创建(dict)

  1. >>> dict = {1:10086,"a":"CHINA"}
  2. >>> dict
  3. {1: 10086, 'a': 'CHINA'}
  4. >>> dict[1] // 根据Key索引并返回Value
  5. 10086
  6. >>> dict["a"]
  7. 'CHINA'

字典的标志特点就是:花括号包围的键值对序列

  • Key:是独一无二的,在同一个字典集合中不会重复
  • Value:每一个Value对应一个Key,Value可以重复,但必须不可变

字典内置操作

formkeys():创建返回新字典

  • 参数:

    • key:必须
    • Value:默认None
  1. >>> del dict
  2. >>> dict.fromkeys((1,2,3))
  3. {1: None, 2: None, 3: None}

返回字典内容

keys():返回字典所有Key值
  1. >>> dict
  2. {1: None, 2: None, 3: None}
  3. >>> dict.keys()
  4. dict_keys([1, 2, 3])
values():返回字典所有Value值
  1. >>> dict.values()
  2. dict_values([None, None, None])
items():返回字典所有项
  1. >>> dict.items()
  2. dict_items([(1, None), (2, None), (3, None)])

get():查询一个key的value

  1. >>> dict
  2. {1: 10086, 'a': 'CHINA'}
  3. >>> dict.get("a")
  4. 'CHINA'
  5. >>> dict.get(1)
  6. 10086
  7. >>> dict.get("CHINA")
  8. >>> dict.get(112)

get()查询一个key,如果不存在不会返回报错!可以利用 in/not in 来实现判断是否存在

claer():清空字典

  1. >>> dict.clear()
  2. >>> dict
  3. {}

ps: 是清空内容不是删除

copy():复制字典

  1. >>> dict
  2. {1: 10086, 'a': 'CHINA'}
  3. >>> c = {} // 定义一个空字典
  4. >>> c
  5. {}
  6. >>> type(c)
  7. <class 'dict'>
  8. >>> c = dict.copy()
  9. >>> c
  10. {1: 10086, 'a': 'CHINA'}

pop():弹出(删除)值

  • pop(key):删除key和对应的value
  • popitem():删除最后一个key和value
  1. >>> dict = {1:10086,"a":"CHINA"}
  2. >>> dict.pop(1)
  3. 10086
  4. >>> dict
  5. {'a': 'CHINA'}
  6. >>> dict = {1:10086,"a":"CHINA"}
  7. >>> dict.popitem()
  8. ('a', 'CHINA')
  9. >>> dict
  10. {1: 10086}

update():更新字典

  • dict.update(dict)
  1. >>> dict.update({2:2019})
  2. >>> dict
  3. {1: 10086, 'a': 'CHINA', 2: 2019}

集合创建(set)

  • 先看dict和set的区别
  1. >>> dict1 = {}
  2. >>> dict2 = {1,2,3,4,5} // 集合创建
  3. >>> type(dict1)
  4. <class 'dict'>
  5. >>> type(dict2)
  6. <class 'set'>

可以通过集合与字典的比较发现集合的特点:

​ 集合是使用花括号但不适用键值对,以逗号分隔的序列

  • 集合开始
  1. >>> set = {1,2,3,4,5,6}

访问集合

  1. >>> set1
  2. {1, 2, 3, 4, 5, 6}
  3. >>> for i in set1:
  4. print(i,end=" ")
  5. 1 2 3 4 5 6

Python文件

文件打开 open()

操作符

标志 描述
r 以只读方式打开文件
w 以写入方式打开文件
x 文件存在会抛出异常
a 以写入方式打开,已存在文件可追加
b 以二进制打开文件
t 以文本方式打开
+ 可读写模式
U 通用换行符支持

open()函数

open():用于创建一个文件对象,以便其他操作使用该文件对象

  • 单参数:可以是文件的具体路径和文件名(如果只是文件名会索引当前目录)
  • 操作符:决定文件的打开模式(默认为只读 ”r“)

操作函数

close():关闭文件

read():读取字符

  • read(size=-1):从文件中读取size指定的字符内容大小;未赋值表示读取全部内容并作为String返回

readline():读取一行字符串

write():向文件输出内容

writelines():向文件输出序列

seek():移动文件指针

  • seek(offset,form):从form偏移offset字节

    • offset:0 = 起始;1 = 当前位置;2 = 末尾

tell():返回当前文件的位置

OS 文件模块

os模块;import os 导入os模块

目录操作

getcwd():获取当前目录
chdir():切换目录
listdir():查看任意目录内容
mkdir():创建文件夹(目录)
makedirs():创建多级文件夹(目录)

删除操作

remove():删除指定文件
radir():删除指定文件夹(目录)
removedirs():删除多级文件夹(目录)
rename():文件/文件夹 重命名

系统操作

system():调用工具
walk():遍历子目录返回三元组

path 路径操作

path.basename():获取文件名
path.dirname():获取路径名
path.join():完整路径join
path.split():分隔路径和文件名
path.splitext():分隔文件名和扩展名
path.getsize():获取文件大小(字节)

path 时间函数

path.getatime():最近访问时间
path.getctime():创建时间
path.getmtime():修改时间

prckle()模块

可以将对象以文件的形式存放在磁盘中;是一种简单的持久化功能

python的所有数据类型都可以使用 prckle()来序列化存放磁盘

异常处理

AssertionError:断言

assert在测试程序的时候,在代码植入检查点

  1. >>> list = ['Mirror']
  2. >>> assert len(list)>0
  3. >>> list.pop()
  4. 'Mirror'
  5. >>> assert len(list)>0
  6. Traceback (most recent call last):
  7. File "<pyshell#3>", line 1, in <module>
  8. assert len(list)>0
  9. AssertionError

assert断言:在其语句后面的条件成立的时候则不会编译assert,若断言条件满足后则会在程序中报错。

如上例代码程序:原先list列表内有一个元素,assert没有报错,但是pop方法弹出(删除)元素后,assert的条件得不到满足就会报错

try - except语句

  1. try:
  2. 检测范围
  3. except exception[as e]:
  4. 检测发现exception异常后的处理方法
  5. finally:// 可选
  6. 必须执行的代码块
  • 范例:
  1. >>> try:
  2. file = open("a.txt")
  3. file.close()
  4. except OSError:
  5. print("Error")
  6. Error

如范例中的程序,检测到在调用file文件对象的时候发生了OSError错误,由此执行报错(异常)代码执行块

  1. >>> try:
  2. file = open("a.txt")
  3. file.close
  4. except OSError as e:
  5. print(str(e) + "Error")
  6. except TypeError as e:
  7. print(str(e) + "Error")
  8. [Errno 2] No such file or directory: 'a.txt'Error

如上;利用as error方法,将错误信息写入e变量中,在以str的类型输出错误信息;同时发现,可以定义多种不同的错误类型和报错输出。

异常

Exception: 所有异常的基类(可以接收任何类的异常)

AssertionError:assert语句失败(assert条件不成立)

AttributeError:访问一个对象没有的属性(对象属性不存在)

IOError:输入输出操作异常

ImportError:无法引入模块或包(路径错误等)

IndexError:索引超出序列边界

KeyError:访问字典中不存在的key

KeyboardInterrupt:Ctrl+C被触发

NamError:使用的对象无变量

SyntaxError:代码逻辑语法错误

TypeError:对象类型和语句要求不符

UnboundLocalError:全局变量的异常

ValueError:传入的value值异常出错

ZeroDivisonError:触发除零的异常

第三方GUI模块:EasyGUI

类和对象

认识类和对象

类:class 类名称:

对象:def 方法名():

一个程序可以由多个类组成,一个类由多个对象方法组成;

self关键字:代表自己的对象参数

类的方法与普通的函数只有一个区别:它们必须有一个额外的参数名称,但在调用这个方法的时候不可以为这个参数赋值,python会提供这个值。这个特别的变量指的是对象的本身,名为:self;

初探Python魔法方法

__ init__()构造方法

只要实例化一个对象前,这个方法就会在对象被创建前自动调用;参数形参也会自动传入该方法中;可以利用重写该方法实现初始化的操作

  1. class Potate:
  2. def __init__(self.name):
  3. self.name = name
  4. def kick(self):
  5. pirnt(self.name)

公有和私有

public :公有、公共

private:私有

以上是C++和Java方法;

在Python中表示私有的属性:变量名前两个下划线“__”

继承

  1. class 类名(被继承的类):
  • self:只可以使用自己的类中的对象
  • super:可以从子类中调用父类中的属性对象

Python支持多重继承,即一个类继承多个父类;【不建议使用】

Python复习 一的更多相关文章

  1. 用Python复习离散数学(一)

    最近要复习离散数学,不想挂啊,但是又想编程,大家知道啦,程序员离不开代码啊,所用想边复习边写代码,所以就自己用代码去实现一下离散的知识点,当做复习,自知自己的Python很渣,也想借此巩固一下基础,哈 ...

  2. 九九乘法表的python复习

    九九开始的复习 这周复习之前的学的知识关于range函数,gormat函数,print的使用总结一下 从一个小例子开始,开始我的回顾吧, 大家都是从那个九九乘法表开始的数学之旅,从一一得一,开始了我们 ...

  3. Python 复习-1

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/10/27 22:46 # @Author : lijunjiang # @Fi ...

  4. 后端程序员之路 20、python复习

    Welcome to Python.orghttps://www.python.org/ 怎么用最短时间高效而踏实地学习 Python? - 知乎https://www.zhihu.com/quest ...

  5. python复习

    1.input和raw_input的区别 input假设输入的都是合法的python表达式,如输入字符串时候,要加上引号,而raw_input都会将所有的输入作为原始数据 2.原始字符串前面加上r,e ...

  6. Python复习笔记-字典和文件操作

    抽时间回顾2年前自己做过的python工具,突然感觉不像自己写的,看来好久没用过python的字典和文件操作了,查询资料和网页,整理如下: 一.字典 键值对的集合(map) 字典是以大括号“{}”包围 ...

  7. 用Python复习离散数学(二)

    这次复习的是计数问题,立刻走起吧! 1.乘法原理 如果一项工作需要t步完成的,第一步有n1种不同的选择,第二步有n2种不同的选择,……,第t步有nt中不同的选择,那么完成这项工作所有可能的选择种数为: ...

  8. python复习。知识点小记

    1.对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符: >>> ord('A') >>> ord('中' ...

  9. python复习1

    比如常用的数学常数π就是一个常量.在Python中,通常用全部大写的变量名表示常量: Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对 ...

随机推荐

  1. SMTP email from C#

    /// <summary> /// 一人一附件发送邮件 /// 2017-05-17 涂聚文 GeovinDu /// </summary> /// <param nam ...

  2. LAMP环境搭建与配置(1)

    安装和配置MySQL.Apache.PHP 概念 LAMP是Linux Apache MySQL PHP 的简写,把Apache.MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的 ...

  3. C#开发微信小程序(三)

    导航:C#开发微信小程序系列 关于小程序项目结构,框架介绍,组件说明等,请查看微信小程序官方文档,关于以下贴出来的代码部分我只是截取了一些片段,方便说明问题,如果需要查看完整源代码,可以在我的项目库中 ...

  4. abp大文件附件功能视频教程

    视频分享地址:https://share.weiyun.com/5wtofib

  5. Docker入门(四)——MySQL镜像中的数据库可视化

      在详细介绍这篇文章的内容前,需要说明下笔者写这篇文章的意图:笔者在现有的开发中,前后端联调的方式为Docker镜像对接,数据库使用MySQL镜像,开发环境为远程服务器,因此,笔者迫切需要一种能将远 ...

  6. HALCON数据类型和C#对应数据类型的对比

    摘要:HALCON数据类型:Iconic Variables(图形变量).Control Variables(控制变量).在C#中,图形变量用HObject声明,控制变量用HTuple声明.(halc ...

  7. SpringCloud(八):springcloud遇到的坑总结

    spring boot 版本演信息: 文章链接:https://github.com/spring-projects/spring-boot/releases?after=v2.0.0.M3 http ...

  8. Android Studio的安装及第一次启动时的配置

    Android Studio的安装及第一次启动时的配置 一.下载Android Studio 百度搜索“Android Studio" 点击中文社区进入,选择最新版本下载. 下载后双击安装包 ...

  9. LeetCode刷题191126

    博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 今天状态不好,划水第二天. 算法: 题号:20 给定一个只包括 '(', ...

  10. 中小后台系统UI框架--EasyUI

    后台开发人员不擅长前端UI界面,而小型软件公司没有专职美工岗位,开发人员只能借助开源UI框架,复用已有组件,完成用户操作界面.EasyUI是基于jQuery的UI插件集合体,可帮助开发者轻松构建网页. ...