Python程序设计入门(1)基本语法简介
Python是当今日趋流行的一种脚本语言,它比Java更简单,比php更强大,并且还适用于做桌面应用的开发,在ubuntu中,更加是必须的一种脚本引擎,所以有必要去学习一下,这里的文章只针对有一定编程基础,最好是比较熟悉php或javascript的用户,如果没任何基础的新手建议找更详细的教程去学习。
Python的变量是不需要定义的,这方面和php一样,它比javascript还是宽松,不过它是用缩进作为段落标识的,作为习惯了C语言风格语法的人,可能一开始会很不习惯使用,但细一想,其实也是很正常,很合理的。虽然Python在面向过程/面向对象方面也是很宽松,但实际上一般的程序都是一个主入口,然后不断调用其它类库或函数,所以用缩进的方式并无不妥,那样一方面要求用户写代码时要规范,另一方面反向省去了多余的{}。
与C语言风格相比,Python主要语法特点而下:
1、变量、字符串
在python中,所有变量都是对象,数组其实是一个链表,并且可以进行相应的链表操作。
1.1对于普通数据类型,定义/赋值方法都是一样的,这里不作介绍,python的字符串方面有些特别,这里介绍一下。
python对字符串用[']["]括起含义是一样的,同样对特殊字符使用[\]进行转义
不过它有一个很特别的语法就是:[''']三引号,它用于括起分多行的字符串,实际是这也可以作为它的多行注解,如:
#-*-coding:gb18030-*- ''' 单独使用三引号,字符串因为没有使用,就相当于注解了 下面是给一个变量赋值 ''' str='''我是一个三引号,\'oh!\'我可以换行, 换行了,照样OK''' printstr
这样的语法很有趣吧。
需要特别注意的是,如果源码里有中文的,一定要在源码的第一行定义:
#-*-coding:gb18030-*-
当然,你也可以使用utf-8编码,这看你是在linux还是在windows下调试了。
1.2此外关于变量方面,有几个内置类型是有必要了解的,它们是:None、True、False(注意:python的变量是严格区分大小写的)
None是表示没定义的变量,至于True/False这个谁都知道了吧,呵呵。
注解:除了用'''作多行注解之外,也可以用#作为单行注解,这是linux下的脚本语言的常规做法了。
续行:python中对于太长的行,可以用\表示未结束,这和linux的shell的通用做法是一致的。
1.3数组定义:
arr=['a','b','c']
等同于
arr=[]
arr+=['a']
arr+=['b']
arr+=['c']
#遍历方法:
foriinrange(0,len(arr)):
printarr[i],"\n"
python的数组实际不是数组,而是一个list对象,如果要参考它的用法,可以参考这个对象的方法。
需要注意的是,python的数组实际是一个链表,因此定义后不能像php之类语言一样,直接在后面追加元素,而是需要用操作链表的方法操作。在上述例子中:如果用arr[2]='ccccc'可以改变第三个元素的值,但如果用arr[3]='dddd'增加一个元素是会指错的,应该用:arr.append('ddddd')或arr.insert(任意位置,'dddd')增加元素
对于多维数组,定义方式为:arr=[[]]*3它定义的是:[[],[],[]],也可以用arr=[[]foriinrange(3)]
对于数组和字符串等常用操作,后面会有一章专门介绍,这里就不在列举更多的使用方法。
2、区块的定义(如语句、函数等)
Python的区块的格式都是
区块代码:
区块内部的代码
它怎么判断区块结束呢?它不同VB、Dephi之类,区块都是有结束标志的,它没有,它是纯粹根据缩进来识别的,这样虽然有点怪异,不过习惯了会觉得也是挺好的。
区块基本定义语法:
2.1.if/elif/else
x=int(raw_input("Pleaseenteraninteger:"))#获取行输入 ifx>0: print'正数' elifx==0: print'零' else: print'负数'
Python中没用三问运算符,不过可以用(满足条件的值if满足条件else未满足条件的值)替代
如:str=('ok'if1>2else'notok')
最终结果是:str=='notok'
这里需要说明的一个地方是,python中没有!、&&和||运算符,而是用not、and、or
2.2.in
in判断一个数是否在一个集合(如:元组,列表等)中
if'yes'in ('y','ye','yes'):
print 'ok'
与之相对应的还有notin
2.3.for...in
python中没有类似C中的for循环,而是使用for...in来对集合中的每一个元素进行操作
a=['cat','door','example'] forxina: printx
等同于:
foriinrange(0,len(a)): printa[i]
如果要修改a的内容,请用a的副本循环(否则不安全),如:
a=["cat","tttyyyuuu"] forxina[:]: iflen(x)>6:a.insert(0,x) printa
结果为:
['tttyyyuuu','cat','tttyyyuuu']
2.4.break/continue
这两个的用法和其它C语法类的语言相同
foriinrange(10): if2==i:continue#结束当前循环,进入下一步循环 if6==i:break#跳出循环 printi
结果为:
0
1
3
4
5
2.5.while/pass
whileTrue:
pass#什么也不做
2.6.is
用来比较两个变量是否指向同一内存地址(也就是两个变量是否等价)而==是用来比较两个变量是否逻辑相等
a=[1,2] b=[1,2] >>>aisb False >>>a==b True
2.7.del
用于删除元素
a=[1,2,3,4,5,6] dela[0] a >>>[2,3,4,5,6]
dela[2:4] a >>>[2,3,6] dela[:] a >>>[]
dela a #抛出异常 >>>NameError:name'a'isnotdefined