Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。Python具有丰富和强大的库。它常被昵称为 胶水语言,能够把用其他语言制作的各种模块(尤其是C/ C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如 3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。Python继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。
3,python基础入门
所有的语言的入门离不开HelloWorld:
3.1 Python的输出语句
print "Hello World!"
3.2 程序输入:
输入字符串 a = raw_input('input new string:')
输入数字 a = input()
3.3 注释
# coding = utf-8
print "Hello World" #My first Python code 注释
3.4 操作符
+ 加 -减 *乘 /除 //浮点数四舍五入除法 %求余 **乘方(pow(a,b) 等于a ** b)
比较操作符: < <= > >= == != <>
逻辑操作符: and or not
3.5 变量和赋值
Python变量名是大小写敏感的,它是动态类型语言,也就是说不需要预先声明变量的类型,变量的类型和值在赋值那一刻被初始化
变量赋值通过等号实现
count = 0
name = 'mewhat'
Python支持增量赋值:n = n * 10 等同于 n *= 10
但是Python并不支持自增(n++)自减(n--)这样的操作
3.6 数字
由符号整型:长整型 long(仅受限于计算机的虚拟内存总数,类似Java的大数类BigInteger),整型int
布尔型bool (True,False)
浮点数:float
复数:complex
3.7 字符串
Python中字符串被定义为引号之间的字符集合。单引号 双引号 三引号(一般用于文档字符串)
例如: pystr = 'python' pystr2 = "Python"
访问字符串中的字符可以用索引操作符([])和切片操作符([ : ])来获取子串
pystr[1:4] -> "ytho"
pystr[:4] -> "pytho"
pystr[-1] -> "n"
加号(+)用于字符串连接运算,星号(*)则用于字符串重复
pystr * 2 -> "pythonpython"
pystr + " " + pystr2 -> "python Python"
其中字符串中的元素是不可以直接修改的,就是说字符串是不可变的类型,只有另行创建一个空字符串去
2.8 列表和元组
列表元素用中括号([])包裹,元素的个数及元素的值可以改变。
元组元素用小括号(())包裹,不可以更改,元组可以看成是只读的列表。
两者可以通过切片运算([] 和[:])可以得到子集。
>>>aList = [1,2,3,4]
>>>aList
[1,2,3,4,]
>>>aList[0]
1
>>>aList[2:]
[3,4]
>>>aList[1] = 5
>>>aList
[1,5,3,4]
>>>aTuple = ('robots',77,93,'try')
>>>aTuple
('robots',77,93,'try')
>>>aTuple[:3]
('robots',77,93)
>>>aTuple[1] = 5
TypeError: object doesn't support item assignment
3.9 字典(映射数据类型,由键-值对构成,字典元素用大括号({})包裹)
>>>aDict = {'host':'earth'}
>>>aDict['port'] = 80
>>>aDict
{'host':'earth','port':80}
3.10 代码块
代码块通过缩进对齐表达代码逻辑,而不是使用大括号。对应Python的简洁,可读性好的特点,代码块之间一般会空格一行的习惯。
3.11 语句
if语句
if expression:
if_suite
elif expression2:
elif_suite
else:
else_suite
while循环
while expression:
while_suite
for循环和range()内建函数
Python的for和传统的for不一样,for接受可迭代对象,每次迭代其中一个元素和其他语言的for....each一样
for i in [1,2,2,3]:
print i
range()内建函数接受一个数值范围,并生成一个范围列表:range(3) 相当于 [0,1,2]
结合for语句:
for item in range(3):
print item
输出:
0
1
2
3.12 列表解析
Python中一个强大的术语,让代码更加简洁,易懂
squared = [x ** 2 for x in range(4)] #0-3的数的平方
sqdEvens = [x ** 2 for x in range(8) if not x % 2] #0-7中奇数的平方
3.13 文件和内建函数open(),file()
在你已经习惯一门语言的语法之后,文件的访问时相当重要的一环。在一些工作做完之后,将它保存到持久储存很重要。
如何打开文件:
handle = open(file_name,access_mode='r')
file_name变量包含要打开的文件的字符串名字,access_mode中的'r'表示读取,'w'表示写入,'a'表示添加。
如果open()成功,一个文件对象句柄会被返回。文件操作都必须通过句柄来操作。
例子:
filename = raw_input('Enter file name:')
fobj = open(filename,'r')
for eachLine in fobj:
print eachLine,
fobj.close()
3.14 错误和异常
要给自己的代码加上错误检测及异常处理,就将他们“封装”在try-except语句中,try之后的代码组就是你打算管理的代码,except之后的代码组则是你处理错误的代码。
try:
filename = raw_input('Enter file name')
fobj = open(filename,'r')
for eachLine in fobj:
print eachLine,
fobj.close()
except IOError,e:
print 'file open error:',e
3.15函数
Python中的函数使用小括号(())调用。函数在调用之前必须先定义。如果函数中没有return语句,就会自动返回None对象。Python是通过引用调用的。这意味着函数内对参数的改变会影响到原始对象。不过事实上只有只有可变对象会受影响。对不可变对象来说,它的行为类似按值调用。
定义函数:
def function_name([argumemts]):
"optional documenttation string"
function_suite
定义函数由def关键字+函数名+参数;参数是可选的;语句由冒号(:)结束之后就是代表函数体的代码组。例子:
def addMe2(x):
"apply + operation to argument"
return (x + x)
3.16 类
类是面向对象编程的核心,它扮演相关数据及逻辑容器的角色。它们提供了创建“真实”对象(实例)的蓝图。
Python可以用类来编程,也可以不用。不强制规定。
如何定义类:
class ClassName(base_class[es]):
"optional documentation string"
static_member_declarations
method_declarations
使用class关键字定义类,可以提供一个可选的父类或者说基类,如果没有合适的基类,那就使用object作为基类,class行之后是可选的文档字符串,静态成员定义及方法定义。
例子:(抓取淘宝MM图片的爬虫)
import urllib
import urllib2
import re
class Spider:
def __init__(self):
self.siteURL = 'http://mm.taobao.com/json/request_top_list.htm'
def getPage(self,pageIndex):
url = self.siteURL + "?page=" + str(pageIndex)
print url
request = urllib2.Request(url)
response = urllib2.urlopen(request)
return response.read().decode('gbk')
def getContents(self,pageIndex):
page = self.getPage(pageIndex)
pattern = re.compile('([obj]) 以一种整齐的形式显示对象的文档字符串,如果没有提供任何参数,则会进入交互式帮助
int(obj) 将一个对象转换成整型
len(obj) 返回对象长度
open(fn,mode) 打开文件
range([start,]stop[,step]) 返回一个整型列表
raw_input(str) 等待用户输入一个字符串,str为提示信息
str(obj) 将一个对象转换成字符串
type(obj) 返回对象的类型(返回值本身是一个type对象!)