Python基本手册

Python基本手册

关键词: Python


1. 常见内置函数

type() #查看类型
dir() help() len()
open() #文本文件的输入输出
range() enumerate() zip() #循环相关
iter() #循环对象
map() filter() reduce() #函数对象
abs(-2) #取绝对值
round(2.3) #取整
pow(3,2) #乘方
cmp(3.1, 3.2) #比较大小
divmod(9, 7) #返回除法的结果和余数
max([2, 4, 6, 8]) #求最大值
min([1, 2, -1, -2]) #求最小值
sum([-1, 1, 5, 7]) #求和
int(“10”) #字符转为整数
float(4) #转为浮点数
long(“17”) # 转为长整数
str(3.5) #转为字符串
complex(2, 5) #返回复数2 + 5i
ord(“A”) #A对应的ascii码
chr(65) #ascii码对应的字符
unichr(65) #数值65对应的unicode字符
bool(0) #转换为相应的真假值,0相当于False
btw:”空” 值相当于False:[],(),{},0,None,0.0
all([True, 2, “wow!”]) #是否所有元素相当于True,全为True则为True
any([0, “”, False, [], None]) #是否有元素相当于True
sorted([1, 7, 4]) #序列升序排序
reversed([1, 5, 3]) #序列降序排序
list((1, 2, 3)) #tuple转换为表list
tuple([4, 5, 4]) #list转换为tuple
dict(a=3, b=”hi”, c=[1,2,3]) #构建字典
d = dict(a=3, b=”hi”, c=[1,2,3]) #d则为字典,字典的引用方式d[“a”]的值为3
input(‘input something’) #等待用户输入
globals() #返回全局变量名,函数名
locals() #返回局部命名空间

  • 清屏命令
import os
os.system('cls')

2. 标准库

  • 正则表达式 re
  • 时间与日期:time,datetime
  • 路径与文件:os.path, glob
  • 文件管理:os, shutil
  • 存储对象:pickle,cPickle
  • 子进程:subprocess
  • 信号:signal
  • 线程同步:threading
  • 进程信息:os
  • 多进程初步:multiprocessing
  • 数学:math
    函数的使用都要加上包名,避免与其他包的函数混用
    math中函数的使用方法:math.sin() #求正弦
    math.cos() #求余弦
    math.asin() #求反正弦
    math.acos() #求反余弦
    math.pi #pi值
    math.sqrt() #开平方
  • 随机数:random
  • 循环器:itertools
  • 数据库:sqlite3

3. 爬虫

实例:

import urllib2
request = urllib2.Request("http://www.baidu.com")
response = urllib2.urlopen(reques)
print response.read()

urlopen(url, data, timeout)
其中
- url为URL
- data为访问URL时要传送的数据
- timeout是设置超时时间
- 返回response对象
- read方法可以返回获取到的网页内容

3.1 GET

GET方式是直接以链接形式访问,链接中包含了所有的参数

3.2 POST

POST把提交的数据放置在HTTP包的包体中

3.3 Headers

4. 字符串

  • 转义字符:\
  • 多行字符串:
    Python
    ''' one
    two
    three'''

    输出为:’one \n two \n three’
  • 内置函数:
    raw_input() #从键盘上读取一行文本

5. 模块

5.1 定义模块

定义一个函数放在test.py文件中,然后添加一个above_freezing函数,则可创建一个名为test的模块。如:

def to_celsius(t):
    return(t-32.0) * 5.0 / 9.0

def above_freezing(t):
    return t>0

5.2 常用的字符串方法

