前言
学习python也有将近三个月了,从最初窥其奥秘,后一步一步通过各种渠道学习,中间也走了不少弯路。为了巩固学习的内容,坚实知识体系框架,不至于学了后面忘了前面,特写下该总结。
1.基础数据类型
包括整型(int,不可变不可迭代) 浮点型(float,同int)字符串型string(str,不可变,可迭代)布尔类型(True/False) 复数类型
2.基本运算符
+(相加) -(相减) *(相乘) /(除) //(相除取商) %(相除取余) **(幂运算)
3.赋值运算
= 简单赋值 += -= *= /=累积赋值 == != 判断符,返回bool
4.序列类型
列表(list) 元组(tuple) 字典(dict)
列表:有序、可变、可迭代;
元组:有序、不可变、可迭代;
字典:无序(因为有对应的key)、可变、可迭代;
其中,列表、元组通过切片,索引取值,字典通过键获取键值
5.数据类型的常用操作方法
列表:
list.append()追加
list.copy()浅复制
list.count(1)列表中1的个数
list.extend()扩展,参数为可迭代如list tuple dict,同append区分
list.insert()可指定位置插入元素
list.index()在指定位置或范围返回第一次出现参数位置
list.pop()删除最后元素并返回删除值
list.remove()删除指定元素
list.reserve()反序排列
list.sort()正/逆序排列
元组:
tuple.count()
tuple.index()
tuple.copy()浅复制
字符串:
str.count()同list
str.endwith('a')/.startwith('a')#判断开头、结尾字符
str.find('a')/.index('a')#查找指定字符,如果没有,二者返回结果的区别
str.isalpha()/.isdigit()#判断是否是字母/数值
str.upper()/.lower()转大/小写
str.replace('a','b',1)#b替换a,1次
str.split()指定字符分割
字典:
dict.items()返回键和键值的列表
dict.values()返回所有键值的列表
dict.keys()返回所有键的列表
dict.get(s,10),s是否在字典中,是返回1,否返回10
dict.update()更新键对应的值,没有则新建
6.控制流程
(1)if条件语句:
if 条件1:
执行语句
elif 条件2:
执行语句
else:
执行语句
(2)while循环:
while True:
执行语句
中止条件(如果没有中止条件,那么该循环是个死循环)
(3)for循环
for 条件:
执行语句(for遍历结束,循环结束)
7.函数
(1)基本结构:
def funName():
函数语句
return
(2)函数参数:
形参与实参:形参是函数体括号内的参数形式,实参是调用函数传给函数的实际参数值
固定参数:def fun(a,b=1):#两个参数,a为固定参数
默认参数:def fun(a,b=1):#两个参数,b为默认参数
不定长参数:def fun(*args,**kwargs)
(3)全局变量与局部变量
(4)函数内嵌、闭包、递归
内嵌:
def fun1():
def fun2():
return
return
闭包:
def fun_x(x):
x += 1
def fun_y(y):
return x*y
return fy
递归:
def factorial(n):
if n == 1:
return n * factorial(n-1) #规律数列的求解和求和等
(5)常见内置函数
dir(__builtins__)#查看所有内置函数 help(funname)#查看函数具体含义 abs()#返回绝对值 max()#序列最大值 str()#转字符串 dict()#转字典 sorted()#排序 sum()#求和 bin()#转二进制 ord()#转ascii码 chr()#ascii转字符 isinstance()#判断对象类型 ············
8.类与模块
(1)定义类:
class className:#类名驼峰原则
def __init__(self,参1,参2,······)#初始化参数
self.参1 = 参1 self.参2 = 参2 ·······
def method1(self):#类方法1
语句
def method2(self):#类方法2
语句
(2)类继承:
class A:
******
class B(A)#类B继承类A的属性及方法
(3)实例化:
c = A(参1,参2,······)#c实例化类A,可以调用A下面的方法
(4)装饰器:
函数装饰器:装饰函数的参数是被装饰的函数对象,返回原函数对象装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
类装饰器:
@property: 装饰过的函数返回的不再是一个函数,而是一个property对象 装饰过后的方法不再是可调用的对象,可以看做数据属性直接访问。
@staticmethod :(静态方法)把没有参数的函数装饰过后变成可被实例调用的函数,函数定义时是没有参数的,可以不接收参数
@classmethod :(类方法)把装饰过的方法变成一个classmethod类对象,既能能被类调用又能被实例调用。注意参数是cls代表这个类本身。而是用实例的方法只能被实例调用。
9.文件
(1)创建一个文件:
f = open(r'path','model')
r'path',解决路径反斜杠问题
model:
'r' 只读
'w' 写入
'a' 追加
'rb' 读二进制
'wb' 写二进制
'ab' 追加二进制
f = open(r'path','w')#打开文件,如果没有该文件,则新建,‘r’模式不能新建
f.wrire('content')#写入内容
f.flush()#保存
f.close()#关闭
另一种方法
with open(r'path','w') as f:
f.write('content')#该方法不用保存和关闭,会自动处理
10.时间与日期
import time#导入时间模块
time.time()#当前时间,秒单位,从1970年到现在的秒数
time.localtime()#返回当前时间的年,月,日,时,分,秒,等信息
格式化输出时间:
>>> time.asctime( time.localtime(time.time()))
'Wed Sep 20 14:03:47 2017'
>>> time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
'2017-09-20 14:04:20'
11.异常处理
try:
suite1 #测试语句块
except exception1:
suite2 #如果测试语句suite1中发生exception1异常时执行
except (exception2,exception3):
suite3 #如果测试语句suite1中发生元组中任意异常时执行
except exception4 as e: #as把异常的原因赋值给e
suite4 #如果测试语句suite1发生exception4的异常时执行
except:
suite5 #如果测试语句suite1发生异常在所列出的异常之外时执行
else:
suite5 #如果测试语句块suite1中没有发生异常时执行
finally:
suit6 #不管测试语句suite1中又没有发生异常都会执行
注意:中间的except,else,finally都是可选的。各类异常参考该网址:http://www.runoob.com/python/python-exceptions.html