声明:本文内容主要来源于中国大学MOOC嵩天老师的课程Python语言程序设计
计算机是根据指令操作数据的设备
计算机的发展 参照摩尔定律,表现为指数方式
摩尔定律 计算机发展历史上最重要的预测法则
程序设计 计算机可编程性的体现
程序设计语言 一种用于人类与计算机之间交互的人造语言,亦称编程语言,比自然语言更简单、更严谨、更精确
编程语言的执行方式 编译和解释
result = 1+1
11010010 00111011
编译 将源代码一次性转换成目标代码的过程,执行编译过程的程序叫作编译器
解释 将源代码逐条转换成目标代码同时逐条运行的过程,执行解释过程的程序叫作解释器
编译: 一次性翻译,之后不再需要源代码,类似英文翻译
解释:每次程序运行时随翻译随执行,类似实时同声传译
静态语言
动态语言
程序的基本编写方法 IPO
Python语言诞生 创立者 Guido van Rossum
and | elif | if | or | with |
---|---|---|---|---|
as | else | import | pass | yield |
assert | except | in | raise | del |
break | finally | lambda | return | False |
class | for | not | try | |
continue | from | nonlocal | True | |
def | global | None | while |
round()
函数四舍五入处理e
表示 a ∗ 1 0 b a*10^b a∗10bc.real
获得,虚部用c.imag
获得abs(x)
x的绝对值 divmod(x,y)
商余,如divmod(10,3) 结果为(3,1)pow(x,y[,z])
幂余, 表示(x**y)%zround(x,y)
四舍五入max(x1,x2,...,xn)
返回最大值min(x1,x2,...,xn)
返回最小值int(x)
将x变为整数,舍弃小数部分,如 int(123.45) int("123")
float(x)
将x变为浮点数,增加小数部分x+y
连接两个字符串n*x
或 x*n
复制n次字符串xx in s
如果x是s的子串,返回True,否则返回Falselen(x)
返回字符串x的长度str(x)
与eval(x)
相反,将x加上引号变为字符串hex(x)
或 oct(x)
整数x的十六进制或八进制chr(u)
或 ord(x)
Unicode与单字符的互相转换ch(9800)
~chr(9812)
=>♈♉♊♋♌♍♎♏♐♑♒♓
str.lower(),str.upper()
返回字符串的副本,全部字符小写/大写str.split(seq=None)
返回一个列表,由str根据sep被分隔的部分组成str.count(sub)
返回子串sub在str中出现的次数str.replace(old,new)
返回字符串副本,所有old子串被替换成newstr.center(width[,fillchar])
字符串str根据宽度width居中,fillchar可选"python".center(20,"=") 结果为 '======python======='
str.strip(chars)
从str中去掉在其左侧和右侧chars中列出的字符"= python =".strip(" =np") 结果为 "ytho"
str.join(iter)
在iter变量除最后元素外每个元素后增加一个str,主要用于字符串分隔",".join("12345") 结果为"1,2,3,4,5"
str1.index(str2[,begin[,end]])
从字符串str1的begin到end位置时搜索到字符串str2时返回在str1的索引。str2 = "exam"
print (str1.index(str2))
print (str1.index(str2, 10))
print (str1.index(str2, 40))
结果为
15
15
Traceback (most recent call last):
File "" , line 1, in <module>
print(str1.index(str2, 16))
ValueError: substring not found
用法:<模板>.format(<逗号分隔的参数>)
注意槽的变化
"{}:计算机{}的CPU占用率为{}%".format("2018-10-10","C",10)
0 1 2 0 1 2
结果为:"2018-10-10:计算机C的CPU占用率为10%"
"{1}:计算机{0}的CPU占用率为{2}%".format("2018-10-10","C",10)
结果为:"C:计算机2018-10-10的CPU占用率为10%"
槽内部对格式化的配置方式
{<参数序号>:<格式控制标记>}
: | <填充> | <对齐> | <宽度> | <,> | <.精度> | <类型> |
---|---|---|---|---|---|---|
引导符号 | 用于填充的单个字符 | <为左对齐 >为右对齐 ^居中对齐 | 槽设定的输出宽度 | 数字的千位分隔符 | 浮点数小数精度或字符串最大输出长度 | 整数类型b,c,d,o,x,X浮点数类型e,E,f,% |
"对" if guess==99 else "错"
异常处理一
try:
<语句块1>
except <异常类型,可针对响应>:
<语句块2>
异常处理二,直接抛出
raise <异常名称>
三、异常发生,finally中语句正常执行
try:
<语句块1>
(except (<异常类型,可针对响应>):
<语句块>)
finally:
<语句块2>
四、异常不发生时会执行else中语句
try:
<语句块1>
except <异常类型>:
<语句块2>
else:
<语句块3>
finally:
<语句块4>
五、自定义异常
自定义一个MyException类,继承Exception。
class MyException(Exception):
def __init__(self,message):
Exception.__init__(self)
self.message=message
如果输入的数字小于10,就引发一个MyException异常:
a=input("please input a num:")
if a<10:
try:
raise MyException("my excepition is raised ")
except MyException,e:
print e.message
异常名称 | 描述 |
---|---|
BaseException | 所有异常的基类 |
SystemExit | 解释器请求退出 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
Exception | 常规错误的基类 |
StopIteration | 迭代器没有更多的值 |
GeneratorExit | 生成器(generator)发生异常来通知退出 |
SystemExit | Python 解释器请求退出 |
StandardError | 所有的内建标准异常的基类 |
ArithmeticError | 所有数值计算错误的基类 |
FloatingPointError | 浮点计算错误 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除(或取模)零 (所有数据类型) |
AssertionError | 断言语句失败 |
AttributeError | 对象没有这个属性 |
EOFError | 没有内建输入,到达EOF 标记 |
EnvironmentError | 操作系统错误的基类 |
IOError | 输入/输出操作失败 |
OSError | 操作系统错误 |
WindowsError | 系统调用失败 |
ImportError | 导入模块/对象失败 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
LookupError | 无效数据查询的基类 |
IndexError | 序列中没有没有此索引(index) |
KeyError | 映射中没有这个键 |
MemoryError | 内存溢出错误(对于Python 解释器不是致命的) |
NameError | 未声明/初始化对象 (没有属性) |
UnboundLocalError | 访问未初始化的本地变量 |
ReferenceError | 弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
RuntimeError | 一般的运行时错误 |
NotImplementedError | 尚未实现的方法 |
SyntaxError | Python 语法错误 |
IndentationError | 缩进错误 |
TabError | Tab 和空格混用 |
SystemError | 一般的解释器系统错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
UnicodeError | Unicode 相关的错误 |
UnicodeDecodeError | Unicode 解码时的错误 |
UnicodeEncodeError | Unicode 编码时错误 |
UnicodeTranslateError | Unicode 转换时错误 |
Warning | 警告的基类 |
DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 |
OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 |
RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning | 可疑的语法的警告 |
UserWarning | 用户代码生成的警告 |
- for … in 遍历循环:计数、字符串、列表、文件
for <变量> in <遍历结构>:
<语句块1>
else:
<语句块2>
--------------------------
while <条件>:
<语句块1>
else:
<语句块2>
函数定义
def <函数名>(<参数(0个或多个)>):
<函数体>
return <返回值>
函数调用
def fact(n,m=1):
s=1
for i in range(1,n+1):
s *=i
return s//m
>>>fact(10)
3628800
>>>fact(10,5)
725760
def fact(n,*b):
s=1
for i in range(1,n+1):
s*=i
for item in b:
s*=item
return s
>>>fact(10,3)
10886400
>>>fact(10,3,5,8)
435456000
局部变量和全局变量
global
保留字在函数内部使用全局变量ls =['F','f'] #全局变量列表ls
def func(a):
ls.append(a) #此处ls是列表类型,未真实创建,等同于全局变量
return
func('C')
print(ls)
>>>
['F','f','C']
1.集合定义
2.集合表示
>>> A={"python",123,('python',123)}
>>> A
{123, 'python', ('python', 123)}
>>> B=set("pypy1233")
>>> B
{'3', 'y', '1', '2', 'p'}
>>> C={"python",123,"python",123}
>>> C
{123, 'python'}
3.集合间操作
S|T
并集 包括在集合S和T中的所有元素
S-T
差集 包括在S但不在T中的元素
S&T
交集 包括同时在S和T中的元素
S^T
补集 包括S和T的非相同元素
S<=T
或 S
S>=T
或 S>T
返回True/False,判断S和T的包含关系
S|=T S&=T S^=T S-=T
>>> A={'p','y',123}
>>> B=set("pypy123")
>>> A-B
{123}
>>> B-A
{'3', '1', '2'}
>>> A&B
{'p', 'y'}
>>> A^B
{'3', '1', 123, '2'}
>>> A|B
{'3', 'y', '1', '2', 'p', 123}
4.集合处理方法
S.add(x)
如果x不在集合S中,将x增加到S
S.discard(x)
移除S中元素x,如果x不在集合S中,不报错
S.remove(x)
移除S中元素x,如果x不在集合S中,产生KeyError异常
S.clear()
移除S中所有元素
S.pop()
随机取出S的一个元素,更新S,若S为空产生KeyError异常
S.copy()
返回S的一个副本
len(S)
返回集合S的元素个数
x in S
与 x not in
判断S中元素x是否存在,返回True/False
set(x)
将其他类型变量x转变为集合类型
try:
while True:
print(A.pop(),end="")
except:
pass
p123y
>>>A
set()
#此方法等价于for...in
5.集合类型应用场景
>>> A
set()
>>> "p" in {'p','y',123}
True
>>> {'p','y'} >={'y',123}
False
>>> ls=['p','p','y',231,'y']
>>> s=set(ls)
>>> s
{231, 'p', 'y'}
>>> lt=list(s)
>>> lt
[231, 'p', 'y']
1.序列类型定义
序列是一个基类类型
包含字符串类型/元组类型/列表类型
2.序列处理函数及方法
序列类型通用操作符
x in s
和 x not in s
判断x是否为s序列的元素
s+t
连接两个序列s和t
s*n
或 n*s
将序列复制n次
s[i]
索引,返回s中第i个元素
s[i:j]
或s[i:j:k]
切片,返回序列s中第i到j以k为步长的元素子序列
序列类型通用函数和方法
len(s)
返回序列s的长度
min(s)
或max(s)
返回序列s的最小或最大值,s中元素需可比较
s.index(x)
或s.index(X,i,j)
返回序列s从i开始到j位置中第一次出现元素X的位置
s.count(x)
返回序列中出现x的总次数
3.元组类型及操作
元组是序列类型的一种扩展
tuple()
创建,元素间用逗号,分隔def func():
return 1,2
>>> creature='cat','dog','tiger','human'
>>> creature[::-1]
('human', 'tiger', 'dog', 'cat')
>>> color=(0x001100,'blue',creature)
>>> color
(4352, 'blue', ('cat', 'dog', 'tiger', 'human'))
>>> color[-1][2]
'tiger'
4.列表类型定义
>>> ls=['cat','dog','tiger',1024]
>>> ls
['cat', 'dog', 'tiger', 1024]
>>> lt=ls
>>> lt
['cat', 'dog', 'tiger', 1024]#方括号[]真正创建一个列表,赋值仅传递引用
ls[i]=x
替换列表ls第i元素为x
ls[i:j:k]=lt
用列表lt替换切片后所对应元素子列表
del ls[i]
删除列表ls中第i元素
del ls[i:j:k]
删除列表ls中第i到j以k为步长的元素
ls +=lt
更新列表ls,将列表lt元素增加到列表ls中
ls *=n
更新列表ls,其元素重复n次
>>> ls=['cat','dog','tiger',1024]
>>> ls[1:2]=[1,2,3,4]
>>> ls
['cat', 1, 2, 3, 4, 'tiger', 1024]
>>> del ls[::3]
>>> ls
[1, 2, 4, 'tiger']
>>> ls*2
[1, 2, 4, 'tiger', 1, 2, 4, 'tiger']
ls.append(x)
在列表ls最后增加一个元素
ls.clear()
删除列表ls中所有元素
ls.copy()
生成一个新列表,赋值ls中所有元素
ls.insert(i,x)
在列表ls的第i位置增加元素x
ls.pop(i)
将列表元素ls中的第i位置元素取出并删除元素
ls.remove(x)
将列表ls中出现的第一个元素x删除
ls.reverse()
将列表ls中的元素反转
5.序列类型应用场景
lt=tuple(ls)
1.字典类型定义
dict()
创建,键值对用冒号:表示"streetAddr":"中关村南大街1号"
"City":"北京市"
{<键1>:<值1>,<键2>:<值2>,...}
2.字典类型的用法
type(x)
返回变量x的类型>>> d={"中国":"北京","美国":"华盛顿","法国":"巴黎"}
>>> d
{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
>>> d['中国']
'北京'
>>> de={}
>>> de
{}
>>> type(de)
<class 'dict'>
>>> d
{'中国': '北京', '美国': '华盛顿', '法国': '巴黎', '日本': '东京'}
3.字典处理函数及方法
del d[k]
删除字典d中键k对应的数据k in d
判断键k是否在字典d中,如果在返回True,否则Falsed.keys()
返回字典d中所有的键信息d.values()
返回字典d 中所有的值信息d.items()
返回字典d中所有键值对信息>>> '中国' in d
True
>>> d.keys()
dict_keys(['中国', '美国', '法国', '日本'])
>>> d.values()
dict_values(['北京', '华盛顿', '巴黎', '东京'])
>>> d.items()
dict_items([('中国', '北京'), ('美国', '华盛顿'), ('法国', '巴黎'), ('日本', '东京')])
d.get(k,)
键k存在,则返回相应值,不在则返回值d.pop(k,)
键k存在,则取出相应值,不在则返回值d.popitem()
随机从字典d中取出一个键值对,以元组形式返回d.clear()
删除所有键值对len(d)
返回字典d中元素的个数>>> d.get('中国','上海')
'北京'
>>> d.get('韩国','上海')
'上海'
>>> d.popitem()
('日本', '东京')
>>> d
{'中国': '北京', '美国': '华盛顿', '法国': '巴黎'}
4.字典类型应用场景
“{}{}{}”.format()
将字符串按照一定规格和式样进行规范文件类型
文本文件 VS 二进制文件
文本文件由单一特定编码组成的文件,如UTF-8编码,由于存在编码,也被看成是存储着的长字符串,适用于例如:.txt文件、.py文件等
二进制文件直接有比特0和1组成,没有统一字符编码,一般存在二进制0和1的组织结构,即文件格式,适用于如:.png文件、.avi文件等
#f.txt文件保存:“中国是个伟大的国家!”
>>>
tf=open("f.txt","rt") # 文本形式打开文件
print(tf.readline())
tf.close()
>>>
中国是个伟大的国家!
>>>
bf=open("f.txt","rb") # 二进制形式打开文件
print(bf.readline())
bf.close()
>>>
b'\xd6\xd0\xb9\xfa\xca\xc7\xb8\xf6\xce\xb0\xb4\xf3\xb5\xc4\xb9\xfa\xbc\xd2\xa3\xa1'
文件的打开关闭
步骤:打开 -->操作–>关闭
<变量名> =open(<文件名>,<打开模式>)
D:\\PYE\\f.txt
f.txt
<=> ‘./PYE/f.txt’<变量名>.close()
打开模式 | 描述 |
---|---|
‘r’ | 只读模式,默认值,如果文件不存在,返回FileNotError |
‘w’ | 覆盖写模式,文件不存在则创建,存在则完全覆盖 |
‘x’ | 创建写模式,文件不存在则创建,存在则返回FileExistError |
‘a’ | 追加写模式,文件不存在则创建,存在则在文件最后追加内容 |
‘b’ | 二进制文件模式 |
‘t’ | 文本文件模式,默认值 |
‘+’ | 与r/w/x/a一同使用,在原功能基础上增加,使其同时具备读写功能 |
f=open('f.txt') -文本形式、只读模式、默认值
f=open('f.txt','rt') -文本形式、只读模式、默认值
f=open('f.txt','w') -文本形式、覆盖写模式
f=open('f.txt','a+') - 文本形式、追加写模式+读文件
f=open('f.txt','x') - 文本形式、创建写模式
f=open('f.txt','b') - 二进制形式、只读模式
f=open('f.txt','wb') - 二进制形式、覆盖写模式
文件内容的读取
操作方法 | 描述 |
---|---|
f.read(size=-1) |
读取全部内容,如果给出参数,读入前size长度>>>s=f.read(2) 中国 |
f.readline(size=-1) |
读入一行内容,如果给出参数,读入该行前size长度>>>s=f.readline() 中国是个伟大的国家 |
f.readlines(hint=-1) |
读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行>>>s=f.readlines() ['中国是个伟大的国家'] |
文件的全文本操作
fname = input('请输入要打开的文件名称:')
fo = open(fname,'r')
txt = fo.read()
#对全文txt进行处理 -一次读入,统一处理,弊端是大文件占用内存,耗资源,代价很大
fo.close()
fname = input('请输入要打开的文件名称:')
fo = open(fname,'r')
txt = fo.read(2)
while txt != "":
#对txt进行处理 - 按数量读入,逐步处理
txt=fo.read(2)
fo.close()
fname = input('请输入要打开的文件名称:')
fo = open(fname,'r')
for line in fo.readlines():
print(line)
fo.close()
fname = input('请输入要打开的文件名称:')
fo = open(fname,'r')
for line in fo:
print(line)
fo.close()
数据的写入
操作方法 | 描述 |
---|---|
f.write(s) |
向文件写入一个字符串或字节流>>>f.write("中国是一个伟大的国家") |
f.writelines(lines) |
将一个元素全为字符串的列表写入文件,写入的数据为列表所有元素拼接成字符串后大字符串>>>ls=['中国','德国','美国'] >>>f.writelines(s) 中国德国美国 |
f.seek(offset) |
改变当前文件操作指针的位置,offset含义如下:0-文件开头;1-当前位置 2-文件结尾>>>f.seek(0) #回到文件开头 |
fo=open('output.txt','w+')
ls=['中国','法国','美国']
fo.writelines(ls)
fo.seek(0)//没有seek回到文件开头的话,输出为空
for line in fo:
print(line);
fo.close()
注意: window环境,打开文件默认编码为gbk,写入的数据流如果可能不是gbk编码,而是utf-8,就会报’gbk’ codec can’t encode character 错误。
需要改变文件的编码
f=open('output.txt','w',encoding='utf-8')
一维数据 由对等关系的有序或无序数据构成,采用线性方式组织
二维数据 由多个一维数据构成,是一维数据的组合形式
多维数据 由一维或二维数据在新维度上扩展形成
高维数据 仅利用最基本的二元关系展示数据间的复杂结构
{
"firstName" : "Mingzi" ,
"lastName" : "Xingshi" ,
"address" :{
"streeAddr" : "某某村某某街",
"city" : "Beijing",
"zipcode" : "10081"
}
"professsional" : ["Computer Networking","Security"]
}
数据的操作周期
存储 <-> 表示 <-> 操作
一维数据的表示
一维数据的存储
空格分隔
逗号分隔
*特殊符号分隔
一维数据的处理
空格分隔
读取 txt=open(fname).read();ls=txt.split()
写入 f.write(' '.join(ls))
逗号分隔
读取 txt=open(fname).read();ls=txt.split(',')
写入 f.write(','.join(ls))
二维数据的表示
CSV格式与二维数据存储
CSV :Comma-Separated Values
CSV数据存储格式
二维数据的存储
二维数据的处理
fo =open(fname)
ls =[]
for line in fo:
line=line.replace('\n','')
ls.append(line.split(','))
fo.close()
ls =[[],[],[]]
f= open(fname,'w')
for item in ls:
f.write(','.join(item)+'\n')
f.close()
ls =[[],[],[]]
for row in ls:
for column in row:
print(ls[row][column])
自顶向下 解决复杂问题的有效方法
自底向上 逐步组建复杂系统的有效测试方法
逻辑思维 推理和演绎,数学为代表,A->B B->C A->C
实证思维 实验和验证,物理为代表,引力波<- 实验
计算思维 设计和构造,计算机为代表,汉诺塔递归
计算思维 Computational Thinking
计算生态 以开源项目为组织形式,充分利用“共识原则”和“社会利他”组织人员,在竞争发展、相互依存和迅速更迭中完成信息技术的更新换代,形成技术的自我演化路径。
计算生态 没有顶层设计、以功能为单位、具备三个特点
计算生态的价值在于创新,跟随创新,集成创新和原始创新
Python语言与计算生态
计算生态的运用
刀耕火种 -> 站在巨人的肩膀上
实现功能 -> 关注用户体验
提高用户体验的方法
进度展示
异常处理
其他类方法
软件程序->软件产品:用户体验是程序到产品的关键环节
Python社区
安装第三方库
1.pip安装方法 主要方法,适合99%以上情况,适合windows、Mac和linux等操作系统
常用的pip命令
D:\>pip install <第三方库名>
- 安装指定的第三方库
D:\>pip install -U <第三方库名>
- 使用-U标签更新已安装的指定第三方库
D:\>pip uninstall <第三方库名>
-卸载指定的第三方库
D:\>pip download <第三方库名>
-下载但不安装指定的第三方库
D:\>pip show <第三方库名>
- 列出某个指定第三方库的详细信息
D:\>pip search <关键词>
- 根据关键词在名称和介绍中搜索第三方库
D:\>pip list
-列出当前系统已经安装的第三方库
2.集成安装方法 结合特定Python开发工具的批量安装
Anaconda
3.文件安装方法
Numpy 表达N维数组的最基础库
Pandas Python数据分析高层次应用库
Scipy 数学、科学和工程计算功能库
Matplotlib 高质量的二维数据可视化功能库
matplotlib.pyplot
子库调用各可视化效果Seaborn 统计类数据可视化功能库
Mayavi 三维科学数据可视化功能库
PyPDF2 用来处理pdf文件的工具集
from PyPDF2 import PdfFileReader, PdfFileMerger
merger = PdfFileMerger()
input1 = open("document1.pdf","rb")
input2 = open("document2.pdf","rb")
merger.append(fileobj = input1,pages = (0,3))
merger.merge(position = 2,fileodj = input2,pages = (0,1))
output = open("document-output.pdf","wb")
merger.write(output)
NLTK 自然语言文本处理第三方库
from nltk.corpus import treebank #将自然语言文本转化为树形结构
t = treebank.parsed_sents('wsj_0001.mrg')[0]
t.draw()
Python-docx 创建或更新Microsoft Word文件的第三方库
from docx import Document
document = Document()
document.add_heading('Document Title',0)
p = document.add_paragraph('A plain paragraph having some')
document.add_page_break()
document.save('demo.docx')
Scikit-learn 机器学习方法工具集
Tensorflow AlphaGo背后的机器学习计算框架
import tensorflow as tf
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
res=sess.run(result)
print('result:',res)
MXNet 基于神经网络的深度学习计算框架
Requests 最友好的网络爬虫功能库
import requests
r = requests.get('https://api.github.com',auth=('user','pass'))
r.status_code
r.headers['content-type']
r.encoding
r.text
Scrapy 优秀的网络爬虫框架
pyspider 强大的Web页面爬取系统
Beautiful Soup HTML和XML的解析库
Re 正则表达式解析和处理功能库
Python-Goose 提取文章类型Web页面的功能库
from goose import Goose
url = 'http://www.elmundo.es/elmundo/2012/10/28/espana1351388909.html'
g = Goose({'use_meta_language':False,'target_language':'es'})
article = g.extract(url=url)
article.cleaned_text[:150]
Django 最流行的Web应用框架
Pyramid 规模适中的Web应用框架
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
def hello_world(request):
return Response('Hello World!')
if _name_ =='_main_':
with Configurator() as config:
config.add_route('hello','/')
config.add_view(hello_world,route_name='hello')
app = config.make_wsgi_app()
server = make_server('0.0.0.0',6543,app)
server.serve_forever()
Flask Web应用开发微框架
from flask import Flask
app = Flask(_name_)
@app.route('/')
def hello_world():
return 'Hell0,World!'
WeRoBot 微信公众号开发框架
import werobot
robot = werobot.WeRoBot(token='tokenhere')
@robot.handler
def hello(message):
return 'Hello World!'#对微信每个消息反馈一个Hello World
aip 百度AI开发平台接口
MyQR 二维码生成第三方库
PyQt5 Qt开发框架的Python接口
wxPython 跨平台GUI开发框架
import wx
app = wx.App(False)
frame = wx.Frame(None,wx.ID_ANY,"Hello World")
frame.show(True)
app.MainLoop()
PyGObject 使用GTK+开发GUI的功能库
import gi
gi.require_version("Gtk","3.0")
from gi.repository import Gtk
window = Gtk.Window(title="Hello World")
window.show()
window.connect("destory",Gtk.main_quit)
Gtk.main()
PyGame 简单的游戏开发功能库
Panda3D 开源、跨平台的3D渲染和游戏开发库
cocos2d 构建2D游戏和图形界面交互式应用的框架
VR Zero 在树莓派上开发VR应用的Python库
pyovr Oculus Rift的Python开发接口
Vizard 基于Python的通用VR开发引擎
Quads 迭代的艺术
ascii_art ASCII 艺术库
turtle 海龟绘图体系