用法:字符串.方法
如”good”.capitalize(),输出为’Good’

  • capitalize() #返回字符串的首字母大写副本
  • find(’s’) #返回字符串中首次出现参数s的索引,如果字符串中没有参数s,则返回-1
  • find(’s’,’beg’) #返回字符串中索引beg之后首次出现参数s的索引,如果字符串中索引beg之后没有参数s,则返回-1
  • islower() #测试所有字符是否均为小写形式
  • isupper() #测试所有字符是否均为大写形式
  • lower() #将所有字符转换为小写形式并返回
  • upper() #将所有字符转换为大写形式并返回
  • replace(‘old’, ‘new’) #将字符串中所有子串old替换为new并返回
  • split() #将空格分隔的单词以列表的形式返回
  • split(del) #将del分隔的子串以列表的形式返回
  • strip() #删除字符串两端的空白符并返回
  • strip(’s’) #删除字符串中的s并返回
  • swapcase() #将小写转换为大写,将大写转换为小写
  • startswith(’s’) #判断字符串是否以字符串s开头
  • endswith(’s’) #判断字符串是否以字符串s结尾

6. 列表list

在python中,列表list除了正向索引,还可以逆向索引,最后一个索引从-1开始

>>>a = [0,1,2,3,4]
>>>a[-1]
4
  • 空列表:
    空列表的索引值范围:0,-1
  • 列表可以包含:整数、字符串
  • 列表是可变的,即创建后可以修改。数字、字符串、元组tuple创建后不可变
  • 多个列表相加
>>>a = [1,2,3,4]
>>>b = a + [5]
[1,2,3,4,5]
  • 列表乘以一个整数
>>>a = [1,2]
>>>b = a * 2
[1,2,1,2] #复制一遍加进去

6.1 列表相关的内置函数

  • len(L) #返回列表L中的元素数量
  • max(L) #返回列表L中元素的最大值
  • min(L) #返回列表L中元素的最小值
  • sum(L) #返回列表L中所有值的和

6.2 列表元素的循环

>>>a = [1,2,3,4]
>>>for i in a:
>>>    print i
1
2
3
4

6.3 列表切片

形式:list[i:j]
其中包含i处的值,不含j处的值,i可以省略(从头开始时),若从头到尾,则可写为list[:]

6.4 列表方法

  • L.append(v) #将值v添加到列表L中
  • L.insert(i,v) #将v插入到列表L的索引i处,同时将其后的元素向后移动
  • L.remove(v) #从列表L中移除第一次找到的值v
  • L.reverse() #反转列表L中的值的顺序
  • L.sort() #对列表中的值以升序排序(字符串以字母顺序为准)
  • L.pop() #移除并返回列表L的最后一个元素(该列表不得为空)

6.5 列表嵌套列表

  • 列表嵌套列表的索引形式:list[i][j]

6.6 文件读写

  • 读写函数形式:
f = open("test.txt","r")
f.read() #read()没有参数则表示读取所有数据

“r” 表示读取
“w” 表示写入
“a” 表示追加

  • 利用for循环操作文件
f = open("test.txt","r")
for i in test:
    print len(i) #将打印出每一行的字符数
f = open("test.txt","r")
for i in test:
    print len(i.strip()) #将去除字符串收尾两端的空白符(空格、制表符、换行符等),并返回结果

7. 选择语句

7.1 布尔逻辑

  • 运算符:

    and,二元运算符
    or,二元运算符
    not

  • 关系运算符
    > 大于
    < 小于

    = 大于等于
    <= 小于等于
    == 等于
    != 不等于

  • 优先级
    算术运算符 > 关系运算符 > 布尔运算符

7.2 if语句

>>>if condition:
>>>    block
>>>if condition:
>>>    block
>>>elif condition:
>>>    bolck
  • 嵌套if语句

8. 循环

8.1 计数

  • range() #该函数可以生成一个数字列表
>>>range(1,5)
[1,2,3,4,5]
>>>range(5,8)
[5,6,7,8]
>>>range(3)
[0,1,2]
  • 给range()函数设置步长
>>>range(1,10,2)
[1,3,5,7,9]
  • enumerate() #该函数会返回一个由“值对”组成的列表。值对的第一个元素为索引,第二个元素为索引值
