转载自:http://marshal.easymorse.com/tech/python%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8
Python开发入门
python语言是一种很容易上手的语言:
- 解释型的脚本语言,不需要编译,随写随运行
- 语法简洁,很多时候,完成同样的功能,比java代码要少的多
- Linux系统和Mac系统都标配python环境
另外,python还有一些优点:
- 大公司的支持,比如Google的很多系统就是python开发的,python也是GAE下两种可用的语言,另外一种是java
- 历史够长,有很多成熟的库和第三方库
- 既适合写临时性的脚本,也可以实现大型的应用
- 可以作为开发者的入门语言,学习成本比较低,容易上手,便于培养开发者的编程能力,另外,可帮助入门人员通过python触摸到计算机系统,打好计算机基础
实际上,写这篇文档是为部门培养初级程序员编程能力,学习python而编写的一篇导引性质文档。
言归正传,上来先是搭建开发环境。
开发环境
首先,需要安装python,python的官方网站:http://www.python.org/。
如果是Linux环境或者Mac环境,应该已经安装了Python,比如我用的Mac OSX 10.6.5,python环境是2.6.1,在UBuntu10.10环境下,是2.6.5。
如果是Windows,需要下载和安装,这里要注意,python有两个主要版本,python2.x和python3.x。版本2和版本3不兼容。python3中做了很多改进,更适合面向对象编程,但是目前我们使用的环境和市面上的python应用大都使用python2开发。因此从实际出发,本文建议使用2.x版本。即下载2.7的最新版本。
集成开发环境,因为团队成员都安装并比较熟练的使用Eclise,因此建议使用第三方Eclipse插件pydev,网址在:http://pydev.org/,如果使用Eclipse3.6,安装很简单,通过在线安装即可,链接是:http://pydev.org/updates
安装好以后,重启Eclipse,需要配置一下,告知插件你的python在哪里。
这里选择auto config即可了,会自动扫描找到python环境。
然后,可以创建pydev project开始python开发了。
编写Python版Helloworld
根据上面的截图,相信你已经创建好pydev项目。那么,创建一个python文件。python文件的结尾名为py。按照下图方式创建文件:
这里文件名为helloworld.py。pydev会自动在空文件中增加一些内容,为了简易起见,统统删除。然后增加文件顶部内容:
#!/usr/bin/python
# -*- coding: utf-8 -*-
其中第一句的作用是在linux和mac上作为脚本运行的时候系统使用它识别为python脚本。
第二句的目的是申明程序使用utf-8编码。这样可防止中文乱码显示的事情。
写个最简单的吧,只有一行,打印语句:
print "你好,世界!"
可以通过两种方式运行这个最简单的程序。
通过Eclipse pydev插件:
运行效果如下:
另外,可以在linux或者mac下通过脚本方式运行:
在运行前,需要把脚本权限设置为可执行:
chmod +x helloworld.py
基本语法
以下用最简单的示例说明最基本的语法。这部分的目的不是涵盖主要语法,而是帮助你尽快开始工作。如果需要查找详细语法,或者本文中未涵盖的语法,请参见参考文档部分。
变量和数据类型
程序最基本的元素是变量。python是动态类型语言,这一点,很类似javascript。比如:
a=1
a="aaa"
以上是合法的python变量赋值语句。这里我们要注意以下几个问题:
- 没有诸如,int a=1这样的java语法中的int类型符号,java是静态类型语言,a变量声明为int型,那它就固定下来了,在该变量的作用域中它将只能是int型,而动态类型语言的python,甚至可以在后面改变a的类型,从数字型转为字符串型
- 上面要点提到的区别,实际上是解释型语言和编译型语言原理上的区别,后者在编译的时候要做类型检查,并生成二进制的机器指令,因此类型不可改变,解释型语言是在运行时才判断该变量是何种类型,因此没有这样的限制
- python的每一行的结束标志是回车,很多语言是通过分号表示行结束的
python支持的数据类型很多,和其他语言大同小异。
python的所有数据类型都是对象。这在当代新型语言中普遍采用。形成对比的是java中除了对象类型数据以外还有基本型,比如int。
字符串
在python中的字符串字面量表示方式比较丰富,和c、java这样的语言比较而言。
a="aaa"
a=’aaa’
a="""
ddd
dfaf
dfafa
"""
a=”’
fjkdajla
fjdakfjal
”’
使用单引号和双引号,这点类似javascript,可以帮助简化写出类似下面的代码而不需要转义符,反之亦然:
a=’hello "world" ‘
三个符号的单引号和双引号,可以方便写多行的代码。
有关字符串的详细内容,可参见:http://docs.python.org/tutorial/introduction.html#strings
流程控制语句
流程控制语句,分支语句if,比如循环语句for。
分支语句:
if True:
print ‘ok.’
elif True:
print ‘ok too’
else:
print ‘no!’
这里要提到几点:
- 判断语句用:做分割
- 用空格替代了c风格语法的大括号,这种方式有很多人不习惯,其实很好,强制开发者在语法中注意代码的格式
- 空格一般是缩进4个空格
循环语句:
for s in range(10):
print ‘aaa’,s
相当于for(int i=0;i<10;i++)。
更详细的可参见:http://docs.python.org/tutorial/controlflow.html#for-statements
数据结构
python提供了丰富的数据结构方面的支持,包括:
- 列表,可以认为等同于java的List
- 元组,和列表功能类似,不可编辑
- 集合,类似Java中的Set
- 字典,类似Java中的Map
具体内容参见:http://docs.python.org/tutorial/datastructures.html
函数的声明和使用
写一个最简单的函数声明:
def my_test():
print ‘>>>测试’
使用该函数:
my_test()
声明带参数的函数:
def my_test(name="–"):
print ‘>>>你好,’,name
因为是动态类型语言的特点,函数参数不需要声明类型。另外,参数可以有默认值。
所有python函数都会自动返回一个None对象,如果没有在代码中使用return的话。
比如现在要在函数中返回name:
def my_test(name="–"):
print ‘>>>你好,’,name
return name
文件和流的处理