Python基础教程

1.安装测试

安装略····

检测:终端输入python
退出Ctrl - D  或者 exit()

python2 和 Python3的区别是前者不支持中文,后者支持和中文

2.字符编码

1
2
3
4
5
6
ASCII	255		1bytes
1980 gb2312 7000多个字符
1995 GBK1.0 2w+
2000 GB18030 27000多个
Unicode 2bytes
utf-8 en:1byte,zh:3bytes

3.注释

1
2
单行注释	#
多行注释 ''''''注释内容''''''

4.输入输出

1
2
3
input 

print

5.密码输入时密文

1
引入:import getpass

6.缩进错误

1
IndentationError:

7.sys模块

1
2
sys.path #环境变量
sys.argv #相对路径

8.os模块

1
2
cmd_res = os.system("dir")	#执行命令不保存结果
cmd_res = os.popen("dir").read() #执行命令保存结果并输出

9.bytes数据类型

Python3中在网络中的数据传输都必须用二进制数据进行

1
2
3
'¥20'.encode('utf-8')

b'\xef\xbf\xa520'.decode('utf-8')

10.列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
list = ['a','b','c','d',' e']

print(list[1:3]) # 取值 b c
print(list[-1]) #可以取负索引值
print(list[:3]) #取值相当于[0:3]
print(list[-2:-1]) #取值相当于[-2:-1]

list.append('x') #拼接
list.insert(1,'y') #插入
list.remove('b') #删除
del list[1] #删除
list.pop() #没有下标就默认删除最后一个
list.index('a') #输出下标值
list.count('a') #输出a的个数
list.reverse() #反转
list.sort() #排序 ASCII码的排序规则
list2 = ['n','m']
list.extend(lists) #拼接list2

11.copy

1
2
3
4
5
6
7
8
copy.copy()		#浅copy,如果一个列表中的某个元素是一个列表,修改这个列表的元素值,结果不是自己想要的
copy.deepcopy() #深copy

实现浅copy的方法
person = ['a', 'b', ['n', 'm'], 'x']
p1 = copy.copy(person)
p2 = person[:]
p3 = list(person)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import copy

names = ['a', 'b', ['n', 'm'], 'x']
names2 = copy.copy(names)
print(names)
print(names2)

names[1] = 'x'
names[2][0] = 'Tony'

print(names)
print(names2)

#结果
['a', 'b', ['n', 'm'], 'x']
['a', 'b', ['n', 'm'], 'x']
['a', 'x', ['Tony', 'm'], 'x']
['a', 'b', ['Tony', 'm'], 'x']
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import copy

names = ['a', 'b', ['n', 'm'], 'x']
names2 = copy.deepcopy(names)
print(names)
print(names2)

names[1] = 'x'
names[2][0] = 'Tony'

print(names)
print(names2)

#结果
['a', 'b', ['n', 'm'], 'x']
['a', 'b', ['n', 'm'], 'x']
['a', 'x', ['Tony', 'm'], 'x']
['a', 'b', ['n', 'm'], 'x']

12.元组

又叫只读列表,和列表一样,就是只有count和index方法

1
names = ('x','y','z')	#用小括号表示

13.isdigit、enumerate

1
2
3
4
5
6
7
8
9
Salary = input("input your salary:")

If salary.isdigit(): #判断是否是数字


names = ('x','y','z')

for index,item in enumerate(name): #enumerate()获取下标
print(index,item)

14.字符串常用操作

1
2
3
strip去空格相关
join数组的拼接
maketrans可以做加密

15.集合

1
2
3
4
5
6
7
8
9
10
11
取交集intersection	&
list1.intersection(list2)
并集 union |
差集 difference -
子集 issubset
父集 issuperset
对称差集 symmetric_difference ^
isdisjoint是否有交集
pop 删除
remove 删除不存在的会出错
discard 删除不存在的不会报错

16.文件的操作

1
2
3
4
5
6
7
8
9
10
11
open("文件").read();
open("yest",'r',encoding); 'r'读 'w'写 'a'读和写append 'r+'读写(不常用) 'w+'读写(读和追加)
'rb'、'wb'二进制的处理(不用写enconding否则报错)
readlines() #读取一行,小文件

f = open("yesterday",'r', enconding = 'utf-8')
f.tell() #光标的位置
f.seek(0) #回到0
f.enconding #编码
f.seekable(self) #是否光标可移动
f.truncate(20) #截断多少个字符

进度条flush的运用

1
2
3
4
5
6
import sys, time

for i in range(30):
sys.stdout.write('#')
sys.stdout.flush()
time.sleep(0.2)
1
with open() ad f: 		用with可以自动关闭

17.字符编码

1
gbk——>utf-8  要先转成unicode

18.函数

1
2
3
4
5
6
函数没有定义return任何数据的时候会返回None

*args接收N个位置参数转换为元组
**kwargs代表传递的参数是字典格式的,键值对,个数也是不固定

在函数内修改全局变量要用global(字符串和数字)

19.装饰器(重点较难)

1
2
3
4
5
6
7
8
9
10
原则:
不能修改被装饰的函数的源代码
不能修改被装饰的函数的调用方式
实现:
函数即“变量”
定义之后就才可以使用
高阶函数
把一个函数名当作实参传给另外一个函数
返回值中包含函数名字
嵌套函数

20.列表生成式