1,表达式
ex 2+2
语言中最基本的编程结构,表达式包含‘值’和‘操作符’,并且总是可以求值为单个值
所有用表达式的地方都可以使用一个值
2,值
每个‘值’都!只! 属于一种数据类型
ex int;float;str......
3,变量
1)变量名:只能是一个词;只包含数字、字母、下划线;不能以数字开头
2)区分大小写
3)用小写字母开头是惯例
4,input() 函数
求值为一个字符串
5,str() int() float()函数
主要作用是改变数据类型
6,条件
条件只是控制语句上下文中的具体名称,条件总是求值为一个布尔值
7,break $ continue
8,range() 的开始、停止和步长
9,用sys.exit()提取结束程序
import sys
10,函数
1)def 语句和 参数
2)返回值和return 语句
11,None值
所有的函数调用都需要求值为一个返回值
对于所有没有return的语句的函数,幕后 python都会在末尾加上一个 return None
12,局部和全局作用域
在一个函数中,一个变量,要么总是全局,要么总是局部
13,列表数据类型
列表是一个有序集合,所以 下标,切片
len() 、del、 in
方法和函数是一回事,只是它调用在一个值上。每种数据类型都有自己的一组方法,方法属于单个数据类型
列表的常用方法
spam=['hi','hello','howdy','heyas']
spam.index('hi') 索引 返回下标
spam.append('tuii') 尾部增加一个
spam.insert(1,'diyi') 插入一个
spam.remove('hi') 删除第一次出现的
spam.sort() 升序排序 spam.sort(reverse=True) 降序
当列表被赋值给一个变量时,实际上是将列表的‘引用’赋值给了该变量。列表引用的指向一个列表的值
在变量保存可变数据类型的值时,例如 列表和字典,python就使用引用,对于不可变数据类型 例如 字符串,元组 python变量就保存值本身
14,copy模块
import copy
copy.copy(list or dict) 复制列表或字典这样的可变值,而不是只复制引用
deepcopy() 同时复制他们内部的列表
15,字典数据类型
不排序 不能切片
字典常用方法:
1)keys() values() items()
2)get() dict.get('cups':0) 如果字典中没有‘cups’键 则返回0
3)setdefault() dict.setdefault('color','red') 如果字典中没有‘color'键 则添加此键,值为’red' 如果有,则返回此键的值
4)漂亮打印 pprint
import pprint
pprint.pprint(dict)
pprint.pformat(dict) 获得漂亮打印的文本为字符串 而不是显示在屏幕上
16,字符串操作
1)原始字符串 r'str' 忽略所有转义字符,直接打出所有的’\‘
2)三重引号多行字符串 之间所有引号、制表符、换行,都被认为是字符串一部分
3)字符串方法 upper() lower() isupper() islower()
4)is X方法
isalpha() 只包含字母
isalnum() 只包含字母和数字
isdecimal() 只包含数字
istitle() 只包含大写字母开头 后面都是小写字母的单词
5)startswith() endswith()
6)join() ','.join(list) 参数是列表 返回的字符串由传入的列表中每个字符串连接而成 调用join方法的字符串被插入到列表参数的每个字符串中间
7)split() 'str'.split() 参数是字符串 返回的列表有传入的字符串参数分割而成
8)strip() strip('str') 返回一个新的字符串,两端没有空白字符
strip('Bamp') 删除两端出现的 a,m,p,B 顺序不重要
17,pyperclip 模块拷贝粘贴字符串
可以向计算机的剪贴板发送文本,或从中接收文本
import pyperclip
pyperclip.copy('str')
pyperclip.paste('str')
18,正则表达式
简称为 regex 是文本模式的描述方法
创建正则表达式:
1,import re
2,regex = re.compile(r'\d\d\d')
3,匹配regex对象
mo = regex.search('456') 返回一个match对象 有group()方法 返回被查找字符串中实际匹配的文本
mo.group(n) mo.groups()
利用括号分组 (\d\d\d)-(\d\d\d\d)
管道匹配多个分组 (man|mobile|woman)
问号实现可选匹配 (wo)?
星号匹配0次或多次 (wo)*
加号匹配一次或多次 (wo)+
花括号匹配特定次数 (wo){3,5}
贪心和非贪心匹配
python正则表达式默认是’贪心‘的,有二义的情况下,尽可能匹配最长的字符串
(wo){3,5}? 非贪心 匹配三次
findall() 方法
regex对象的方法 匹配所有
regex.findall('str')
如果正则表达式没有分组 则返回一个字符串列表 反之 则返回字符串元组的列表
字符 \d 数字 \w 任何数字 字母 下划线 \s 空格 换行符 制表符
插入符 ^ 美元符 $ 通配字符 . .* 匹配所有字符
sub() 替换匹配的字符串 regex = re.compile('str') regex.sub('str','str')
第一个参数用于替换发现的匹配 第二个参数是正则表达式匹配的内容
19,文件路径
合成路径 import os os.path.join('a','b','c')
当前工作目录 import os os.getcwd() 输出为绝对路径
改变当前工作目录 ... os.chdir(path)
创建文件夹 ... os.mkdir(path)
处理绝对路径和相对路径 os.path.abspath(path) 返回参数的绝对路径字符串
os.path.relpath(path,start) 返回从 start到path 相对路径字符串 没有start就以当前工作目录为开始路径
目录名称和基本名称 os.path.dirname(path) os.path.basename(path) os.path.split(path) 返回元组 目录名称和基本名称
查看文件大小及内容 os.path.getsize(path) 返回字节数 os.path.listdir(path) 返回文件名字符串列表
20,文件的读写
file = open(path) 打开文件 返回一个Fil对象 line = file.readlines() 从该文件取得一个字符串列表 对应文本中的每一行
写模式 file = open(path,'w') file.write(str) 覆盖原有文件
添加模式 file = open(path,'a') file.write(str) 在已有文件的末尾添加文本
如果 path 不存在 写模式和添加模式都会创建一个新的空文件
用 shelve 模块保存变量
将python程序中的变量保存到二进制的shelf文件中,程序就可以从硬盘中恢复变量的数据
例子 import shelve
shelffile = shelve.open('data')
cats = ['po','aa','ghr']
shelffile['cats'] =cats
shelffile.close()
生成3个新文件: data.bak data.dat data.dir
重新打开文件并取出数据
shelffile = shelve.open('data')
shelffile['cats']
shelffile.close()
shelf值有 keys() 和 values() 方法
21,shutil模块
1)复制文件和文件夹 shutil.copy(source,destination) 将路径source处的文件复制到des处的文件夹,如果des是一个文件名,
将作为被复制文件的新名字
shutil.copy()是复制一个文件 shutil.copytree()复制整个文件夹,以及包含的文件和文件夹 递归
2)改名与移动 shutil.move(sourjuce,des)
3)永久删除 os.unlink(path) 删除path处的文件 os.rmdir(path) 删除空文件夹 shutil.rmtree(path) 删除所有
22,遍历目录树 os.walk() 传入一个文件夹的路径 os.walk()在循环的每次迭代中,返回3个值
1)当前文件夹每次字符串
2)当前文件夹子文件夹字符串列表
3)当前文件夹的文件字符串列表
23,日志模块
日志模块的设置 import logging logging.basicConfig(level=logging.DEBUG,format=' %(asctime)s - %(levelname)s - %(message)s')
日志级别 DEBUG INFO WARNING ERROR CRITICAL
禁用日志 logging.disable() 传入一个日志级别 禁止该级别和更低级别的的所有日志消息 logging.disable(logging.CRITICAL) 禁用所有日志
将日志记录到文件 logging.basicConfig(filename = 'mylog.txt',level=logging.DEBUG,format=' %(asctime)s - %(levelname)s - %(message)s')