当前位置: 首页 > 后端技术 > Python

Y分钟速成Python2(legacy)

时间:2023-03-26 14:01:50 Python

源码下载:learnpythonlegacy-zh.pyPython由GuidoVanRossum于1990年代初创建。它是目前最流行的语言之一。我喜欢python,因为它的语法非常清晰,你甚至可以说它是可执行的伪代码。欢迎提供反馈,您可以在@louiedinh和louiedinh[at][google的电子邮件服务]找到我在这里找到我注意:本文针对Python2.7,但其中大部分也可以用于其他Python2版本。如果是Python3,请在网上找其他教程#单行注释"""多行字符串可以用三引号包起来,不过这个也可以当作多行注释"""#######################################################1.原始数据类型和运算符########################################################数字类型3#=>3#简单算术1+1#=>28-1#=>710*2#=>2035/5#=>7#整数除法会自动取整为5/2#=>2#做精确除法需要引入浮点数2.0#浮点数11.0/4.0#=>2.75更精确#括号最高priority(1+3)*2#=>8#Boolean也是一种基本数据类型TrueFalse#用not得到notTrue#=>FalsenotFalse#=>True#equal1==1#=>True2==1#=>False#不等于1!=1#=>False2!=1#=>True#更多比较运算符1<10#=>True1>10#=>False2<=2#=>True2>=2#=>True#比较操作可以写在一起!1<2<3#=>True2<3<2#=>False#传递的字符串"或'括起来'Thisisastring.''Thisisalsoastring.'#字符串用加号连接"Hello"+"world!"#=>"Helloworld!"#该字符串可以看做asListofcharacters"Thisisastring"[0]#=>'T'#%可以用来格式化字符串"%scanbe%s"%("strings","interpolated")#也可以使用format格式化字符串的方法#推荐这种方法"{0}canbe{1}".format("strings","formatted")#也可以用变量名代替数字"{name}wantstoeat{food}".format(name="Bob",food="lasagna")#None是对象None#=>None#不要用等号`==`和None比较#使用`is`"etc"isNone#=>FalseNoneisNone#=>True#'is'可用于比较对象是否相等#这个运算符在比较原始数据时不是很有用,但在比较对象时必不可少#None,0,andnullcharacters字符串算作False#其他都是True0==False#=>True""==False#=>True########################################################2.变量和集合#########################################################非常方便的输出打印"I'mPython.很高兴见到你!”#给变量赋值前不需要声明some_var=5#一般建议使用小写字母和下划线的组合作为变量名some_var#=>5#访问未赋值的变量会抛出异常#可以请参阅控制流部分以了解如何处理异常some_other_var#ThrowNameError#if语句可用作表达式“yahoo!”if3>2else2#=>"yahoo!"#列表用来保存序列li=[]#可以直接初始化列表other_li=[4,5,6]#在末尾添加元素listli.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]#删除列表的末尾li.pop()#=>3li现在是[1,2,4]#再次添加li.append(3)#li现在又是[1,2,4,3]。#像其他语言一样访问列表accessarraysli[0]#=>1#访问最后一个元素li[-1]#=>3#越界会抛出异常li[4]#抛出越界异常#切片语法需要使用list的索引访问#数学上可以看做左闭右开区间li[1:3]#=>[2,4]#省略第一个元素li[2:]#=>[4,3]#省略最后一个元素li[:3]#=>[1,2,4]#删除特定元素delli[2]#li现在是[1,2,3]#合并列表li+other_li#=>[1,2,3,4,5,6]-不改变两个列表#通过拼接合并列表li.extend(other_li)#liis[1,2,3,4,5,6]#用于返回元素是否在列表中1inli#=>True#返回的长度thelistlen(li)#=>6#一个元组就像一个列表,但它是一个不可变的元组=(1,2,3)tup[0]#=>1tup[0]=3#类型错误#对于大多数列表操作,也适用于元组len(tup)#=>3tup+(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"]#key的顺序不唯一,顺序不一定是顺序#保存列表中所有的值filled_dict.values()#=>[3,2,1]#和keys一样的顺序#判断一个key在filled_dict中是否存在"one"#=>True1infilled_dict#=>False#查询不存在的key会抛出KeyErrorfilled_dict["four"]#KeyError#使用get方法避免KeyErrorfilled_dict.get("one")#=>1filled_dict.get("four")#=>None#get方法支持在filled_dict.ge不存在时返回一个默认值t("one",4)#=>1filled_dict.get("four",4)#=>4#setdefault是一种更安全的添加字典元素的方式filled_dict.setdefault("five",5)#filled_dict[的值of"five"]is5filled_dict.setdefault("five",6)#filled_dict["five"]的值仍然是5#Set存储无序元素empty_set=set()#初始化一个setsome_set=set([1,2,2,3,4])#some_setisnowset([1,2,3,4])#Python2.7之后,大括号可以用来表示集合filled_set={1,2,2,3,4}#=>{1234}#添加元素到集合filled_set.add(5)#filled_set现在是{1,2,3,4,5}#使用&计算集合的交集other_set={3,4,5,6}filled_set&other_set#=>{3,4,5}#使用|计算集合的并集other_set#=>{1,2,3,4,5,6}#使用-计算集合{1,2,3,4}-{2,3,5}的差值=>{1,4}#使用in判断元素是否存在于set2infilled_set#=>True10infilled_set#=>False########################################################3.控制流程#######################################################创建一个新变量some_var=5#这是一个if语句,缩进在python中很重要#如果some_var>10,以下代码片段将输出“somevarissmallerthan10”:print“some_varistotallybiggerthan10.”elifsome_var<10:#这个elif语句不需要print"some_varissmallerthan10."else:#这个else不需要print"some_varindeed10.""""使用for循环遍历list输出:dogisamammalcatisamammalmouseisamammal"""foranimalin["dog","cat","mouse"]:#你可以用%格式化字符串print"%sisamammal"%animal"""`range(number)`返回从0到给定数字的列表输出:0123"""foriinrange(4):printi"""while循环输出:0123"""x=0whilex<4:printxx+=1#x=x+1的简写#使用try/except块处理异常#Python2.6及以上版本适用:try:#使用raise抛出异常raiseIndexError("Thisisanindexerror")exceptIndexErrorase:pass#pass是一切否,但通常是一些恢复工作#####################################################4.函数########################################################使用def创建一个新函数defadd(x,y):print"xis%sandyis%s"%(x,y)returnx+y#通过return返回值#调用函数add(5,6)带参数#=>输出"xis5andyis6"return11#callthefunctionadd(y=6,x=5)通过关键字赋值#Orderdon'tmatter#我们也可以定义按顺序接受多个变量的函数defvarargs(*args):returnargsvarargs(1,2,3)#=>(1,2,3)#我们也可以定义接受多个变量的函数,按关键字排列defkeyword_args(**kwargs):returnkwargs#实际效果:keyword_args(big="foot",loch="ness")#=>{"big":"foot","loch":"ness"}#也可以同时定义两种形式的函数defall_the_args(*args,**kwargs):printargsprintkwargs"""all_the_args(1,2,a=3,b=4)prints:(1,2){"a":3,"b":4}"""#当调用ng函数,我们也可以进行相反的操作,将元组和字典展开成参数args=(1,2,3,4)kwargs={"a":3,"b":4}all_the_args(*args)#相当于foo(1,2,3,4)all_the_args(**kwargs)#相当于foo(a=3,b=4)all_the_args(*args,**kwargs)#等值foo(1,2,3,4,a=3,b=4)#函数在python中是一等公民defcreate_adder(x):defadder(y):returnx+yreturnadderadd_10=create_adder(10)add_10(3)#=>13#匿名函数(lambdax:x>2)(3)#=>True#内置高阶函数map(add_10,[1,2,3])#=>[11,12,13]filter(lambdax:x>5,[3,4,5,6,7])#=>[6,7]#你可以使用列表方法更巧妙地引用高阶函数[add_10(i)foriin[1,2,3]]#=>[11,12,13][xforxin[3,4,5,6,7]ifx>5]#=>[6,7]########################################################5.类#####################################################我们的新类是类Human(object),继承自对象类:#类属性,类的所有对象共享species="H.sapiens"#基本构造函数def__init__(self,name):#给对象成员属性赋参数self.name=name#成员方法,参数必须有selfdefsay(self,msg):return"%s:%s"%(self.name,msg)#类方法为所有类的对象共享#当调用此类方法时,会将类本身传递给第一个参数@classmethoddefget_species(cls):returncls.species#静态方法不需要类和objects可以通过引用调用的方法@staticmethoddefgrunt():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*"######################################################6.模块########################################################我们可以导入其他模块importmathprintmath.sqrt(16)#=>4.0#我们还可以从mathimp的模块中导入特定的函数ortceil,floorprintceil(3.7)#=>4.0printfloor(3.7)#=>3.0#从模块导入所有函数#警告:f已弃用rommathimport*#速记模块名称importmathasmmath.sqrt(16)==m.sqrt(16)#=>True#Python模块实际上只是普通的python文件#你也可以创建自己的模块并导入它们#模块的名字和文件的名字一样#你也可以通过下面的方法查看模块中的属性和方法importmathdir(math)readmore想了解更多?尝试以下链接:艰难地学习Python深入Python官方文档Python漫游指南本周Python模块有什么建议吗?还是发现了什么不对?在Github上打开一个问题,或者发起一个pullrequest!原文由LouieDinh撰写,由0位好心人修改?2022LouieDinh翻译:ChenboLi本作品采用CCBY-SA3.0许可协议授权。