###基本的数据类型:###
-
序列:
- tuple 定值的序列
- list 可变的序列
-
字典:
- 键值对
- 字符串:相当于tuple了
-
运算:
- **是乘方
- 其他的跟java差不多
-
其他:
- for 循环中也可以用 a in list这种形式
- range(n) 生成一个0-n的数组(不可变)
- dir()用来查询一个类或者对象所有属性
- 对于一个集合enumerate()函数可以同时得到下标和元素
- 如果你多个等长的序列,然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()
-
函数的定义:
def name(a,b): 语句 return a
-
关于函数的参数传递:
-
基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而不影响原来的变量。(我们称此为值传递)
-
但是对于表来说,表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量。 (我们称此为指针传递)
-
函数也可以使用关键字差un各地,从而可以打乱传递的位置:
def f(a,b,c): return a+b+c 使用:print(f(c=2,b=1,a=1))
-
-
类的定义:
class name(继承的对象): 属性定义 方法定义
注意,python中的方法的第一个参数总是self本身,在java中是隐式的,而在python中是显式的 init()是构造函数,第一个参数也要传self 但是调用的时候不需要传self
-
dir()用来查询一个类或者对象所有属性
-
文件的读写:
- 方式:对象名 = open(文件名,模式)
- 模式:
- r 打开只读文件,该文件必须存在。
- r+ 打开可读写的文件,该文件必须存在。
- w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
- w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
- a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
- a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
- 上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
-
模块:
-
一个python文件就是一个模块
-
模块的引入:
- import a as b # 引入模块a,并将模块a重命名为b
- from a import function1 # 从模块a中引入function1对象。调用a中对象时,我们不用再说明模块,即直接使用function1,而不是a.function1。
- from a import * # 从模块a中引入所有对象。调用a中对象时,我们不用再说明模块,即直接使用对象,而不是a.对象。
-
模块的搜索路径
- 程序所在的文件夹
- 操作系统环境变量PYTHONPATH所包含的路径
- 标准库的安装路径
-
-
生成器:
- 主要依靠yield,当生成器遇到一个yield时,会暂停运行生成器,返回yield后面的值。当再次调用生成器的时候,会从刚才暂停的地方继续运行,直到下一个yield。
-
表推导:
- 写法:L = [x**2 for x in range(10)]
- 意思是这样生成表,对range中的每一个元素执行一个表达式
-
有用的函数
- map()有两个参数,一个是lambda所定义的函数对象,一个是包含有多个元素的表,map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中
- filter函数的第一个参数也是一个函数对象。它也是将作为参数的函数对象作用于多个元素。如果函数对象返回的是True,则该次的元素被储存于返回的表中。就相当于过滤器
- reduce函数的第一个参数也是函数,但有一个要求,就是这个函数自身能接收两个参数。reduce可以累进地将函数作用于各个参数,比如:print reduce((lambda x,y: x+y),[1,2,5,7,9])。educe将表中的前两个元素(1和2)传递给lambda函数,得到3。该返回值(3)将作为lambda函数的第一个参数,而表中的下一个元素(5)作为lambda函数的第二个参数,进行下一次的对lambda函数的调用,得到8
-
正则表达式
-
正则表达式需要导入库re
-
几个方法:
- re.search(pattern, string) 搜索整个字符串,直到发现符合的子字符串。
- re.search(pattern, string) 搜索整个字符串,直到发现符合的子字符串。
- m.group()来调用搜索的结果
- str = re.sub(pattern, replacement, string) 在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用另一字符串replacement替换。返回替换后的字符串。
- re.split() # 根据正则表达式分割字符串, 将分割后的所有子字符串放在一个表(list)中返回
- re.findall() # 根据正则表达式搜索字符串,将所有符合的子字符串放在一个表(list)中返回
-
正则表达式的语法:
- 单个字符:
- . 任意的一个字符
- a|b 字符a或字符b
- [afg] a或者f或者g的一个字符
- [0-4] 0-4范围内的一个字符 - [a-f] a-f范围内的一个字符 - [^m] 不是m的一个字符 - \s 一个空格 - \S 一个非空格 - \d [0-9] - \D [^0-9] - \w [0-9a-zA-Z] - \W [^0-9a-zA-Z] - 重复: 紧跟在单个字符之后,表示多个这样类似的字符: - * 重复 >=0 次 - + 重复 >=1 次 - ? 重复 0或者1 次 - {m} 重复m次。比如说 a{4}相当于aaaa,再比如说[1-3]{2}相当于[1-3][1-3] - {m, n} 重复m到n次。比如说a{2, 5}表示a重复2到5次。小于m次的重复,或者大于n次的重复都不符合条件。
- 位置 - ^ 字符串的起始位置 - $ 字符串的结尾位置
- 单个字符:
- . 任意的一个字符
- a|b 字符a或字符b
- [afg] a或者f或者g的一个字符
-
日期与时间
- 需要导入time包
- time.time()返回以秒计算的时间
- time.clock()
- time.sleep(10) 相当于java线程休眠 单位是秒
- datetime包
-
datetime.datetime(year,month,day,h,s) 初始化一个datetime对象,可以获取关于这个时间日期的更多信息
-
运算:
- datetime对象可以相加 直接用+就可以
- datetime.timedelta(xx = a) 可以获取一个时间差值
-
datetime对象与字符串的转化
from datetime import datetime format = "output-%Y-%m-%d-%H%M%S.txt" str = "output-1997-12-23-030000.txt" t = datetime.strptime(str, format)
-
- 需要导入time包