Python

作者: Rishinn | 来源:发表于2018-07-31 01:21 被阅读0次

# 一 基本知识

## 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)就是偏移)

相关文章

网友评论

      本文标题:Python

      本文链接:https://www.haomeiwen.com/subject/bbtcvftx.html