>>>for i in enumerate("abc"):
>>>    print i
(0,'a')
(1,'b')
(2,'c')
  • 不规则列表
    不规则列表,即嵌套列表中,内层的列表可以元素数目不相同
    如:
    a = [[1,2],[3,4,5],[6,7,8,9]]

8.2 while循环

>>>while condition:
>>>    block

8.3 用户输入循环

>>>text = ""
>>>while text != "quit":
>>>    text = raw_input("Please enter a chemical formula (or 'quit' to exit):")
>>>    if text == "quit":
>>>        print"...exiting program"
>>>    elif text == "H20":
>>>        print"Water"
>>>    elif text == "NH3":
>>>        print "Ammonia"
>>>    elif text == "CH3":
>>>        print "Methane"
>>>    else:
>>>        print "Unknown compound"

8.4 break 与 continue

  • break #立即退出循环体
  • continue #跳出本次循环,进入下一次迭代

9. 文件处理

  • 文件模式
    r 只读模式
    w 只写模式、创建新文件(删除同名的任何文件)
    a 附加到现有文件(如果文件不存在则创建一个)
    r+ 读写模式
    b 附加说明某模式用于二进制文件,即rb或wb
    U 通用换行模式,单独使用U或附加到其他读模式

9.1 读取文件

  • 读取本地文件
>>>f = open("test.txt","r")
>>>for line in f:
>>>    line = line.strip() #去掉每行两端的空字符
>>>    print line
  • 读取网络文件(爬虫)
>>>import urllib
>>>url = "http://www.baidu.com"
>>>page = urllib.urlopen(url)
>>>for ling in page:
>>>    line = line.strip() #去掉每行两端的空字符
>>>    print line
  • 将两列若干行的txt文件数据放到一个列表里
>>>f = open("test.txt","r") #读取文件
>>>a = [] #存放的列表a中
>>>for i in f:
>>>    b = i.split() #字符行转换为列表
>>>    for x in range(len(b)):
>>>        b[x] = float(b[x])
>>>    a.append(b) #将列表b添加到a中

9.2 写入文件

  • 如果要写入的文件不存在,则会自动创建相应的文件并写入
