2012 下半年, 想学一种新的编程语言吗? 选择 Python 吧!
学习一门新语言, 有两种思路: 1. 将原来所学清空,怀空杯心态, 以免受原有语言思路的影响。毕竟,语言会塑造人的思维。 2. 将新语言与原有语言关联对比, 从而在最快时间内能够掌握基础知识,编写出有用的程序。一般这种情况下,是项目需求所致。
学习Python 有如下理由: 1. 表达能力强大, 不逊于C,C++,JAVA这些主编程语言 这是必要条件; 2. 它是类脚本语言, 这意味着简化了程序的编写, 用更少的代码完成用主编程语言可能语法繁琐的各种任务; 3. 格式严谨, 有利于代码风格的训练和软件代码的可读性,项目代码的管理; 4. 库、框架多,可以快速建立应用。 有此四条足矣,赶紧上路吧,别比来比去了!(附: PythonVSshellVsPerl : python 功能比 shell 强大, 而使用比perl简单, perl 是属于黑客的工具, 对于一般的编程人士,用python其实挺好的!)
我采用的思路是将 Python 与 Java 关联起来, 学习 Python 基础. 所以,本文不打算细述 Python 的语法, 而是通过对比差别来增强对Python 的认识, 当然, 大量的编程练习是必要的,最好能够结合一个小项目,并通过不断试错。 我写了两个星期的 python , 才基本有个认识。 注: 我使用的是 Python 2.7.3 版本。
1. Python 的代码缩进: 这是首先要提到的。 用括号括起来的代码块, 将通过 冒号加 正确缩进(同一层次的代码块必须使用完全相同的缩进) 来表达 , 条件语句中的括号通常可省略。 语句末的分号可有可无。写python 代码块时一定要注意加上冒号和正确的缩进, 这是经常容易犯的错误。例如:
while ( i < 100) {
i += 2
printf("%d",x)
}
用 python 写是这样:
while i < 100 :
i += 2 // 这里正确的缩进是必要的,否则报语法错误。
# print x ## Error: unexpected indent , 同一层次的代码必须采用完全相同的缩进, 多一个或少一个空格都不行。
2. 变量在使用前一定要进行初始化和赋值,否则解释器无法识别该变量。一个变量均可以存储多种类型的值,不强调类型。 函数定义时不强调类型。 这是脚本语言的特点, 方便程式的编写。 比如
def func(x) :
return x*2
x = 2
y = func(x)
print x , " ", y
x = ' now changed to an string '
print x, " " , y , ' OMG' # 松散的打印格式 , 双引号和单引号均可表示字符串
# print zzz 会报错: NameError : name 'zzz' is not defined.
3. 控制流 : if , if-elif-...-else , for ... in ... , while , continue, break ; 还有一个 pass 语句表示空执行, 即相当于空块,或者 NOP
4. 单行注释用 # 号, 多行注释用三个单引号
''' these are
more lines.
'''
5. 强大的内置动态数据结构: list , set, tuple, dicionary . 这些动态的数据结构很容易组合成更强大的数据结构工具。 关于这些结构的使用,网上有很多文章,这里就不细述了。
mylist = [ ] # 建立空列表
mylist = [1 , 3 , 'good']
print mylist
mylist[1] = [('this is a tuple'), ['nested list']]
print mylist
list 主要方法有: append(x) , extend(List), insert(x), sort(), reversed(), pop([i]), insert(i, x), 等。
myset = [1 , 2 ,1 ,1 , 2] # 建立集合 ===> myset = [1 ,2]
set 有成员检测功能:
x = 1
if x in myset :
print myset, " has member : ", x
else :
print x , " is not found in ", myset
mydict = {1 : ('zs', 'good', 25) , 2 : ('ww', 'right', 30) }
print mydict
mydict['city'] = 'hangzhou'
for k, v in mydict.iteritems() :
print k, v
print dict.keys()
元组 tuple 与列表类似, 但元组是不可变的, 这意味着无法修改元组的值。 引用元组的值采用下标方式
mytuple = (1, 2, 3, 4)
print mytuple[2]
# Error : mytuple[0] = 0
6. 模块。 一个 python 文件就是一个模块, 以 .py 为后缀。 当你在 func.py 中编写了函数 sign(x) 后, 要在其他文件中引用,则采用如下方式:
[1] import func
func.sign(x) # 模块名.函数名
[2] from func import sign(x)
sign(x) # 直接引用