Python快速入门

小提示:本文用简短的描述带领初学者快速认识pyrhon,如果没有其他语言基础,推荐直接阅读 沈洁元 老师翻译的<< 简明python教程>>,本文即参考此教程编写.

1.Python的优点

它有高效率的高层数据结构
简单而有效地实现面向对象编程
Python简洁的语法和对动态输入的支持
解释性语言
无需考虑诸如如何管理你的程序使用的内存一类的底层细节
许多平台,得小心地避免使用依赖于系统的特性
不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用Python更加简单
非常强大又简单的方式实现面向对象编程

2.与C/C++的协作是Python的一大特点
程序用C或C++编写,然后在你的Python程序中使用它们
把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能

3.Python标准库:
正则表达式、文档生成、
单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、
HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作

4.其他高质量的库,如wxPython、Twisted和Python图像库

5.自然字符串(在字符串前面加r),即不把反斜杠作为转义字符, 如
r"Newlines are indicatedby \n"。
一定要用自然字符串处理正则表达式。否则会需要使用很多的反斜杠。例如,后向引用符可以写成'\\1'或r'\1'。


6.Unicode字符串:如 u"This is a Unicode string.".字符串中含有非英语的语言时必须要用Unicode字符串

7.输入输出
输出:print 'Area is', area
输入:int(raw_input('enter a integer:'))

重点注意:Python的语法特点是用冒号":"来标示一个语句块的开始.
用缩进来区分语句块,所以编写python程序时必须要正确的缩进.
例如:
for :
    语句块
while:
    语句块
func a():
    语句块

8.
可以在while循环或for循环中使用一个else从句,形式如下
for i in range(1, 5)://range自动生成序列,第三个参数制定步长
    print i//输出1-4,不输出5
else:
    print 'The for loop is over' 

break 后 while 或for 的else 不执行

#len(s)字符串长度


函数部分:
9.定义函数:
def fun(a,b=1):
   global c   #指定全局变量,c必须在函数外定义过
   print "hello" 

10.print "aaa"*3会输出aaaaaaaaa

11.使用关键参数:
下面的函数包含默认参数
def func(a, b=5, c=10):
    print  a,b,c
可以通过命名来为部分参数复制,称作关键参数,形式如下
func(25, c=24)
func(c=50, a=100) 

12.DocStrings(文档字符串):
在函数开头部分加入三引号包起来的字符串,在调用函数时可以用函数名.__doc__(注意是双下划线)来调出此字符串作为函数的帮助
文档字符串的定义
def printMax(x, y):
    '''Prints the maximum of two numbers.


    The two values must be integers.'''
文档字符串的使用
print printMax.__doc__ #双下划线
文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。
help即调用文档字符串

13.在python脚本中执行py文件
带参数的形式
import os
os.system("1.py a b c")#带参数,利用sys.argv输出这些参数
不带参数的形式
execfile("1.py")#不带参数

14.模块:
每个python程序就是一个模块.
模块是一个包含了已定义的函数和变量的文件,文件以.py为扩展名.使用使用import命令导入,形式如下:
import导入方式,使用模块中的函数时需要加模块名作为前缀
import sys
sys.argv  sys.path

from ... import ...导入方式,编写程序中不用加sys.前缀:
from sys import * #导入sys中所有使用的名字
from sys import path,argv #导入path和argv

15.模块的name属性:
每个模块都有一个__name__属性,可以用sys.__name__的形式来找出模块名称.
这里需要注意的是,如果没有前缀,__name__的值是根据当前的调用情况决定的
如果一个模块单独运行,不加前缀的__name__等于__main__
如果一个模块被其他模块调用,不加前缀的__name__值等于模块名称.
定义一个模块test1.py,只包含一行代码
pritn __name__
如果直接运行,则输出__main__

但是,如果再定义一个模块,test2,如下
import test1
运行test2,会输出test1的模块名"test1".

所以可以用以下代码判断模块是被引用的还是单独运行的.
if __name__ == '__main__':
else:

16.dir('1.py') 返回模块定义的名称列表(包括函数名,类名和变量名)
参数为空时返回当前模块中定义的名称列表(包括函数,类和变量)
例:
import
print dir(sys)

17.del 删除变量,就如同未定义一样

18.三种内建数据结构:列表,元组, 字典

列表:列表是一个动态序列,可以进行添加,插入,删除
列表用中括号初始化
help(list)  #这个值得仔细看一下
shoplist= ['a','b','c'] #列表是个序列
print len(shoplist) #输出3