>>>f = open("test.txt","r") 
>>>f.write(“computer science") #写入,会覆盖源文件内容
>>>f.close()

>>>f = open("test.txt","a")  #"a"追加数据,不会覆盖
>>>f.write(“computer science") #写入,不会覆盖源文件内容
>>>f.close()

9.3 文件的方法和属性

read([size]) #以字符串 形式返回文件数据,可选的size参数用于说明读取的字节数
readlines([size]) #将文件返回为行列表,可选参数size
write(str) #将字符串写入文件
close() #关闭句柄
flush() #情况内部I/O缓存区,并将数据强行写回磁盘
seek(pos) #移动到指定的文件位置(整数)
tell() #以整数形式返回当前文件位置
closed #如果文件已关闭,则为True

10 集合与字典

10.1 集合

  • 集合:无序、无重(等同数学上集合的定义)
  • 集合的运算
    并 union
    交 intersection
    添加 add
    移除 remove

  • add() #往集合中添加一个元素,如a.add(9)

  • clear() #移除集合中的所有元素,如 a.clear()
  • difference() #根据一个集合中不存在于另一个结合中的元素,创建处一个新的集合,如
>>>a = set([0,1,2])
>>>b = set([1,3])
>>>a.difference(b)
set([0,2])
  • intersection() #根据两个集合中共有的元素,创建出一个新的集合
>>>a = set([0,1,2])
>>>b = set([1,3])
>>>a.intersection(b)
set([1])
  • issubset() #判断一个集合的所有元素是否都包含于另一个集合
>>>a = set([0,1,2])
>>>b = set([1,3])
>>>a.issubset(b)
False
  • remove() #移除集合中的一个元素
>>>a = set([0,1,2])
>>>a.remove(1)
set([0,2])
  • symmetric_difference() #根据两个集合中所有不存在与对方的元素,创建出一个新的集合。即并集-交集
>>>a = set([0,1,2])
>>>b = set([1,3])
>>>a.symmetric_difference(b)
set([0,2,3])
  • union() #并集
>>>a = set([0,1,2])
>>>b = set([1,3])
>>>a.union(b)
set([0,1,2,3])
  • 散列表(hash table)
    散列表:用于存储集合的数据结构称为散列表,每当有元素加入到集合中时,Python就会计算该元素的散列码,散列码是一个整数。

散列表元素可以是:布尔值、数字、字符串、元组tuple(不可是列表list)

10.2 字典

  • 字典元素的删除
>>>zidian = {"1":"cat","2":"dog"}
>>>del zidian["1"] #删除字典元素
>>>zidian
{"2":"dog"}
  • 字典的循环
>>>zidian = {"1":"cat","2":"dog"}
>>>for i in zidian:
>>>    print i,zidian[i]
"1","cat"
"2","dog"
  • 字典方法
    clear() #清空字典内容 zidian.clear()
    get() #返回指定键所关联的值:如果指定键不存在,则返回默认值。如 zidian.get(‘1’,99),若有“1”,则返回其值,若无,则返回99
>>>zidian = {"1":"cat","2":"dog"}
>>>zidian.get("1",99)
>>>zidian.get("3",99)
'cat'
99

keys() #以列表的形式返回字典的所有键。所得到的列表中国的每个条目肯定是唯一的。如 zidian.keys()

>>>zidian = {"1":"cat","2":"dog"}
>>>zidian.keys()
['1','2']

items() #返回(key, value)列表,zidian.items()

>>>zidian = {"1":"cat","2":"dog"}
>>>zidian.items()
[('1','dog'),('2','cat')]

values() #以列表的形式返回字典的所有值。所得列表中的每个条目不一定是唯一的。zidian.values()

>>>zidian = {"1":"cat","2":"dog"}
>>>zidian.values()
['dog','cat']

update() #用另一个字典的内容对当前字典进行更新。zidian.update()

>>>zidian = {"1":"cat","2":"dog"}
>>>zidian2 = {"3":"tiger"}
>>>zidian.update(zidian2)
>>>zidian
{"1":"cat","2":"dog","3":"tiger"}

11. 算法

11.1 搜索

  • index() #索引
>>>counts = [809,834,477,478,307]
>>>low = min(counts)
>>>min_index = counts.index(low) #索引方式counts.index()
>>>print min_index
4
  • 算法描述
def find_two_smallest(L):
    '''Return a tuple of the indices of the two smallest values in list L.'''
    获取列表L中的最小元素
    找出这个最小元素的索引
    从列表中移除该元素
    找出列表L中新的最小元素的索引
    return 这两个索引
def find_two_smallest(L):
    '''Return a tuple of the indices of the two smallest values in list L.'''
    smallest = min(L)
    min1 = L.index(smallest)
    L.remove(smallest)
    next_smallest = min(L)
    min2 = L.index(next_smallest)
    return 这两个索引

11.2 计时

注意算法的计算效率

13 搜索与排序

13.1 线性搜索

  • 常见的基本搜索
>>>def linear_search(v,L):
>>>    i = 0
>>>    while i != len(L) and L[i] != v:
>>>        i += 1
>>>    return i
  • for循环型线性搜索
>>>def linear_search(v,L):
>>>    i = 0
>>>    for value in L:
>>>        if value == v:
>>>            return i
>>>        i += 1
>>>    return len(L)
  • 哨兵搜索
>>>def linear_search(v,L):
>>>    L.append(v)
>>>    i = 0
>>>    while L[i] != v:
>>>        i += 1
>>>    L.pop()
>>>    return i

13.2 二分搜索

  • 二分搜索
def binary_search(v,L):
i = 0
j = len(L) - 1
while i != j + 1:
    m = (i+j)/2
    if L[m] < v:
        i = m + 1
    else:
        j = m -1
if 0 <= i < len(L) and L[i] == v:
    return i
else:
    return -1

13.3 排序

  • 选择排序(selcetion sort)
def selection_sort(L):
    i = 0
    while i != len(L):
        smallest = find_min(L,i)
    L[i],L[smallest] = L[smallest], L[i]
    i += 1
def find_min(L,b):
    i = b + 1
    while i != len(L):
        if L[i] < L[smallset]:
        i += 1
    return smallest
  • 插入排序(升序)
def insertion_sort(L):
    i = 0
    while i != len(L):
        insert(L,i)
        i += 1
def insert(L,b):
    #find where to insert L[b] by searching backwards from L[b] for a smaller item.
    i = b
    while i != 0 and L[i-1] <= L[b]:
        i = i - 1
    #move L[b] to index i, shifting the following values to the right.
    value = L[b]
    del L[b]
    L.insert(i,value)
  • 合并排序(merge sort)

  • 冒泡排序(bubble sort)

  • 快速排序(quick sort)
  • 堆排序(heap sort)

14. 构建应用程序

14.1 其它函数

  • 可变参数列表
#求传入参数的最大值
def our_max(*values):
    '''Find the maximum of any number of values.'''
    if not values:
        return None
    m = values[0]
    for v in values[1:]:
        if v > m:
            m = v
    return
our_max(1)
1
our_max(1,2)
2
our_max(3,1,2,5,4,-17)
5

values前面的*的作用:告诉python将当次调用的所有参数做成一个元组,并将该元组赋值给values。当没有提供任何值的时候,values就会被赋值为一个空元组。

  • 带*号的参数并不是必须单独出现。在函数的参数列表中,星号参数之前可以定义任意数量的常规。这些常规参数会按照正常的方式与值进行配对,然后将所有值做成一个元组并赋值给星号参数。
def append_all(old, *new):
    for n in new:
        old.append(n)
    return old

values = []
append_all(values,1,2,3)

[1,2,3]

append_all(values)
[1,2,3]

python不允许单个函数中出现两个或两个以上的星号参数,因为在将它们跟值进行配对的过程中会出现歧义。

  • 命名参数
    命名参数:不需要按照特定顺序将参数传入,只需将参数名及其值成对传入即可。
def describe_creature(name, species, age, weight):
    return '%s (%s): %d years, %d kg' %(name,species,age,weight)

print describe_creature(name = 'Charles', species = 'Homo', age = 28, weight = 70)  #按照参数正常顺序传入
Charles(Homo): 28 years, 70 kg
def describe_creature(name, species, age, weight):
    return '%s (%s): %d years, %d kg' %(name,species,age,weight)

print describe_creature(age = 28, species = 'Homo', name = 'Charles', weight = 70)  #变换参数顺序
Charles(Homo): 28 years, 70 kg

14.2 异常

14.3 测试

14.4 调试

14.5 模式

15. 图形界面

15.1 Tkinter模块

from Tkinter import *
window = Tk()  #创建根窗口
  • Tkinter小插件
    Button #可点击的按钮
    Canvas #用于绘制或显示图形图像的区域
    Checkbutton #可点击的框,其状态可以是选定的或未选定的
    Entry #可供用户输入数据的单行文本框
    Frame #用于承载其他小插件的容器
    Label #用于显示文本框的单个行
    Listbox #可供用户选择的下拉菜单
    Menu #下拉菜单
    Messange #用于显示文本的多个行
    Menubutton #下拉菜单中的菜单项
    Text #可供用户输入数据的多行文本框
    TopLevel #额外的窗口
from Tkinter import *
window = Tk()  #创建根窗口
label = Label(window, text = "this is our label.")
label.pack() #pack()方法
  • pack()方法,其它插件也可以用,用于将该插件置入其父插件中,并告诉其父插件要根据实际情况改变其大小。如果忘记了调用该方法,则子插件要么就不显示,要么就显示不正确。

  • Frame 组织其它插件

from Tkinter import *
window = Tk()
frame = Frame(window)
frame.pack()
first = Label(frame, text = "first label")
first.pack()
second = Label(frame, text = "second label")
second.pack()
third = Label(frame, text = "third label")
third.pack()
window.mainloop()
  • Entry 可输入单行文本
from Tkinter import *

window = Tk()

frame = Frame(window)
frame.pack()

var = StringVar()

label = Label(frame, textvariable = var)
label.pack()

entry = Entry(frame, textvariable = var)
entry.pack()

window.mainloop()

15.2 模型、视图和控制器

15.3 样式

  • 字体
  • 颜色
  • 布局
1. 开胃菜 2. 使用 Python 解释器 2.1. 调用 Python 解释器 2.1.1. 参数传递 2.1.2. 交互模式 2.2. 解释器及其环境 2.2.1. 错误处理 2.2.2. 执行 Python 脚本 2.2.3. 源程序编码 2.2.4. 交互执行文件 2.2.5. 本地化模块 3. Python 简介 3.1. 将 Python 当做计算器 3.1.1. 数字 3.1.2. 字符串 3.1.3. 关于 Unicode 3.1.4. 列表 3.2. 编程的第一步 4. 深入 Python 流程控制 4.1. if 语句 4.2. for 语句 4.3. The range() 函数 4.4. break 和 continue 语句, 以及循环的 else 子句 4.5. pass 语句 4.6. 定义函数 4.7. 深入 Python 函数定义 4.7.1. 默认参数值 4.7.2. 关键字参数 4.7.3. 可变参数列表 4.7.4. 参数列表的分拆 4.7.5. Lambda 形式 4.7.6. 文档字符串 4.8. 插曲:编码风格 5. 数据结构 5.1. 关于列表更多的内容 5.1.1. 把链表当作堆栈使用 5.1.2. 把链表当作队列使用 5.1.3. 列表推导式 5.1.4. 嵌套的列表推导式 5.2. del 语句 5.3. 元组和序列 5.4. 集合 5.5. 字典 5.6. 循环技巧 5.7. 深入条件控制 5.8. 比较序列和其它类型 6. 模块 6.1. 深入模块 6.1.1. 作为脚本来执行模块 6.1.2. 模块的搜索路径 6.1.3. “编译的” Python 文件 6.2. 标准模块 6.3. dir() 函数 6.4. 包 6.4.1. 从 * 导入包 6.4.2. 包内引用 6.4.3. 多重目录的包 7. 输入和输出 7.1. 格式化输出 7.1.1. 旧式的字符串格式化 7.2. 文件读写 7.2.1. 文件对象方法 7.2.2. pickle 模块 8. 错误和异常 8.1. 语法错误 8.2. 异常 8.3. 异常处理 8.4. 抛出异常 8.5. 用户自定义异常 8.6. 定义清理行为 8.7. 预定义清理行为 9. 类 9.1. 术语相关 9.2. Python 作用域和命名空间 9.2.1. 作用域和命名空间示例 9.3. 初识类 9.3.1. 类定义语法 9.3.2. 类对象 9.3.3. 实例对象 9.3.4. 方法对象 9.4. 一些说明 9.5. 继承 9.5.1. 多继承 9.6. 私有变量 9.7. 补充 9.8. 异常也是类 9.9. 迭代器 9.10. 生成器 9.11. 生成器表达式 10. Python 标准库概览 10.1. 操作系统接口 10.2. 文件通配符 10.3. 命令行参数 10.4. 错误输出重定向和程序终止 10.5. 字符串正则匹配 10.6. 数学 10.7. 互联网访问 10.8. 日期和时间 10.9. 数据压缩 10.10. 性能度量 10.11. 质量控制 10.12. “瑞士军刀” 11. 标准库浏览 – Part II 11.1. 输出格式 11.2. 模板 11.3. 使用二进制数据记录布局 11.4. 多线程 11.5. 日志 11.6. 弱引用
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI人工智能科学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值