Python介绍
Python前世今生
Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。
目前吉多仍然是Python的主要开发者,决定整个Python语言的发展方向。
从效率上来讲
C语言会编译成机器码,所以执行快
Python是高级语言会先编译成字节码,然后用解释器解释执行,执行效率慢了不少。
但是
Python语言学习曲线更缓,而且类库齐全,功能多样能做不少事情,够用就好。
Python在TIOBE排行榜第5名,整体呈上升趋势
Python应用
图形处理,有PIL、Tkinter等图形库支持,能方便进行图形处理。
数学处理,NumPy扩展提供大量与许多标准数学库的接口,
文本处理,python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。
数据库编程,程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,Mysql等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。
网络编程,提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。
作为Web应用的开发语言,支持最新的XML技术。
多媒体应用,Python的PyOpenGL模块封装了"OpenGL应用程序编程接口",能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。
使用企业:Youtube,Dropbox,Quora,Google,NASA
在Google内部的很多项目,例如Google App Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex Martelli)说:"这很难讲,不过,2004年,Python已在Google内部使用,Google召募许多Python高手,但在这之前就已决定使用Python。他们的目的是尽量使用Python,在不得已时改用C++;在操控硬件的场合使用C++,在快速开发时候使用Python。"
Python种类
Python除了有python2和python3的区别,还有具有众多的版本:
- CPython: 用C实现, 默认Python指的是CPython
- JPython: 用Java实现,在JVM里面执行
- IronPython: 用C#实现
- Cython: 一个Python的超级,可以绑定后调用C
- Numba: 增加JIT功能,为 高性能科学计算 提供支持,支持CPU和GPU计算
- IPython: 一个特殊的Python计算环境
- PyPy: 用Python实现的Python版本,增加 JIT 功能
Python还有众多的绑定实现:
- RubyPython: 在Ruby中使用Python代码
- PyObjc: 绑定Objective-C来在OS X平台实现GUI程序
- PyQt: 绑定QT来实现GUI程序
- PyGTK: 绑定GTK在Linux平台实现GUI程序
- Brython: 用JavaScript实现Python VM,从而在浏览器中执行Python代码
Python环境搭建
pycharm professional 最新
下载地址:
https://www.jetbrains.com/pycharm/download/
ubuntu最新32/64无所谓
下载地址:
http://www.ubuntu.com/download/desktop/thank-you?country=CN&version=14.04.1&architecture=amd64
python2.7.x
Windows 与 Linux版本注意
win不支持多进程的类库
*Centos环境下升级Python,需要注意yum使用2.6,升级要调整yum配置防止错误
Python入门
print 'hello,world'
Python执行过程
1.读文件
2.分析 词法分析 语法分析
3.编译字节码
4.字节码解释机器码执行
解释器
在Linux下的每个py文件最好明确指定解释器,可以避免不少错误
#!/usr/bin/env python
中文输入
学习Python经常遇到的一个问题是编码错误导致的不能正常输出。
SyntaxError: Non-ASCII character 'xc4' in file D:/autopy/hello_world.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Python解释器读取代码默认使用ASCII,没有中文编码 2^8=256种可能
unicode 2^16=65536种可能
在每个文件的开头明确编码格式可以最大程度避免这个问题
# -*- coding: utf-8 -*-
对应到pycharm需要修改File-Setting-Editor-File Encodings:
IDE Encoding & Project Encoding
在新建文件自动加入声明的方法:
help中找到find action,输入file and code templates,找到python模板文件,添加即可。
注释
#单行注释
"""多行注释"""
脚本参数
捕获参数需要用到sys模块
模块函数 sys.argv
输出是一个列表,第一项内容是文件名字
变量
变量名字有要求:
- 字母 数字 下划线
- 第一个字符不能是数字
- 避开内置关键字
变量赋值:
a=10
b=3.14
c="hi,world"
name1 = name2
输入输出
输入:
raw_input("Something")
import getpass.getpass #系统内置输入密码,看不到
输出:print
流程控制
if something: #值对比,并非内存地址对比
else:
something other
if a==b:
elif a==c:
else:
初始基本数据类型
单值
数字
整型 3714
长整型 99988887777777766666
浮点型 3.14
布尔值 0,1
复数 z = a + bj
字符串
格式化
切片 索引
长度 len(x) name[-1] == name[len(name) -1 ]
去除空格 x.strip() 去除左边的空格 x.lstrip() 去除右边空格 x.rstrip()
分割 x.split(',')
集合
列表
功能与字符串类似
切片 索引
追加 x.append()
删除 del x[i]
长度 len(x) #长度就是列表个数
列表变字符串 "_",join(x)
包含 in
元组
对比列表,没有修改功能
#字符串,列表,元组之间联系 切片,索引,循环,长度,包含
#字符串,列表,元组不同 字符串重新开辟空间,列表修改不变,元组不允许修改
字典
又称"键值对" key & value
{
"name": "echo",
"age": 18,
"gender": "看心情",
}
索引通过"键"来查.无序
for k,v in x.items(): #所有元素 键值对
print k
print v
print
"-------------------------"
x.values() #所有值
x.keys() #所有键
哈希表
循环控制
for
for i in x
break
#退出循环
pass
continue
#继续
while
while true: #死循环
print xxx
基本文本操作
用户名密码都是在数据库里面保存,验证用户名密码需要读取数据库内容
找到并打开文件
文件路径 e:/log
file file(文件路径,模式)
open
file_obj = file(文件路径,'w+') #这个叫文件句柄
文件操作,读写
file_obj.read() # 一次性读入
file_obj.readlines() #行读取
file_obj.xreadlines() # 一次一行,处理大文件 已经被废弃,有替代品
for line in file_obj:
#每次循环,只读一行,避免全部读取入内存
file_obj.write()
file_obj.writeline()
文件关闭
file_obj.close()
r,只读打开
w,写入,覆盖原来
a,追加
r+,读写
参考链接:
https://zh.wikipedia.org/wiki/Python
http://lesliezhu.github.io/public/2014-10-24-cython-start.html
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html