一,简介
Python(KK 英语发音:/'pa θɑn/, DJ 英语发音:/ paiθ n/)是一种面向对象、直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,创始人为Guido van Rossum。这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行。Python具有丰富和强大的类库,足以支持绝大多数日常应用。Python常被昵称为胶水语言,可扩充性可说是Python作为一种编程语言的特色。新的内置模块(module)可用 C 或 C++ 写成,它能很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松联结在一起。
Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。基于C的Python编译出的字节码文件,通常是.pyc格式。
二,"Hello World" 程序
1#!/usr/bin/python
2
3print"Hello World!"
1 $ python helloWorld.py
2 Hello World!
如果你得到的输出跟上面一样,那么已成功运行第一个Python程序;万一得到一个错误,请确保你键入的程序准确无误。注意,Python是区分大小的,而且是严格控制缩进的。
三,数据类型
Python有4种类型的数:整数、长整数、浮点数和复数。
字符串的表示,可以用单引号、双引号、三引号和转义符。
None,是Python中表示没有任何东西的特殊类型。
四,标识符的命名规则
- 标识符名称的第一个字母必须是字母表中的字母或者一个下划线。
- 标识符名称除了有字母、下划线,还可以有数字组成。
- 标识符名称对大小写是敏感的。
五,运算符
算术运算符 | 位运算符 | 关系运算符 | 逻辑运算符 |
+ | 加 | << | 左移 | < | 小于 | not | 布尔“非” |
- | 减 | >> | 右移 | > | 大于 | and | 布尔“且” |
* | 乘 | & | 与 | <= | 小于等于 | or | 布尔“或” |
** | 冥 | | | 或 | >= | 大于等于 | | |
/ | 除 | ^ | 异或 | == | 等于 | | |
// | 整除 | ~ | 翻转 | != | 不等于 | | |
% | 取余 | | | | | | |
六,控制流
- if、elif、else,检验条件的真伪,处理相应的语句块。
- while,while从句中可以使用else语句。
#!/usr/bin/python
i = 5
while i:
print"Processing... ",i
i = i-1
else :
print"Done",i
$ python while.py
Processing... 5
Processing... 4
Processing... 3
Processing... 2
Processing... 1
Done 0
- for..in,在一个序列的对象上递归(逐一)使用队列中的每个项目。
#!/usr/bin/python
for i in range(1,5):
print"Processing",i
else :
print"Done",i
$ python for.py
Processing 1
Processing 2
Processing 3
Processing 4
Done 4
- break,用来终止循环语句。
- continue,用来跳过当前循环块中的剩余语句,然后继续下一轮的循环。
七,函数
- 函数,是重用的语句块。它们允许你给一个语句块一个名称,然后可以在程序的任何地方使用这个名称任意多次的运行这个语句块。这被称为调用函数。
函数通过def关键字定义。def关键字后跟一个函数的标识符名称,然后跟一对圆括号。圆括号之中可以包含一些变量名,该行以冒号结尾。接下来似乎一块语句,她们是函数体。
#!/usr/bin/python
def HelloWorld():
print"Hello World!"
HelloWorld()
$ python function.py
Hello World!
- 全局变量,用关键字global定义。
- 默认参数值,有些函数的参数是可选的,如果用户不想要为这些参数提供值的话,这些参数就使用默认值。可以在函数定义的形参名后加上赋值运算符(=)和默认值,从而给形参指定默认的参数值。
#!/usr/bin/python
def HelloWorld(Message="Renzo"):
print"Hello",Message
HelloWorld()
HelloWorld("Python")
$ python function.py
Hello Renzo
Hello Python
- 关键参数,如果某个函数有许多参数,而只想指定其中的一部分,那么可以通过命令来为这些参数赋值。我们通过使用参数的名字而不是位置来给函数指定实参。
- return语句,用来从一个函数返回,即跳出函数。也可以从函数返回一个值。
- pass语句,用来表示一个空的语句块。
八,模块
- 模块,就是一个包含了所有定义的函数和变量的库文件。便于在其他函数中重用。模块的文件名必须以.py结尾。
使用sys模块:
#!/usr/bin/python
import sys
print"The Python Path is",sys.path
for ARGV in sys.argv:
print ARGV
$ python system.py liu renzo
The Python Path is ['/usr/pa_instances/IBS_DVT', '/usr/lib64/python24.zip', '/usr/lib64/python2.4', '/usr/lib64/python2.4/plat-linux2', '/usr/lib64/python2.4/lib-tk', '/usr/lib64/python2.4/lib-dynload', '/usr/lib64/python2.4/site-packages', '/usr/lib64/python2.4/site-packages/Numeric', '/usr/lib64/python2.4/site-packages/gtk-2.0', '/usr/lib/python2.4/site-packages']
system.py
liu
renzo
- 字节编译的.pyc文件,输入一个模块相对来说是比较费时的,所有Python为了加快处理创建字节编译的文件,这些文件以.pyc作为扩展名,而且这些文件也是与平台无关的。
- 模块的__name__,每个模块都有一个名称。在模块中可以通过语句来找出模块的名称。
- dir()函数,用来列出模块定义的标识符。标识符有函数、类和变量。
$ python
Python 2.4.3 (#1, Jun 11 2009, 14:09:37)
[GCC 4.1.220080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits"or"license"for more information.
>>>import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__', '__stdin__', '__stdout__', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getrecursionlimit', 'getrefcount', 'hexversion', 'maxint', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'version', 'version_info', 'warnoptions']
>>> 0.
九,数据结构
Python中有三种内建的数据结构:列表、元组和字典。
1. 列表
list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。列表中的项目应该包括在方括号中,这样Python就知道这是一个列表。一旦创建了一个列表,你就可以添加、删除或是搜索列表中的项目。列表是可变的数据类型。
2. 元组
元组跟列表十分相似,只不过元组跟字符串一样是不可变的。元组通过圆括号中用逗号分隔的项目定义。
元组通常的用法是在打印语句中:
#!/usr/bin/python
age =28
name ="Renzo"
print"My name is %s, and I'm %d years old"%(name,age)
$ python tuple.py
My name is Renzo, and I'm 28 years old
3. 字典
把键跟值联系在一起。键必须是唯一的,而且只能是不可变对象。字典通过花括号用逗号分隔并且键与值用冒号分开的项目定义。
十,面向对象编程
在程序中根据操作数据的函数或语句块来设计程序,这被称为面向过程的编程。还有一种把数据和功能结合起来,用称为对象的东西包裹起来组织程序的方法,称为面向对象的编程。类,使用class关键字创建。类的域或方法被列在一个缩进块中。
类的方法跟普通函数只有一个区别——他们必须有一个额外的第一个参数名称,但是在调用这个方法的时候不用为这个参数赋值,Python会提供这个值。这个特别的对象指对象本身,按照惯例他的名称是self。
使用对象的方法:
#!/usr/bin/python
class MyClass:
def Hello(self):
print"Hello World!"
MyObject = MyClass()
MyObject.Hello()
$ python object.py
Hello World!
- __init__方法,在类的一个对象建立时,马上运行。这个方法用来对对象做一些初始化。注意,这个名称的开始和结尾都是双下划线。
#!/usr/bin/python
class MyClass:
def__init__(self,message):
self.message = message
def Hello(self):
print"Hello %s!"%self.message
MyObject = MyClass("Renzo")
MyObject.Hello()
$ python object.py
Hello Renzo!
注意:我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。
例外:如果使用的数据成员名称以双下划线前缀,Python就会把他作他作为私有变量,这样这个变量只能在类或对象中使用。
十一,Python拓展
- lambda语句,用来创建新的函数对象,并且在运行时返回他们。
- exec语句,用来执行储存在字符串或文件中的Python语句。
- eval语句,用来计算存储在字符串中的有效Python表达式。
- assert语句,用来声明某个条件是真的。
- rptr函数,用来取得对象的规范字符串表示。