可使用for循环遍历列表中的项目
for item in shoplist:
    print item, #加逗号能消除换行符

列表的部分操作:
shoplist.append('d') #添加元素
shoplist.sort() #自动排序
del shoplist[0] #删除一个元素
print shoplist[2] #可用下标

元组:元组也是个序列,但不能改变内容,即不能进行添加和删除之类的操作
元组用小括号初始化
zoo=('a','b','c') #元组也是个序列
可以把元组用来定义另一组
new_zoo=('d','e',zoo)
列表中的列表和元组中的元组不会被解散,即用下标输出时,输出子元组的内容,而不是一个元素.如下:
new_zoo[2],返回的是zoo,new_zoo[2][2]返回的是'c'

元组的一个用处:作为print的列表
print '%s is %d years old' % (name, age)
print 'Why is %s playing with that python?' % name

字典: 用键值的方式,具体可以help(dict)
如果了解c++,字典的概念和其中的map一致.
字典定义方式:
ab={ 'a':'b', #注意用逗号分隔每个对
     'c':'d' ,
     'e':'f',
   }

print ab['e'] #调用 
ab['g']='h' #如果原字典中不存在的键,就添加一个
del ab['a'] #删除

字典的for循环用法:
for name, address in ab.items():
字典的if用法:
if 'a'in ab:或者if ab.has_key('a'):

19.序列的概念
序列:列表,元组,字符串都是序列
序列支持索引(下标)和切片
shoplist=['a','b','c','d']
切片:
print shoplist[1:3] #输出b,c,输出包括1,但不包括3
索引:
shoplist[-1]会返回'd',最后一个元素
shoplist[:-1]#返回除最后一个所有的
shoplist[1:]返回除第0个外所有的
shoplist[:3]返回0,1,2个

20.引用(参考):
赋值操作符只是引用,要实现拷贝,需要切片操作符[:]

21.字符串:字符串即str对象,它包含一些处理字符串的方法,具体详见help(str)
字符串的一些方法
name = 'Swaroop' 
if name.startswith('Swa'):
if a in name:
if name.find('war')

delimiter = '_*_'
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist) 
输出:Brazil_*_Russia_*_India_*_China

21.时间:
time.strftime('%Y%m%d%H%M%S')

zip_command = "cd c:"
if os.system(zip_command) == 0:#运行系统命令,不推荐,容易引发严重错误
os.sep#根据系统给出目录分隔符

22.面向对象
python中属于对象或类的变量称为域,函数称为方法

实例变量:属于每个实例/类的变量
类变量:属于类本身
self:相当于c++中的this
没有参数时需这样写:def sayHi(self):
类定义:
class Person:
    def __init__(self, name):#初始化函数(构造函数)
        self.name = name #创建了新的域(对象变量)
    def sayHi(self):
        print self.name
p = Person('a') #定义对象
p.sayHi()

__del__ #类似c++析构函数


class Person:
    population = 0 #公共的
    def sayHi(self, name):
        Person.population +=1 #每创建一个对象,加1
        self.name=name#self.name是私有的

私有域:前面加双下划线,如__a,则是私有,不能被其他类或对象调用

23.继承:
class SchoolMember:

class Teacher(SchoolMember):
    def __init__(self, name, age, salary):
        SchoolMember.__init__(self, name, age)
        self.salary = salary
    def tell(self):
        SchoolMember.tell(self)
        print self.salary

24.文件读写:
f=file('a.txt','w')#以write模式打开,默认为r
f.write('aaaa')
f.readline()

25.文件中存取对象(存储器):
pickle模块使我们可以在一个文件中存储和取出任何对象(这被称为持久的存储对象)
还有cPickle是用c语言编写,比pickle速度快.
用法如下:
import cPickle as p
shoplist = ['apple', 'mango', 'carrot']
# Write to the file
f = file('a.bat', 'w')
p.dump(shoplist, f)
f.close()
del shoplist
f = file('a.bat')
storedlist = p.load(f)
print storedlist 

26.异常处理:
import sys
try:
    s = raw_input()
except EOFError:
    print 'erro1'
    sys.exit() 
except:
    print 'error2'

引发异常:
class ShortInputException(Exception):
   def __init__(self):
       Exception.__init__(self)
try:
    s = raw_input()
    if len(s) < 3:
        raise ShortInputException()
    # Other work can continue as usual here
except ShortInputException,x:#x将作为一个别名
    print 'error'


try:
    f = file('poem.txt')
finally:   #无论有没有异常都执行,用来关闭文件等
    f.close()#
    

你可能感兴趣的:(Python)