以一段代码为实例快速入门Python2.7
Python由GuidoVanRossum发明于90年代初期,是目前最流行的编程语言之一,因其语法的清晰简洁我爱上了Python,其代码基本上可以说是可执行的伪代码。
非常欢迎反馈!你可以通过推特@louiedinh或louiedinhATgmail联系我。
备注:本文是专门针对Python2.7的,但应该是适用于Python2.x的。很快我也会为Python3写这样的一篇文章!
#单行注释以井字符开头 """我们可以使用三个双引号(")或单引号(') 来编写多行注释 """ ########################################################## ##1.基本数据类型和操作符 ########################################################## #数字 3#=>3 #你预想的数学运算 1+1#=>2 8-1#=>7 10*2#=>20 35/5#=>7 #除法略显诡异。整数相除会自动向下取小于结果的最大整数 11/4#=>2 #还有浮点数和浮点数除法(译注:除数和被除数两者至少一个为浮点数,结果才会是浮点数) 2.0#这是一个浮点数 5.0/2.0#=>2.5额...语法更明确一些 #使用括号来强制优先级 (1+3)*2#=>8 #布尔值也是基本类型数据 True False #使用not来求反 notTrue#=>False notFalse#=>True #相等比较使用== 1==1#=>True 2==1#=>False #不相等比较使用!= 1!=1#=>False 2!=1#=>True #更多的比较方式 1<10#=>True 1>10#=>False 2<=2#=>True 2>=2#=>True #比较操作可以串接! 1<2<3#=>True 2<3<2#=>False #可以使用"或'创建字符串 "Thisisastring." 'Thisisalsoastring.' #字符串也可以相加! "Hello"+"world!"#=>"Helloworld!" #字符串可以看作是一个字符列表 "Thisisastring"[0]#=>'T' #None是一个对象 None#=>None #################################################### ##2.变量与数据容器 #################################################### #打印输出非常简单 print"I'mPython.Nicetomeetyou!" #赋值之前不需要声明变量 some_var=5#约定使用小写_字母_和_下划线的命名方式 some_var#=>5 #访问之前未赋值的变量会产生一个异常 try: some_other_var exceptNameError: print"Raisesanameerror" #赋值时可以使用条件表达式 some_var=aifa>belseb #如果a大于b,则将a赋给some_var, #否则将b赋给some_var #列表用于存储数据序列 li=[] #你可以一个预先填充的列表开始 other_li=[4,5,6] #使用append将数据添加到列表的末尾 li.append(1)#li现在为[1] li.append(2)#li现在为[1,2] li.append(4)#li现在为[1,2,4] li.append(3)#li现在为[1,2,4,3] #使用pop从列表末尾删除数据 li.pop()#=>3,li现在为[1,2,4] #把刚刚删除的数据存回来 li.append(3)#现在li再一次为[1,2,4,3] #像访问数组一样访问列表 li[0]#=>1 #看看最后一个元素 li[-1]#=>3 #越界访问会产生一个IndexError try: li[4]#抛出一个IndexError异常 exceptIndexError: print"RaisesanIndexError" #可以通过分片(slice)语法来查看列表中某个区间的数据 #以数学角度来说,这是一个闭合/开放区间 li[1:3]#=>[2,4] #省略结束位置 li[2:]#=>[4,3] #省略开始位置 li[:3]#=>[1,2,4] #使用del从列表中删除任意元素 delli[2]#li现在为[1,2,3] #列表可以相加 li+other_li#=>[1,3,3,4,5,6]-注意:li和other_li并未改变 #以extend来连结列表 li.extend(other_li)#现在li为[1,2,3,4,5,6] #以in来检测列表中是否存在某元素 1inli#=>True #以len函数来检测列表长度 len(li)#=>6 #元组类似列表,但不可变 tup=(1,2,3) tup[0]#=>1 try: tup[0]=3#抛出一个TypeError异常 exceptTypeError: print"Tuplescannotbemutated." #可以在元组上使用和列表一样的操作 len(tup)#=>3 tup+(4,5,6)#=>(1,2,3,4,5,6) tup[:2]#=>(1,2) 2intup#=>True #可以将元组解包到变量 a,b,c=(1,2,3)#现在a等于1,b等于2,c等于3 #如果你省略括号,默认也会创建元组 d,e,f=4,5,6 #看看两个变量互换值有多简单 e,d=d,e#现在d为5,e为4 #字典存储映射关系 empty_dict={} #这是一个预先填充的字典 filled_dict={"one":1,"two":2,"three":3} #以[]语法查找值 filled_dict['one']#=>1 #以列表形式获取所有的键 filled_dict.keys()#=>["three","two","one"] #注意-字典键的顺序是不确定的 #你的结果也许和上面的输出结果并不一致 #以in来检测字典中是否存在某个键 "one"infilled_dict#=>True 1infilled_dict#=>False #试图使用某个不存在的键会抛出一个KeyError异常 filled_dict['four']#=>抛出KeyError异常 #使用get方法来避免KeyError filled_dict.get("one")#=>1 filled_dict.get("four")#=>None #get方法支持一个默认参数,不存在某个键时返回该默认参数值 filled_dict.get("one",4)#=>1 filled_dict.get("four",4)#=>4 #setdefault方法是一种添加新的键-值对到字典的安全方式 filled_dict.setdefault("five",5)#filled_dict["five"]设置为5 filled_dict.setdefault("five",6)#filled_dict["five"]仍为5 #集合 empty_set=set() #以几个值初始化一个集合 filled_set=set([1,2,2,3,4])#filled_set现为set([1,2,3,4,5]) #以&执行集合交运算 other_set=set([3,4,5,6]) filled_set&other_set#=>set([3,4,5]) #以|执行集合并运算 filled_set|other_set#=>set([1,2,3,4,5,6]) #以-执行集合差运算 set([1,2,3,4])-set([2,3,5])#=>set([1,4]) #以in来检测集合中是否存在某个值 2infilled_set#=>True 10infilled_set#=>False #################################################### ##3.控制流程 #################################################### #创建个变量 some_var=5 #以下是一个if语句。缩进在Python是有重要意义的。 #打印"some_varissmallerthan10" ifsome_var>10: print"some_varistotallybiggerthan10." elifsome_var<10: print"some_varissmallerthan10." else: print"some_varisindeed10." """ For循环在列表上迭代 输出: dogisamammal catisamammal mouseisamammal """ foranimalin["dog","cat","mouse"]: #可以使用%来插补格式化字符串 print"%sisamammal"%animal """ while循环直到未满足某个条件。 输出: 0 1 2 3 """ x=0 whilex<4: printx x+=1#x=x+1的一种简写 #使用try/except块来处理异常 #对Python2.6及以上版本有效 try: #使用raise来抛出一个错误 raiseIndexError("Thisisanindexerror") exceptIndexErrorase: pass#pass就是什么都不干。通常这里用来做一些恢复工作 #对于Python2.7及以下版本有效 try: raiseIndexError("Thisisanindexerror") exceptIndexError,e:#没有"as",以逗号替代 pass #################################################### ##4.函数 #################################################### #使用def来创建新函数 defadd(x,y): print"xis%sandyis%s"%(x,y) returnx+y#以一个return语句来返回值 #以参数调用函数 add(5,6)#=>11并输出"xis5andyis6" #另一种调用函数的方式是关键字参数 add(x=5,y=6)#关键字参数可以任意顺序输入 #可定义接受可变数量的位置参数的函数 defvarargs(*args): returnargs varargs(1,2,3)#=>(1,2,3) #也可以定义接受可变数量关键字参数的函数 defkeyword_args(**kwargs): returnkwargs #调用一下该函数看看会发生什么 keyword_args(big="foot",loch="ness")#=>{"big":"foo","loch":"ness"} #也可以一次性接受两种参数 defall_the_args(*args,**kwargs): printargs printkwargs """ all_the_args(1,2,a=3,b=4)输出: [1,2] {"a":3,"b":4} """ #在调用一个函数时也可以使用*和** args=(1,2,3,4) kwargs={"a":3,"b":4} foo(*args)#等价于foo(1,2,3,4) foo(**kwargs)#等价于foo(a=3,b=4) foo(*args,**kwargs)#等价于foo(1,2,3,4,a=3,b=4) #Python的函数是一等函数 defcreate_adder(x): defadder(y): returnx+y returnadder add_10=create_adder(10) add_10(3)#=>13 #也有匿名函数 (lamdax:x>2)(3)#=>True #有一些内置的高阶函数 map(add_10,[1,2,3])#=>[11,12,13] filter(lamdax:x>5,[3,4,5,6,7])#=>[6,7] #可以使用列表推导来实现映射和过滤 [add_10(i)foriin[1,2,3]]#=>[11,13,13] [xforxin[3,4,5,6,7]ifx>5]#=>[6,7] #################################################### ##5.类 #################################################### #创建一个子类继承自object来得到一个类 classHuman(object): #类属性。在该类的所有示例之间共享 species="H.sapiens" #基本初始化构造方法 def__init__(self,name): #将参数赋值给实例的name属性 self.name=name #实例方法。所有示例方法都以self为第一个参数 defsay(self,msg): return"%s:%s"%(self.name,msg) #类方法由所有实例共享 #以调用类为第一个参数进行调用 @classmethod defget_species(cls): returncls.species #静态方法的调用不需要一个类或实例的引用 @staticmethod defgrunt(): return"*grunt*" #实例化一个类 i=Human(name="Ian") printi.say("hi")#输出"Ian:hi" j=Human("Joel") printj.say("hello")#输出"Joel:hello" #调用类方法 i.get_species()#=>"H.sapiens" #修改共享属性 Human.species="H.neanderthalensis" i.get_species()#=>"H.neanderthalensis" j.get_species()#=>"H.neanderthalensis" #调用静态方法 Human.grunt()#=>"*grunt*" {%endhighlight%}