# 一 基本知识
## 1.1 python介绍
1.解释型语言,不需要编译,类似爬php和ruby
2.动态类型语言,声明变量不需要说明类型
3.面向对象
4.编写快,运行慢,但是可以允许加入给予c语言的扩展
5.GIL
6.import this python之禅
## 1.2 编码
### 1.2.1字符和字节
字符:人类能够识别的符号,字节:计算机能够识别的符号
编码:字符转换为字节,解码:字节转换为字符
Unicode是字符串,ASCII,utf-8,GBK,等字符编码表示的是字节串,字符以字节的形式保存在文件中
python2中:
a=“hello,中国” len(a)=6+2*2=10
a=u"hello,中国" len(a)=6+2=8
### 1.2.2编码和解码
unicode字符编码,也是字符和数字和映射,数字指的是十六进制的数字,成为代码点,unicode字符串是一个代码点序列,代码点取值为0~0x10FFF(0~1114111),代码点在存储中需要表示为一组字节(0~255),将Unicode字符串转为为字节序列的过程成为编码
### 1.2.3默认编码
如下图:
![1](F:\typora\python.assets/1.png)
**如果无法通过默认的字符编码进行解码时,就会出现解码错误**
import sys
sys.getdefaultencoding() #查看默认的字符编码方式(用于解码,py2:ascii;py3:utf-8)
### 1.2.4Python2和Python3
python3
`class bytes(object)`
`class str(object)`
python2,执行help(str|bytes)都是str类的定义,str就是字节串,unicode才是字符串
`class basestring(object)`
`class str(basestring)`
`class unicode(basestring)`
编码转换
`utf_8_a = '我爱中国'`
`gbk_a = utf_8_a.encode('gbk')`
`print(gbk_a.decode('gbk'))`
### 1.2.5常见的编码
1.2.1 ASCII码[anseke]
单字节编码,处理英文字符(GBK处理中文字符)
1.2.2 Unicode
统一编码,处理各国字符
1.2.3 utf-8
Unicode的一种实现方式,是变长编码,Unicode占用空间多,提升存储和传输性能
s
## 1.3 pip
# 二 基本数据类型
## 2.0 I/O
输入:num=int(input("请输入一个数字:"))
输出:格式化:http://www.runoob.com/w3cnote/python3-print-func-b.html
Python :string[num]& data num表宽度,右对齐
%s 字符串
%d 十进制整数
%x 十六进制整数
%o 八进制整数
%f 十进制浮点数
%e 科学计数法表示的浮点数
%g 十进制或者科学计数法表示的浮点数
%% %
a=1,b="cat"
my pet %s weigh %d pounds % (a,b)
新式方法:
n=42,f=7.03,s="abcdefg"
## 2.1数据类型
type("str")和isinstance("a",str)
整型:python2中int为32位,long位64位;python3中,int类型没有限制,类似java中的BigInteger
浮点数:float
布尔类型:1True 0False(默认)
字符串:str
强制类型转换:int() float() str()
进制:0b 0o 0x
## 2.2 字符串
创建:单引号或者双引号
+拼接
*复制 s='na' *4 nananana
原始字符串:因为\n表示转义字符,所以如果字符本身含有\n,可能识别为换行,这里可以使用\进行转义
如\\\n和\"表示\n和“,同时也可以使用原始字符串str=r'\n
转义:\t:制表符
三重引号字符串可打印输入格式:#行被保留
print('''
1
12
123
'''
)
索引:第一个是0,最后一个是-1,注意索引是只有一个参数
分片slice:[start:end :step]start和end都是当前序号和第一或最后一个相比的偏移量)
start和end不写就代表第一个和最后一个,但是在索引中,-1代表最后一个
[:]=start到结尾 [:end]开头到end-1
s='123456789' s[::2]=13579 s[-3::2]=79 s[-1::-1]=987654321 start和end可以小于0或者大于-1
len():获取长度
spilt()
join()
startwith()
endwith()
find()
rfind()
count()
strip()
replease()
## 2.3 操作符
+-*/ // % **
< == != >= <= in
and or not
a= x if condition else y
## 2.4逻辑
### 2.4.1 真和假
非零非空为真
### 2.4.2 if while和for
1、if
if condition:
statement
elif condition:
statement
else:
statement
2、while
while condition:
statement
else:
3、for
for x int iterator: #str,tuple,list,dict,set,字典需要使用keys(),values()和items()
statement
else:
它允许在数据结构长度未知和具体实现未知的情况下遍历整个 数据结构,并且支持迭代快速读写中的数据,以及允许不能一次读入计算机内存的数据流 的处理。
conitnue中断本次循环
break中断整个循环
## 2.5 Iterator
### 2.5.1 列表
创建:[]或者list() a=[1,2] b=list(),b=list("cat") #b=["c","a","t"]
list()可以将其他数据类型转换位列表:list("cat") list(tuple)
[offset]: 索引,第一个是0,最后一个-1
插入:append()和insert(index,value)或者使用一个列表扩展另一个列表extend()或者+=
删除:pop() pop(index) del(index) remove(value) pop()默认参数-1,即弹最后一个元素
获取:a[index]
分片:a[start:end :step]start和end为偏移,步长为step,得到的是子序列
个数:len(a)
位置:index(),a.index(x),列表a中第一个值为x的元素位置
存在:in if a in list:
次数:count() 特定值出现的次数
转换为字符串:list=["a","b","c"] "x".join(list)就是“axbxcx”
排序:sort()改变列表内容,sorted()不改变,默认升序,加参数reverse=true为降序
复制:= copy() list(列表)
### 2.5.2 元组
创建:
():tuple=()
逗号:tup="bana" tup="bana","app","org",定义元组时可以加个()
赋值:a,b,c=tup
特点:占用空间小,值不会被改变(可以作为字典的键值),命名元组可代替对象,函数的参数是元组形式传递,可以理解为常量列表
### 2.5.3 字典
python中字典又称为关系数组,哈希表/图,顺序不重要,依靠键值获取元素,键是python中任意不可变类型:bool,int,float,tuple,string,并且不能相同
创建:{} ,dic1={1:"a",2:"b",3:"c"}
lol=(["a","b"],["c","d"]) a=dict(lol) #{“a”:"b","c":"d"}
上述方法可以是双值子序列(list/tuple)的序列,也可是双字符的字符串组成的序列,使用dict函数转换为字典
索引:[key] ,a[key]可以添加或者修改,可用in先判存,或者使用get
合并:update(),如果键重复,新值取代旧值,参数是另一个字典
删除:del(),删除键值对,参数是键
清空:clear()
存在:in,参数是键
获取:get(value,ret),如果不存在,返回ret
keys():py2中返回键列表,py3中返回dict_keys(),
```
dic1={1:"a",2:"b",3:"c"}
print(dic1[1])
dic1[4]="d"
del dic1[1]
print(dic1)
#dic1.clear()
if 2 in dic1:
print(dic1)
print(dic1.keys())
print(dic1.values())
print(dic1.items())
```
打印结果如下
a
{2: 'b', 3: 'c', 4: 'd'}
{2: 'b', 3: 'c', 4: 'd'}
dict_keys([2, 3, 4])
dict_values(['b', 'c', 'd'])
dict_items([(2, 'b'), (3, 'c'), (4, 'd')])
### 2.5.4 集合
# 三.函数
## 3.1 参数
### 3.1.1 形参和实参
### 3.1.2 关键字参数
传入实参是指定形参的变量名
### 3.1.3 默认参数
### 3.1.4 可变参数
def test(*arg) 使用列表arg[]收集参数
## 3.2 返回值
直接return 多个值,返回的是元组
## 3.3 作用域
global 函数内使用global声明变量时,代表该变量是全局变量
## 3.4 闭包closure
## 3.5 lambda表达式
f=lambda x,y:f(x,y)
f(x,y)
## 3.6 filter()和map()
help(filter)---->filter(fun or none,iterator)
使用iterator中每个值计算fun函数的值,并返回true的值,若为none,直接返回iterator中true的值
map(fun,iterator)
传入iterator中的每个值计算fun,构成新的序列
## 3.7 递归
# 4 文件
## 4.1 基本操作
打开:open(file,mode='r',......)r只读,w重新写入,a继续写入,+可读写
关闭:close()
# 5. 异常
# 6. 类
# 7. 模块
## 7.1命名空间
import 模块名
from 模块名 import 函数名(*)
import 模块名 as 新名字
# N. BIF内置函数
N.1 自然数序列range
自然数是从0到正无穷
range(start,stop,step) [start,stop)左开右闭
同时需要注意字符串分片是a[start: end: step]
start和stop都是偏移(某个数减去第一个数的索引(即0)就是偏移)
网友评论