快速入门:
1.python的print语句,与子付款格式操作符(%)结合使用,可实现字符串替换功能。
print "%s is number %d" % ("python",1)
%s表示一个字符串来替换;
%d表示由一个整型来替换;
%f表示由一个浮点型来替换;
2.python语句也支持将输出到重定向到文件。符号>>用来定向输出。
>>> import sys
>>> log = open(‘/tmp/myprint.log‘,‘a‘)
>>> print >> log,‘Fail error:invalid input‘
>>> log.close()
3.程序输入和raw_input()内建函数
raw_input()内建函数,它将读取标准输入,并将读取到的数据赋值给指定的变量。
>>> phone=raw_input(‘Please input your phone number:‘)
Please input your phone number:18621530000
>>> print ‘you phone number is:‘,phone
you phone number is: 18621530000
4.python的注释
>>> #This is a comment //该行为注释语句
... print ‘This is a comment test‘
This is a comment test
5.python操作符
+
-
*
/
//
%
**
6.比较操作符,比较运算根据表达式的值返回布尔值。
<
<=
>
>=
==
!=(不等于)
<>(不等于,该种方法慢慢再被淘汰)
7.python逻辑操作符
and
or
not
8.变量和赋值
python是动态型语言,也就是说不需要预先声明变量的类型。变量的类型和值在赋值那一刻就被初始化。
9.数字
python所支持的五种基本数字类型:
整型(int)
长整型(long)
布尔值(bool) True被当成整型1,Faule被当成整型值0.
浮点值(float)
负数(complex)
10.字符串被定义为引号之间的字符集合。python支持使用成对的单引号或双引号,三引号可以用来包含特殊字符。使用索引操作符([])和切片操作符([:])可以得到子字符串。子字符串其特有的索引规则:
第一个字符的索引是0,
最后一个字符的索引是-1。
加号+用于字符串连接运算,星号*则用于字符串重复。
>>> a=‘pythonchina‘
>>> a*2
‘pythonchinapythonchina‘
>>> a[2]
‘t‘
>>> a[2:5]
‘tho‘
>>> a[3:]
‘honchina‘
11.列表和元祖
可以将列表和元祖当成普通的“数组”,它能保存任意类型的python对象。和数组一样,通过从0开始的数字索引访问元素,但是列表和元祖可以存储不同类型的对象。列表和元祖有几处比较重要的区别,列表元素用[]包裹,元素的个数及元素的值可以改变。元祖用小括号()包裹,不可以更改。元祖可以看成是只读的列表。通过切片运算[],[:]可以得到子集。
>>> alist = [1,2,5,‘a‘,‘abc‘]
>>> alist[3]
‘a‘
>>> type(alist)
<type ‘list‘>
>>> atuple=(‘rockets‘,‘2‘,‘1.24‘,‘a+1.8‘)
>>> atuple[-1]
‘a+1.8‘
>>> type(atuple)
<type ‘tuple‘>
12.字典
字典是python中的映射数据类型,工作原理类似perl中关联的数组或哈希表。由键-值(ker-value)对构成。几乎所有的python对象都可以用作键。
>>> adict = {‘host‘:‘earth‘}
>>> adict[‘port‘] = 80
>>> adict
{‘host‘: ‘earth‘, ‘port‘: 80}
>>> adict.keys()
[‘host‘, ‘port‘]
>>> for key in adict:
... print key , adict[key]
...
host earth
port 80
13.代码块及缩进对齐
代码块通过缩进对齐表达式代码逻辑,程序的可读性更高。而且缩进能够清楚得表达一个语句属于哪个表达块。
14.if 语句
if expression: //表达式的值非0或者布尔值True,则if_suite被执行。
if_suite
#!/usr/bin/env python
# Filename: if.py
number=23
guess=int(raw_input(‘Enter an integer : ‘))
if guess==number:
print ‘guess is equal number‘
elif guess<number:
print ‘guess is not big than number‘
else:
print ‘No, it is a little lower than that‘
print ‘Done‘
15.while循环
标准while条件循环语句的语法类似if,如下:
while expression:
while_suite
语句while_suite会被连续不断地执行,直到表达式的值变为0或者False,接着python会执行下一句代码。类似if语句,python的while语句中的表达式也不需要用括号括起来。
>>> counter=0
>>> while counter < 3:
... print ‘loop #%d‘ % (counter)
... counter +=1
...
loop #0
loop #1
loop #2
16.for循环和range()内建函数
python中的for循环与传统的for循环不太一样,它更像shell脚本里的foreach迭代。python中的for循环可接受可迭代对象(例如序列或迭代器)作为参数,每次迭代其中一个元素。
>>> for item in {‘email‘,‘net-surfing‘,‘tv‘}:
... print item
...
tv
net-surfing
email
print语句添加‘,‘之后,就可以让输出在同一行。
>>> for i in range(5):
... print i
...
0
1
2
3
4
备注:range()内建函数用于生成数值范围。
>>> a=‘abc‘ //对于字符串的迭代
>>> for i in range(5):
... print i,
...
0 1 2 3 4
range函数经常和len()函数用于字符串索引,这里我们要显示每个元素及其索引值。
>>> for i in range(len(a)):
... print a[i],‘(%d)‘ % i
...
a (0)
b (1)
c (2)
seq = ["one","two","three"]
for i, element in enumerate(seq):
seq[i] = ‘%d, %s‘ % (i, seq[i])
print seq
17.列表解析
我们可以在一行中使用一个for 循环将所有值放到一个列表中。
squared=[ x ** 2 for x in range(4)]
for i in squared:
print i,
18.文件和内建函数,open()、file()
文件对象的方法属性必须通过句点属性标识方法访问。
属性是与数据有关的项目,属性可以是简单的数据值,也可以是执行对象,比如函数和方法。很多类、模块、文件、复数都拥有属性,我们如何访问对象属性?使用句点表示法,也就是在对象名和属性名之间加一个句点(.):
object.attribute
#!/usr/bin/python
filename = raw_input(‘Enter file name:‘)
fobj=open(filename,‘r‘)
for eachLine in fobj:
print eachLine,
fobj.close()
19.错误和异常
编译时会检查语法错误,不过python也允许程序运行时检测错误。当检测到一个错误,python解释器就会引发一个异常,并显示异常的详细信息。要给你的代码添加错误检测及异常处理,只要将他们封装在try-except语句当中。try之后的代码组就是你打算管理的代码。except之后的代码组,则是你处理错误的代码。
#!/usr/bin/python
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
20.函数
python是通过引用调用的,这意味着函数内对参数的改变会影响到原始对象。
如何定义函数?
def function_name([arguments]):
"optional documentation string"
function_suite
定义一个函数语法由def关键字及紧随其后的函数名。再加上该函数需要的几个参数组成,函数参数是可选的,这也是为什么将他们放到括号中的原因。
def addMe2Me(x):
‘apply + operation to argument‘
return ( x + x)
print addMe2Me(‘pythonchina‘)
print addMe2Me(5.25)
print addMe2Me([-1,‘abc‘])
默认参数,函数的参数可以有一个默认值,如果提供有默认值,在函数定义中,参数以赋值语句的形式提供。事实上,这仅仅是提供默认参数的语法,它表示函数调用时如果没有提供这个参数,他就取这个值作为默认值。
def foo(debug=True):
if debug:
print ‘in debug mode‘
print ‘done‘
foo()
foo(False)
21.类
类是面向对象编程的核心,它扮演相关数据及逻辑容器的角色。它们提供了创建真实‘对象’的蓝图,因为python并不要求你以面向对象的方式编程。
如何定义类?
class ClassName(base_class[es]):
"optional documentation string"
static_member_declarations
method_declarations
class FooClass(object):
"""my very first class: FooClass"""
version= 0.1
def _int_(self, nm=‘Joe Doe‘):
"""constructor"""
self.name = nm # class instance (data) attribute
print ‘Created a class instance for‘,nm
def showname(self):
"""display instance attribute and class name"""
print ‘Your name is‘,self.name
print ‘My name is ‘,self._class_._name_
def showver(self):
"""display class (static) attribute """
print self.version # references FooClass.version
def addMe2Me(self,x):
"""apply + operation to argument"""
return x+x
在上面的这个类中,我们定义了一个静态变量version,它将被所有的实例及4个方法共享。这些show*()方法并没有做什么有用的事情,仅仅输出对应的信息。_init_()方法有一个特殊的名字,所有名字开始和结束都有两个下划线的方法是特殊的方法。
当一个类实例被创建时,_init_()方法会被自动执行,在类实力创建完毕后执行,类似构造器。_init_()可以被当成构造器,它并不创造实例--它仅仅是你的对象创建后执行的第一个方法。它的目的是执行一些该对象的必要的初始化工作,通过创建自己的_init_()方法。在这个实例中,我们初始化了一个名为name的类实例属性,这个变量仅在类实例中存在,它并不是实际类本身的一部分。_init_()需要一个默认的参数,毫无疑问你也注意到其中每个方法都有一个参数self。
什么是self?它是实例自身的引用。
如何创建类实例
# -*- coding: utf-8 -*-
__author__ = ‘xudongqi‘
class people:
name = ‘‘
age = 0
__weight = 0
#定义基本属性,私有属性外部无法直接访问。
#定义构造方法
def __init__(self,n,a,w):
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s is speaking: I am %d years old" %(self.name,self.age))
p = people(‘tom‘,10,30)
p.speak()
22.模块
模块是一种组织形式,它将彼此有关系的python代码组织到一个个独立文件当中。模块可执行代码,函数和类或者是这些东西的组合。
当你创建了一个python源文件,模块的名字就是不带.py后缀的文件名。一个模块创建之后,你可以从另一个模块中使用import语句导入这个模块来使用。
如何导入模块
import module_name
如何访问一个模块函数或访问一个模块变量
一旦导入完成,一个模块的属性(函数和变量)可以通过熟悉的句点属性标识法访问。
module.function()
module.variable
实用的函数:
dir([obj])
help([obj])
int([obj])
len([obj])
open(fn,mode)
range([start,]stop[,step])
raw_input(str)
str(obj)
type(obj)