Chinaunix

标题: Python的入门简介 [打印本页]

作者: missjiang    时间: 2007-09-25 12:28
标题: Python的入门简介
前段时间老板要做一个项目,采用的开发语言是Python,之前本人只学习过C++和Java两种传统的编程语言,对于Python语言的了解仅限于听说过而已,在参与这个项目过程中,真真实实感受到了Python语言的简单易用和它的快速开发的效率。
    我想可能部分网友和我有着相似的学习背景(只学习过传统的C++/Java编程语言,而对Perl/Python/Ruby没有了解),经历这个项目后,我认为像Python这样的语言确实有学习的必要,因此把我的Python学习笔记贴出来,不过前面部分写的过于基础了。

目录
1、第一个Python脚本: hello world
2、Python语言与传统的C++/Java语言显著不同的地方
3、Python语言的控制结构
4、变量声明和定义  
5、函数  
6、列表、字典、元组  
7、字符串处理
8、面向对象编程:封装、继承、虚拟函数、接口、多继承、模板
9、面向对象编程:异常处理

[ 本帖最后由 missjiang 于 2007-9-25 12:37 编辑 ]
作者: missjiang    时间: 2007-09-25 12:29
1、第一个Python脚本: hello world

  1. #!/usr/bin/python
  2. print 'hello world'
复制代码

与C语言的不同地方在于:

这些做法可以使得程序看上去较为清爽,当然如果你不习惯的话,Python编译器也可以接受以下的风格

  1. #!/usr/bin/python
  2. print("hello world");
复制代码

作者: missjiang    时间: 2007-09-25 12:29
2、Python语言与传统的C++/Java语言显著不同的地方

先看一个例子:

  1. a = 1
  2. b = 2
  3. c = 3
  4. d = 3
  5. if a == b:
  6.         if c == d:
  7.                 print 'a == b && c == d'
  8. else:
  9.         print 'a != b'
  10. # 程序运行结果:a != b
复制代码

注意:

Python语言这种做法的优点在于:


Python语言这种做法的缺点在于:

这些缺点倒是可以接受,关键在于用户是否认同Python缩进的优点。
作者: missjiang    时间: 2007-09-25 12:30
3、Python语言的控制结构

作者: missjiang    时间: 2007-09-25 12:31
4、变量声明和定义

作者: missjiang    时间: 2007-09-25 12:31
5、函数

作者: missjiang    时间: 2007-09-25 12:32
6、列表、字典、元组
待续...
作者: missjiang    时间: 2007-09-25 12:32
7、字符串处理
待续...
作者: missjiang    时间: 2007-09-25 12:33
8、面向对象编程:封装、继承、虚拟函数、接口、多继承、模板
Python是一种典型的动态类型语言,由于他的动态性:

下面我们通过举例的方式学习面向对象语言中的各种特性

1、封装

  1. class Person:
  2.         def __init__(self, name):
  3.                 self.name = name
  4.         def getName(self):
  5.                 return self.name

  6. person = Person('person')
  7. print 'name = %s' % person.getName()

  8. 程序输出:
  9. name = person
复制代码

与C++不同的地方:


2、继承

  1. class Chinese(Person):
  2.         def __init__(self, name, company):
  3.                 Person.__init__(self, name)
  4.                 self.company = company
  5.         def love(self):
  6.                 print '%s is Chinese, he love working' % self.name
  7.         def work(self):
  8.                 print '%s is working in %s' % (self.name, self.company)

  9. class Japanese(Person):
  10.         def __init__(self, name, interesting):
  11.                 Person.__init__(self, name)
  12.                 self.interesting = interesting
  13.         def love(self):
  14.                 print '%s is Japanese, he love playing' % self.name
  15.         def play(self):
  16.                 print '%s is playing %s' % (self.name, self.interesting)

  17. zhangSan = Chinese('Zhang San', 'HuaWei')
  18. zhangSan.love()
  19. zhangSan.work()

  20. sanJing = Japanese('San Jing', 'Basketball')
  21. sanJing.love()
  22. sanJing.play()

  23. 程序输出:
  24. Zhang San is Chinese, he love working
  25. Zhang San is working in HuaWei
  26. San Jing is Japanese, he love playing
  27. San Jing is playing Basketball
复制代码


