学习Python
2018-06-19 11:01:59 74 举报
AI智能生成
Python语法
作者其他创作
大纲/内容
数据类型
数字类型
int整型
long长整型,Py3没有了,以2**31为节点,小于的为整型,大于它为长整型
float浮点型
bool布尔型,返回的值为True和False
complex复数
注:用type()来查看类型;不同类型不能进行运算
数字运算
+ 加
- 减
* 乘
/ 除
Py2:商只为整数,如果想得到浮点型,除数或被除数必须有一个浮点型。例:13/2;13/2.0
Py3:不需要除数或被除数为是浮点数商一样是浮点数。例:13/2
// 整除,不会出现浮点数
% 取余
** 幂运算
比较运算
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
其他运算符
逻辑运算符
and 与
or 或
not 非
成员运算符
in
not in
身份运算符
is
is not
注:is 与 == 区别 is判断的是对象的id,id是内存地址,而==判断的是对象的值
赋值运算符
Python中把None 空字符串‘’ 0 看成False
字符串
len():内置方法,返回其长度,空格也是一个字符串,所以也有长度。
切片
a[:]
a[2:4] 取头不取尾
a[::-1] 反向取
a[::2] 以2为步长
字符串运算
* 重复
in 与not in 返回True和False
属性方法
s.count(x) #返回x在字符串s中出现次数
s.endswith(x) #字符串s以x结尾,返回True
s.startswith(x) #字符串s以x开头,返回True
s.find(x) #返回字符串中出现x的最左端的索引值
s.rfind(x)#与find类似,但从右往左搜索
s.index(x)#返回字符串中出现x的最左端的索引值
s.rindex(x)#和index类似,但从右往左索引
s.isalpha()#测试是否全是字母,返回True和False
s.isdigit()#测试是否全是数字,返回True和False
s.islower()#测试是否全小写,返回True和False
s.isupper()#测试是否全是大写,返回True和False
s.lower()#将字符串转为小写
s.upper()#将字符串转为大写
s.replace(x,y)#字符串替换,在字符串s中出现的字符串x的任意位置都用y进行替换,没有对字符串进行修改
s.split()#返回一系列用空格分隔的字符串列表
s.split(a,b)#a,b为可选参数,a是将要分割的字符串,b是要分割的个数,不修改字符串
注 :字符串的属性方法有很多,可以通过 ‘s. + tab键’来查看
字符串的拼接
直接用 +
格式化字符串 %s 例:'我是%s' % 桂子
%c 格式化ASCII字符
%d 格式化整数
%f 格式化小数
%o 格式化无符号八进制
%x 格式化无符号十六进制
%e 用科学记数法格式化定点数
格式化的辅助运算符
- 用作左对齐 例:'%-10.f' % 1.2223456
+ 用在正数前面显示加号 例:'%+d'% 255
0 显示的数字前面填充‘0’而不是默认的空格 例:‘%010.f’% 3.141596
m.n m是显示的最小长度,当m大于格式化位数时才起作用显示m位,n是显示的小数的位数 例'%10.3f'% 3.141596
注:%s 是通用的,能匹配所有类型
''.join() 括号里是元祖和列表
'{}{}'.format()
字符串转义字符 \
\n 换行
\t 制表符
\a 提示音
\b 退格键(被覆盖)
\r 回车键
\f 换页
注: 在其前面加r可取消转义 例:r‘gui\nzi'
PY中的乱码问题
Py2:通过加u来解决乱码
Py3:采用的unicode编码,不出现乱码
字符串和有序列表list和tuple都可以使用切片 索引 相加 检查 长度 最大最小值
list 列表
列表是有序的可变的,可以通过del list[] 来进行元对象的删除
属性方法
s.append() 再列表末尾添加单个元素
s.insert(索引值,添加元素) 在指定位置添加单个元素
s.extend([]) 在末尾扩展当前列表,注意与append的区别
s.count() 统计某个元素在列表中的个数
s.pop() 可以进行指定位置的单个删除,默认删除最后一个元素
s.remove() 移除指定元素,不过只能移除从左开始的第一个元素
s.reverse() 反向列表中的元素,与内置reverse()不同
s.sort() 对原列表进行排序,与内置sorted()不同
注:列表的属性方法是直接对列表进行修改,且不能被赋值,因为他的返回值是None
tuple 元祖
元祖和列表差不多,元祖在创建时可以不要括号,但必须要有逗号隔开,同时元祖不可变对象。
set 集合
集合是无序的不重复的,不可被索引。通过{}和set([])创建
集合的运算
& 交集
| 并集
- 差集
属性方法
s.add() 添加单个元素
s.update() 添加多个元素 例:s.update({'a','b'})
s.remove() 移除单个元素
s.clear() 清空集合
dict 字典
唯一键,是无序的不能用索引值索引,需要通过键来索引
字典删除
del 删除单个项 例 del a['key']
pop('key')
clear() 清空
属性方法
s.update({}) 在字典中添加多个项
s.items() 返回字典的各个项
s.keys() 返回字典的键
s.value() 返回字典的值
s.get(k) 如果键k返回键k的值,不存在则返回None
s.get(k,x) 如果键k存在,返回键k的值,不存在返回x
s.pop(k) 返回并移除键k所对应的元素,不存在则抛出异常
s.pop(k,x) 返回并移除键k所对应的元素,不存在则返回x
流程控制
if 语句
if——elif--else从上往下判断,满足条件停止判断,后面不执行
读取键盘输入
input 返回的为输入的本身相同数据类型
raw_input 返回的都是字符串
注:PY3中只有input,而且功能和Py2中的raw_input一样
while 循环
while 循环中,满足条件便执行,不满足结束。
循环控制
break 结束循环,可以设置条件,当满足条件时结束循环
continue 跳出当前循环,开始下一轮循环,同样可以设置条件
pass 占位符,使程序完整。
else 在while循环中一样可以接else,在while执行完后执行else,但是while中是break结束的循环不会执行else
for 循环
iterable对象:字符串 列表 元祖 字典
循环控制中与while中一样,使用break和continue
range 用法
函数
内置函数
Python中有很多已经写好的函数给我们使用,我们只需调用就好、
http://docs.python.org/3/library/functions.html#abs
常见的内置函数
len() min() range() sorted() reversed()
sum() 求一个元组或列表的和
bin() 转换为二进制的函数
oct() 转为八进制的函数
hex() 转为十六进制的函数
ord() 将字符串转换成对应的ASCII码
chr() 将ASCII码值转换成对应的字符
id() 查看内存地址
type() 查看数据类型
divmod() 除法及取余,返回一个含有商和余数的tuple类型
pow() 指数操作,例:pow(2,5)==2**5
round() 四舍五入
evaluate() 例:eval(‘4+5’)返回9
自定义函数
用def 来定义 return或print返回,尽量用return,但是函数内遇return就返回,所以在函数内有循环时,在循环里面少用return
函数参数
必备参数
默认参数
可变参数 *rags -->元祖
关键字参数 **kw -->字典
参数组合
参数的定义顺序:必备参数-默认参数-可变参数-关键字参数
内嵌函数:在内嵌函数中,在内层的函数不能在外面直接调用,可以通过return返回内层函数的函数名来实现调用
闭包
匿名函数 lambda
lambda 可以用于简单的函数简写
filter(判断条件,参数) 过滤器
map(函数,迭代器)
reduce ()
递归函数
递归是在函数内调用其本身,在调用递归函数时注意递归函数存在的栈溢出问题
递归其实可以看作一个更抽象的循环
装饰器
类
Python的类是面向对象的一种编程思维,在Python中万物切对象
class 来创建类 __init__ 类的初始化 self 实例对象本身
数据的隐藏和重整
继承和多态
派生类默认继承基类的所有属性和方法,可以用__init__初始化来增加特性、self表示实例本身,self.name就等于我们平常调用内置属性方法一样list.append(),list就是具体的实例。
‘类名’.__init_(slef)和super(派生类名,self).__init__()来继承父类属性
issubclass(class1,class2) 判断class1 是否为class2 的派生类
类属性和方法
类属型
__dict__ 类属型,返回一个字典,由类的数据属性组成
__doc__ 类的文档字符串
__name__ 返回类名
特殊方法
__init__ 初始化
__repr__
__str__
__call__ 使实例可调用
运算方法
__add__(self,otrher) x+y
__sub__(self.other) x-y
__mul__(self.other) x*y
__iadd__(self,other) x%y
__isub__(self,other) x+=y
__radd__(self,other) y+x
__rsub__(self,other) y-x
__imul__(self,ohter) x*=y
__imod__(self,other) x%=y
内置装饰器
@property 装饰过的函数返回的不再是一个函数,而是一个property对象装饰过后的方法不再是可调用的对象,可以看做数据属性直接访问。;例:没装饰前需要s.name()调用,装饰后可s.name直接调用,可以不加括号
@staticmethod 把没有参数的函数装饰过后变成可被实例调用的函数,
函数定义时是没有参数的。
@classmethod 把装饰过的方法变成一个classmethod类对象,既能能被类调用又能被实例调用。
注意参数是cls代表这个类本身。而是用实例的方法只能被实例调用。
文件
打开函数: open(r'绝对路径',‘模式’) r是为了防止转义
文件对象的方法属性
f.close() 关闭文件
f.read() 读取文件的所有字符,也设置读取字符的个数
f.readline() 从文件中读取并返回一行,也可设置读取字符个数
f.readlines() 返回的是一个列表
f.write('内容') 将字符串写入文件
f.flush() 写入后刷新
f.writeline(seq) 向文件写入字符串序列seq,seq是返回字符串的可迭代对象
f.writelines(x) x可以是一个列表
f.seek(offset,form) 在文件中移动文件指针,从from(默认起始位为0,1代表当前位置,为代表末尾)偏移offset个字节
f.fell() 返回当前指针在文件夹的位置
with open() as f 自动关闭
打开模式
r 只读 默认
w 以写入的方式打开文件,会覆盖已存在的文件
a 以写入的方式打开文件,如果文件存在会追加写入
b 以二进制模式打开文件,例wb rb
+ 可读写模式,可点加到其他模式中使用 例 r+读写
异常
try except finally
assert 断言,判断条件,为真跳过,为假抛出异常
raise 抛出异常
模块与包
Python内置有很多的内置模块,同时他还支持大量的第三方库
导入模块
import
import module as new_name
form module import objectname
from module import *
from module import objectname as newname
os模块
os 可以直接调用操作系统系统提供的接口函数
os.getcwd() 当前路径
os.chdir('需要切换到的路径') 切换路径
os.name 操作系统类型分posix和nt
os.uname() 获取详细的系统信息
os.environ 获取环境变量返回一个字典,要获取某个环境变量的值可以调用os.environ.get('key')
os.path.abspath('.') 查看当前目录的绝对目录
os.path.join('绝对路径',‘目录名’) 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来
os.mkdir('路径') 创建一个目录
os.makedirs('目录') 创建多层目录
os.rmdir('路径') 删除一个目录
os.path.split() 拆分一个路径
os.path.splitext() 直接得到文件扩展名
os.rename('原文件名','新文件名') 对文件重命名
os.remove('文件名') 删除文件
列出所有.py扩展名文件
列出当前目录下所有目录
shutil 模块
shutil.rmtree() 删除目录 空目录有内容的都可以
shutil.copyfile('oldfile','newfile') 两个参数都必须是文件
shutil,copy('oldfile','newfile') 第二个参数可以是文件也可以是目标目录
shutil.move('file','package') 移动文件
sys模块
sys.argv 命令行参数的列表,列表的第一个元素就是正在运行的文件名
sys.exit() 退出当前程序
sys.path 返回Python目录下所有.pth路径文件下的内容及系统默认设置
time模块
time,localtime()
time.asctime(time.localtime()) 返回一个可读性时间
time.time() 可以用来计算程序的运行用时
time.clock()
re正则
正则是一门独立的语言,处理字符串的强大工具
属性和方法
re.search('目标匹配','匹配源') 默认返回一个目标匹配, 注意Py3和2的区别,3里返回更详细
re.findall('','') 以一个列表方式返回所有满足条件的元素,遍历
re.match() 判断一个正则表达式是
re.compile('筛选条件') 提前进行编译,确立筛选条件
元字符
. 匹配换行符之外的所有字符 如果需要匹配 . 本身可以用 \.
\d 匹配0-9的数字
\s 匹配任意的空白符,包括空格,制表符(tab),换行符等
\w 匹配字母或数字或下划线或汉字
\b 表示单词边界,出现第一个位置
^ 脱字符,匹配输入字符串的开始的位置,起始位置满足条件才返回,不然为None
$ 匹配输入字符串的结束位置,和^相反
与之对应的 \D \S \W \B 大写与他们的小写作用相反,用()来分组
{M,N} M和N为非负整数,其中M<=N 表示前面的匹配M~N 次,在这个范围呢往多匹配 {M,} 表示需要匹配M次 {,N} 等价于{0~N} {N} 表示需要匹配N次 * 匹配前面的子表达式0次或多次,等价于{0,} + 匹配前面的子表达式一次或多次,等价于{1,} ? 匹配前面的子表达式0次或1次,等价于{0,1} 注: *? +? {M,N}? 表示贪婪与懒惰,往少取
[] 字符类,将要匹配的一类字符集放在[]里面,表示或的意思。例如:[. ? * () {}] 匹配里面的这些字符;[0-9] 匹配0到9的数字相当于\d ; [^\d] 匹配除数字以外的字符,相当于\D ; [a-z] 匹配所有的小写字母[^a-z] 匹配非小写字母 | 相当于或分支条件 例:A|B 匹配字母A或B与[AB]是一样的
() 分组,将要匹配的一类字符用括号, 例 : (\d){3} 匹配一个三位数 ; a(bc)* 匹配一个a和0个或多个bc ; a(b|c)匹配ab或ac
re.I
使匹配对大小写不敏感
re.L
做本地化识别(locale-aware)匹配
re.M
多行匹配,影响 ^ 和 $
re.S
使 . 匹配包括换行在内的所有字符
re.U
根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X
该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
使匹配对大小写不敏感
re.L
做本地化识别(locale-aware)匹配
re.M
多行匹配,影响 ^ 和 $
re.S
使 . 匹配包括换行在内的所有字符
re.U
根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X
该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。
0 条评论
下一页