前言

学习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