3、虚拟函数

  1. zhangSan = Chinese('Zhang San', 'Hua Wei')
  2. sanJing = Japanese('San Jing', 'Basketball')

  3. persons = [zhangSan, sanJing]
  4. for person in persons:
  5.         person.love()

  6. 程序输出:
  7. Zhang San is Chinese, he love working
  8. San Jing is Japanese, he love playing
复制代码

这个例子建立了继承于Person的Chinese和Japanese类,Chinese中定义了love和work两个成员函数,Japanese中定义了love和play两个成员函数,注意:


4、接口

  1. class Cat:
  2.         def __init__(self, name, food):
  3.                 self.name = name
  4.                 self.food = food
  5.         def love(self):
  6.                 print '%s is Cat, he love eating %s' % (self.name, self.food)

  7. def callLove(object):
  8.         object.love()

  9. zhangSan = Chinese('Zhang San', 'HuaWei')
  10. sanJing = Japanese('San Jing', 'Basketball')
  11. mimi = Cat('MIMI', 'fish')
  12. objects = [zhangSan, sanJing, mimi]
  13. for object in objects:
  14.         callLove(object)

  15. 程序输出:
  16. Zhang San is Chinese, he love working
  17. San Jing is Japanese, he love playing
  18. MIMI is Cat, he love eating fish
复制代码

注意:

5、多继承

  1. class Mix(Chinese, Japanese):
  2.         def __init__(self, cname, jname, company, interesting):
  3.                 Chinese.__init__(self, cname, company)
  4.                 Japanese.__init__(self, jname, interesting)

  5. mix = Mix('Zhang San', 'San Jing', 'HuaWei', 'Basketball')
  6. mix.love()
  7. mix.work()
  8. mix.play()

  9. 程序输出:
  10. San Jing is Chinese, he love working
  11. San Jing is working in HuaWei
  12. San Jing is playing Basketball
复制代码



6、模板
Python是动态类型的语言,天生支持模板,看两个例子:

函数模板

  1. def min(a, b):
  2.         if (a < b):
  3.                 return a
  4.         else:
  5.                 return b

  6. print(min(1, 2))
  7. print(min(1.5, 2.5))
复制代码


类模板

  1. objects = [Person('person'), Cat('mimi')]
复制代码

Python中内置的高级数据类型有:列表、字典、元组,它们可以存储任意类型的元素,实现容器时无须像C++的stl需要template的支持,这一点与Java类似。

[ 本帖最后由 missjiang 于 2007-9-25 19:34 编辑 ]
作者: missjiang    时间: 2007-09-25 12:34
9、面向对象编程:异常处理

捕获除以零的异常

  1. try:
  2.         a = 1
  3.         b = 0
  4.         c = a / b
  5.         print 'Never reach this line'
  6. except ZeroDivisionError:
  7.         print 'Attempt divide by zero'
复制代码


定义自己的异常

  1. class MyException(Exception):
  2.         def __init__(self, divisor, dividend):
  3.                 self.divisor = divisor
  4.                 self.dividend = dividend

  5. def divide(divisor, dividend):
  6.         if divisor == 2 * dividend:
  7.                 raise MyException(divisor, dividend)
  8.         print '%d / %d = %d' % (divisor, dividend, divisor / dividend)

  9. try:
  10.         divide(9, 3)
  11.         divide(16, 4)
  12.         divide(4, 2)
  13. except MyException, x:
  14.         print 'MyException is raised while execute divide(%d, %d)' % (x.divisor, x.dividend)
复制代码


finally子句

  1. def openFile():
  2.         try:
  3.                 print 'Open File'
  4.                 file = open('/etc/passwd')
  5.                 c = 1 / 0
  6.         finally:
  7.                 print 'Close File'
  8.                 file.close()
  9.         print 'Never reach this line'

  10. try:
  11.         openFile()
  12. except:
  13.         print 'Error occured while open file'
复制代码

作者: jcodeer    时间: 2007-09-25 17:28
不错~~~~~
学习
作者: szhaitao    时间: 2007-09-30 11:12
不错。。。。。。。看《简明 Python 教程》
Swaroop, C. H. 著
沈洁元  译
www.byteofpython.info

居然一直没找到怎么注释代码。。。。。。还是这样的笔记型的好,想读者所想,记读者易混淆

对于缩进代替结束关键字,感觉非常不爽
如果说为了强制代码规范,那为什么变量可以不定义就使用,而且可以随时改变其类型!这样只会更混乱。
——比较喜欢c++的随时随地{ }一个代码块里定义局部变量,对于pascal的函数头部统一声明变量也觉得太极端了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2