1.数据类型
Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典)
不可变类型:Number、String、Tuple
List: list=[ ]
Tuple: tuple=()
Set: set={" "," "}
Dictionary: dict={'name':' ' , 'age':' '}
其中,列表、字典、集合中的元素可以修改、删除和清空,但元组不可以。
2.print
print默认输出是换行,若要实现不换行,则有
print(x,end="");
3.注释
单行注释:以#开头
多行注释:' ' '或者" " "
4.运算符
算术运算符:
运算符 | 说明 | 实例 |
+ | 加 | a+b |
- | 减 | a-b |
* | 乘 | a*b |
/ | 除 | a/b |
% | 取模(取余) | a%b |
// | 取整除(向下取接近除数的整数) | 9//2 4 |
比较运算符:
运算符 | 说明 | 实例 |
== | 等于 | a==b |
!= | 不等于 | a!=b |
> | 大于 | a>b |
< | 小于 | a<b |
>= | 大于等于 | a>=b |
<= | 小于等于 | a<=b |
位运算符:
&、|、^、~、<<(左移)、>>(右移)
幂运算符:**,如 5**2 ,结果位25
数学函数:
abs(x)、exp(x)(返回e的x次幂)、fabs(x)(返回数字的绝对值)、max(x1,x2)、min(x1,x2)、
pow(x,y)(表示x**y运算后的值)、sqrt(x)(返回x的平方根)
随机数函数:
random():随机生成一个实数,在[0,1)范围内
seed([x]):改变随机数生成器的种子seed,
shuffle(s):将序列的所有元素随机排序
uniform(x,y):随机生成一个实数,在[x,y]范围内
字符串内建函数:
count(str,beg=0,end=len(string)):返回str在string里面出现的次数,beg和end是指定范围
encode(encoding='UTF-8'):以encoding指定的编码格式编码字符串
find(str,beg=0,end=len(string)):检测str是否包含在字符串中,在beg和end的指定范围内
upper():转换字符串中的小写字母为大写
5.迭代器与生成器
迭代器是一个可以记住遍历的位置的对象,从集合中的第一个元素开始访问,直到所有的元素被访问结束,迭代器只能往前不会后退。有两个基本方法:liter()和next()。
python的构造函数为__init__(),它会在对象初始化的时候执行,__iter__()方法返回一个特殊的迭代器对象,这个迭代器对象实现了__next__()方法并通过StopIteration异常标识迭代的完成。__next__()方法会返回下一个迭代器对象。
在python中,使用了yelid的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,只用于迭代。
6.日期和时间
print("本地时间为:",localtime)
print("格式化时间为:",time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
#获取某月日历
import calendar
cal = calendar.month(2019,8)
print(cal)
不定长函数:
def printinfo(arg1,*vartuple):
print("输出:")
print(arg1)
for var in vartuple:
print(var,end=" ")
return;
printinfo(10,20,30)
匿名函数:(lambda表达式)
sum = lambda arg1,arg2:arg1*arg2
print(sum(10,10))
from...import语句:
from语句允许从模块中导入一个指定的部分到当前命名空间中。特别的,还有from...import *
7.文件I/O
input函数:
str = input("请输入:")
print("你输入的内容是:",str)
打开和关闭文件:
open函数:
file object = open(file_name[,access_mode][,buffering])
其中的参数file_name表示文件名,access_mode表示打开文件的模式:只读、写入、追加。默认为只读(r)
fo = open("foo.txt","w")
print("文件名: ",fo.name)
print("访问模式: ",fo.mode)
fo.close()
file.next():返回文件的下一行
file.read():从文件中读取指定的字节数,如果未给定,则读取所有
file.readlines():读取整行,包含\n
file.write(str):将字符串写入文件,返回的是写入的字符长度
file.wirtelines():向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
8.面向对象与继承
class parent:
parentAttr = 100
def __init__(self):
print("这是父类构造函数")
def parentMethod(self):
print("调用父类方法")
def setArrt(self,attr):
parent.parentAttr=attr
class child(parent):
childAttr = 200
def __init__(self):
print("这是子类构造函数")
def childMethod(self):
print("调用子类方法")
def setArrt(self,attr):
childAttr=attr
c=child()
c.childMethod()
c.parentMethod()
c.childMethod()
c.setArrt(300)
修饰符:
__foo__:定义的是特殊方法,一般是系统定义名字,类似__init__之类的
_foo:以单划线开头表示的是protected类型,只允许类本身及其子类访问
__foo:以两个单划线开头的是private类型,只能允许类本身进行访问
9.对象销毁(垃圾回收)
Python使用引用计数这一技术来跟踪和回收垃圾,在Python内部记录着所有使用中的对象各有多少引用,一个内部跟踪变量,称为一个引用计数器。当对象被创建时,就创建了一个引用计数,当这个对象不再需要时(即引用计数变为0时),它被垃圾回收。但是回收不是立即的,由解释器在适当的时机,将垃圾对象占用的内存空间回收。
__del__析构函数,在对象销毁的时候被调用。
10.正则表达式
(1)re.match函数:如,re.match(pattern,string,flags=0)
pattern表示要匹配的正则表达式,string是要匹配的字符串,flags是标志位,用于控制正则表达式的匹配方式。
(2)re.search()函数:如,re.search(pattern,string,flags=0)
两者的区别在于re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
利用re.sub()函数实现替换和检索,例如:
import re
print(re.match('www','www.python.org').span()) #在起始位置匹配
print(re.match('com','www.python.org')) #不在起始位置匹配
print(re.search('www','www.python.org').span())
print(re.search('org','www.python.org').span())
phone = "400-888-888-888 #这是一个电话号码"
num = re.sub(r'#.*$',"",phone) #去除注释
print("电话号码是:",num)
num=re.sub(r'\D',"",phone) #去除-
print("电话号码是:",num)
(3)re.compile()函数:用于编译正则表达式,生成一个正则表达式对象,供match()和search()两个函数使用。
pattern = re.compile(r'\d+')
m = pattern.search('this is python3.0')
print(m)
(4)findall:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
result1 = pattern.findall('python 123 google 456')
result2 = pattern.findall('C 123 Java 456 python 789',0,12)
print(result1)
print(result2)
(5)re.finditer()函数:和findall类似,在字符串中找到正则表达式匹配的所有字串,并把它们作为一个迭代器返回。
it = re.finditer(r"\d+","12abc456def789")
for match in it:
print(match.group())
(6)re.split()函数:split能够按照能够匹配的子串将字符串分割后返回列表,对于一个找不到匹配的字符串而言,split不会对其进行分割。
sp1 = re.split('\W+','python,Java,C')
print(sp1) #输出['python','Java','C']
sp2 = re.split('a*','python,C,C++')
print(sp2) #输出['python,C,C++']
补充:
11.数据库操作
数据库查询操作:
查询MySql使用fetchone()方法获取单条数据,使用fetchall()获取多条数据,rowcount是一个只读属性,并返回执行execute()方法后影响的行数。
更新(UPDATE)和删除(DELETE)操作类似查询语句。
12.JSON
使用Json函数需要导入json库:import json
其中json.dumps():将Python对象编码成JSON字符串
json.loads():将已编码的JSON字符串解码成Python对象
encode():将Python对象编码成JSON字符串
decode():将已编码的JSON字符串解码为python对象
import demjson
json = '{"a":1,"b":2,"c":3}'
text = demjson.decode(json)
print(text) #output:[{"a": 1, "b": 2, "c": 3}]