2015-10-25 第一天学习

Python介绍

    Python前世今生

Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。

目前吉多仍然是Python的主要开发者,决定整个Python语言的发展方向。

从效率上来讲

  C语言会编译成机器码,所以执行快

  Python是高级语言会先编译成字节码,然后用解释器解释执行,执行效率慢了不少。

但是

  Python语言学习曲线更缓,而且类库齐全,功能多样能做不少事情,够用就好。

        Python在TIOBE排行榜第5名,整体呈上升趋势

2015-10-25 第一天学习

    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

输出是一个列表,第一项内容是文件名字

变量

变量名字有要求:

  1. 字母 数字 下划线
  2. 第一个字符不能是数字
  3. 避开内置关键字

变量赋值:

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