Python讲义——Python是一种纯粹的语言

上传人:hy****d 文档编号:243022322 上传时间:2024-09-14 格式:PPTX 页数:58 大小:296.02KB
返回 下载 相关 举报
Python讲义——Python是一种纯粹的语言_第1页
第1页 / 共58页
Python讲义——Python是一种纯粹的语言_第2页
第2页 / 共58页
Python讲义——Python是一种纯粹的语言_第3页
第3页 / 共58页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Python是一种纯粹的语言,知乎,ID,:灵剑,1,Python的基本语法:表达式运算与名称绑定,名称与绑定:相当于其他语言中的变量与赋值,但略有区别,所有以字母、下划线开头,由字母、下划线、数字组成的非保留字的完整单词都是一个名称,abc,_abc,abc123,表达式:常量、名称和运算的组合,可以计算出一个值,2,Python的基本语法:表达式运算与名称绑定,表达式:值与名称运算的结果,算数表达式:(1 + 2) / 3 + 6,逻辑表达式:(a and b) or (c and d), a if b else c,调用表达式:func(p1, p2),yield表达式:yield value (与生成器有关),名称绑定:将等号右侧的值绑定到左侧的名称符号,绑定一个值:a = 1,绑定表达式运算的结果:a = 1 + 2 - 3,同时绑定多个:a = b = c = 1,解构绑定:(a,b) = (1,2)或a,b = (1,2)或a,b = (1,2),运算的同时重新绑定:a += 1,3,Python的基本语法:行与行的扩展,Python的简单语句,通常是一个绑定语句,或者一个表达式,行尾不需要分号之类的分隔符,Python中,逻辑的行可以与实际的行不同:,Python的每行代码对应一个逻辑行,行太长时,可以由多个实际的行可以组成一个逻辑行:,使用转义换行符:,a = 1 + 2 + ,3 + 4,当Python识别出表达式未完(如括号不匹配)时,会自动扩展下一行,a = myfunc(param1,param2,param3),实际的一行可以用分号分成多个短的逻辑行(通常不推荐),a = 2; func(a),4,绑定(,Python,),vs,赋值(,C,),Python,绑定指向同一个对象,可以看作别名;没有类型限制,a = 1,b = a,a0 = 2,b0 # 2,C,赋值复制了原始的值,复制之后两个值不再关联;有类型限制,struct my_type a = , b;,a.b = 1;,b = a;,a.b = 2;,b.b; / 1,5,重新绑定与解除绑定,已经绑定的符号可以重新绑定到新的值,绑定之后与原来的值的关系解除:,a = 1,2,b = a,a = 2,3,b # 1,2,a0 = 3,b0 # 1,可以用del语句强制解除某个绑定:,a = 1,2,del a,6,特殊绑定,三种语法可以不使用 = 进行绑定,import:,import some_module,:导入模块some_module,绑定到some_module,from some_module import a,b,:导入模块some_module,将some_module.a,some_module.b分别绑定到a,b,import some_module as m,:导入模块some_module,绑定到m,from some_module import a as a1, b as b2,:导入模块some_module,将some_module.a绑定到a1,some_module.b绑定到a2,函数定义:,def my_func(a,b): .,定义函数,并且绑定到my_func,类定义:,class my_class(object): .,定义类,并且绑定到my_class,7,特殊绑,定,特殊绑定除了语法以外,与普通绑定完全等价,def myfunc(a,b):,.,myfunc_alias = myfunc # 可以用于绑定其他名称,myfunc_alias(1,2),myfunc = 3 # 可以重新绑定,del myfunc # 可以解除绑定,8,复合语句,多个语句组成的具有特殊功能的结构,称为复合语句,if . elif . else .,while . else .,for . else .,with .,def .,class .,try . except . else . finally .,复合语句通常在行尾以冒号结束,内部包含的语句范围以缩进标示,因此不需要表示结束的语法,有多个子句的复合语句,每个子句的缩进应当相同,9,特殊语句,少数简单语句既不是赋值也不是表达式,assert,pass,del,print,(Python 2),return,raise,break,continue,import,global,nonlocal (Python 3),exec,10,函数定义,def func(a,b):,.,return .,func(1,2),func(var1, var2),return_value = func(3,4),11,函数定义,函数定义将新定义的函数对象绑定到选定的名称上,函数是一种复合语句:,函数内部的语句在调用时执行,每次调用执行一次,函数有额外的名称:参数,参数名称对应的值,在调用时,由调用者进行绑定,函数可以有返回值,返回值是调用函数的表达式的值,用return语句返回值,没有执行return语句就返回了,或者return后面没有跟表达式的情况下,返回值是None,def add(a,b):,return a + b,12,函数与生成器函数,生成器函数是一种特殊的函数:,使用yield返回多个值,return只能跟空表达式(Python 2) / return可以返回一个值(Python 3),调用生成器函数时,返回一个生成器,实际语句在生成器中执行,详细内容在后面继续,def my_gen():,for i in range(0, 100):,yield i * i,13,参数绑定,调用方有两种绑定参数的方式:,按顺序绑定:从左到右指定的每个参数,绑定到参数列表中从左到右对应的名称上,按名称绑定:使用 name = value的方式,直接指定要绑定的参数,两种方式可以混用,但不可以同时指定同一个参数,参数在函数内可以重新绑定到其他值,解开与调用方传入值的关系,def func(a,b):,.,func(1,2),func(a = 1, b = 2),func(1, b = 2),func(1, 2, a = 3) # 出错,14,默认参数,定义函数时,可以指定参数的默认值,如果调用方未绑定该参数,则使用默认值,可以理解为:在定义函数时已经绑定了该参数的值,如果调用时重新指定则重新绑定该参数到新的值,否则使用旧的绑定,服从绑定的一般规则:所有调用中默认参数绑定的是相同对象,默认参数的绑定在定义时进行,警惕:绑定默认值到可变类型时需要格外注意,def func(v, a = ):,a.append(v),return a,a = func(1) # 1,b = func(1) # 1,1,a # 1,1,默认值必须从后向前指定,不能在有默认值的参数后加没有默认值的参数,15,可变参数,可变参数是特殊的参数绑定方式,def var_func(a, b, *more_args, *more_kw_args):,.,var_func(1,2,3,4, test = 5) # a = 1, b = 2, more_args = (3,4),# more_kwargs = test: 5,如果定义了*args形式的参数,调用时,所有没有匹配到其他参数的多余的位置参数,构成元组,绑定到args,如果定义了*kwargs形式的参数,调用时,所有没有匹配到其他参数的多余的命名参数,构成字典,绑定到kwargs,16,可变参数的相反操作:解构绑定参数,调用时可以使用元组和字典提供参数,def func(a,b):,.,c = (1,2),func(*c) # 等效于:func(1,2),d = a: 1, b: 2,func(*d) # 等效于:func(a = 1, b = 2),17,绑定、解析与作用域,函数内部绑定的名称,作用域局限于函数范围;它与外部的相同名称可以具有不同的值,互不影响;函数的参数也看作函数内部绑定的名称。相同函数每次调用的作用域也是互相独立的。,a = 1,def func():,a = 2,return a,b = func() # 2,a # 1,在绑定之前就使用了相应名称的变量会报错,def func():,b = a # 报错,a = 1,18,绑定、解析与作用域,由于相同名称在不同作用域中可以有不同的值,从名称获取值的过程称为解析,函数内部名称的解析服从以下规则:,如果这一名称在函数内的任意语句中被绑定(包括普通绑定、特殊绑定以及参数绑定),则该名称解析的作用域是当前作用域,否则,该名称将被解析到外部作用域,a = 1,def func():,print a # 1,def func2():,print a #,报错,a = 2,19,绑定、解析与作用域,函数定义时,每个名称是解析到当前作用域还是外部作用域就已经决定,即使绑定语句从未执行,也会在解析时使用当前作用域,a = 2,def func():,print a #,报错,if False:,a = 1,名称解析到具体的值是在运行时进行的,def func():,return a,a = 1,func() # 1,a = 2,func() # 2,del a,func() #,报错,20,嵌套调用与递归,函数内调用其他函数的过程,是首先将要调用的函数名称解析到对应的函数对象,然后执行函数对象,解析函数名称这一步也是在运行时进行的,因此,函数内部可以调用尚未定义的函数,包括自己,def a(n):,return b(n-1) if n else 0,def b(n):,return a(n-1) if n else 1,def c(n):,return c(n-1) + c(n-2) if n 2 else 1,21,作用域嵌套,定义函数是单纯的名称绑定,因此在函数内部也可以定义新的函数,新定义的函数有自己的作用域,同时也继承外层函数的作用域,如果某个名称在最内层作用域中没有被绑定,则会依次寻找外层作用域,如果外层作用域中被绑定,则绑定到外层作用域,否则再寻找更外层作用域,作用域嵌套只与定义时的嵌套关系有关,与调用无关;名称不会解析到调用时的作用域中,def func1(a,b):,def func2():,return a+b,return func2,22,作用域嵌套与闭包,嵌套定义的函数可以将内部名称绑定到外部函数的作用域中,这个绑定在外部函数运行结束后仍然是生效的,这种技术也被称为闭包:新定义的函数中包含了外部函数作用域的一部分,def add_func(a):,def _add(b):,return a + b,return _add,a = add_func(1),a(1) # 2,a(2) # 3,23,作用域嵌套与闭包,注意按照解析规则,解析在函数实际运行时才进行,因此闭包中包含的外部函数作用域中的名称,对应的值随外部函数作用域中该名称绑定的值而变化,def func():,a = 1,def func2():,return a,a = 2,return func2,func()() # 2,24,作用域嵌套与闭包,警惕下面的例子:,def multipliers(n):,funcs = ,for i in range(0,n):,def _func(b):,return i * b,funcs.append(_func),return funcs,ms = multipliers(10),ms2(3) # 27, 9 * 3,,因为在循环结束之后,,i,的值是,9,25,作用域嵌套与闭包,可以利用默认参数绑定的规则(在定义时进行绑定)来改变作用域,从而保存当前的值:,def multipliers(n):,funcs = ,for i in range(0,n):,def _func(b, i = i): #,默认参数保存了当前的,i,的值,,#,同时改变,i,的作用域,return i * b,funcs.append(_func),return funcs,ms = multipliers(10),ms2(3) # 6, 2 * 3,26,global,作用域,最外层的作用域称为全局作用域(,global,),全局作用域其实包含两层:,内置作用域,_builtins_,,包含内置函数、类、常量,一般不修改,只使用,模块级作用域,在函数外执行绑定语句默认绑定到的是模块级作用域,两层作用域同样服从嵌套作用域绑定的规则:,_builtins_.u = 1,print u # 1,u = 2,print u # 2,del u,u = 1,27,global,作用域与,import,模块级作用域对于每个,Python,文件是独立的,在,a.py,中定义的名称不会影响,b.py,如果需要从,a.py,中使用,b.py,中定义的名称,需要使用,import,语句,import,语句会为每个文件创建一个唯一的作用域;多个文件中,import,导入的同名模块保证是相同的作用域,其中的名称保证解析到同一个对象,使用,from . import .,会将模块中指定的名称重新绑定到当前的,global,作用域中,从而与原模块中的相应名称解除联系,函数的,global,作用域是它定义时所属文件(模块)的作用域;即使在其他模块中调用,也不会影响函数内部名称的解析,28,修改作用域绑定行为,可以使用,global / nonlocal(Python 3),来修改名称绑定到的作用域。,global,表明该名称永远绑定到,global,作用域;,nonlocal,表示该名称永远绑定到外层(非,global,)作用域,也就是如果不绑定则将解析到的作用域,a = 1,def func():,global a,a = 2,func(),a # 2,29,与作用域有关的内置方法,globals(),:返回一个字典,代表当前位置的,global,作用域,locals(),:返回一个字典,其中每个,key,对应当前作用域中的一个,key,,值是相应的值。,globals(),返回的字典可以用来修改,global,作用域(即绑定新的值到作用域中),而,locals(),不行,def func(a,b):,print locals(),print globals(),a = 2,func(1,2),30,匿名函数:,lambda,表达式,可以用单行的形式定义一个函数,且不绑定到本地变量而是直接以表达式返回,(lambda x: x * x)(5) # 25,适用一切函数定义的规则,包括作用域嵌套等,只能写单行表达式,相当于在函数中直接,return,这个表达式,适合作为其他函数的参数或保存到列表、字典等情况,31,装饰器(注解),装饰器是特殊的调用函数(或类似函数的对象)的方法,必须用在函数定义或者类定义之前,代表对定义的函数或者类调用首先调用这个方法,然后将返回值绑定到原来的名称上:,def my_dec(func):,print func._name_, defined.,return func,my_dec,def new_func():,print actual run,#,相当于,def new_func():,print actual run,new_func = my_dec(new_func),32,小结,Python,可以运行表达式,也可以将表达式的值绑定到某个名称,普通绑定,特殊绑定,参数绑定,绑定与作用域的规则:,默认绑定到当前作用域,解析名称时,会解析到最近一层绑定了该名称的作用域,global/nonlocal,复合语句与特殊语句,33,面向对象与,Python,对象:内部包含了数据和方法的一类抽象数据结构的总称,Python,中所有常量、表达式运行的结果、名字绑定的值,都是对象,Python,中的对象拥有属性:,使用,.,来获取属性值:,a.attr1, a.attr2,为属性绑定新的值:,a.attr1 = 2,解除属性绑定:,del a.attr1,对象属性相当于一个独立的命名空间,对属性的绑定和解绑与普通名称类似,34,命名空间与作用域区别,作用域:,是隐含的、抽象的;不在名称上体现,除了少数方法以外,不能指定或修改,可以嵌套,除了,global,作用域外,总是关联到一个函数,命名空间:,是显式指定的,需要加上对象前缀:,a.xxx,与运行的位置无关,可以在同一条语句中使用多个命名空间,可以继承(与继承类似),关联到一个对象,联系:,global,作用域与模块的命名空间一致,35,与属性有关的内置方法,getattr(obj, attr),:,获取,obj,的,attr,属性,,attr,是字符串,getattr(obj, attr1),等价于,obj.attr1,setattr(obj, attr, value),:设置,obj,的,attr,属性,,attr,是字符串,setattr(obj, attr1, value),等价于,obj.attr1 = value,delattr(obj, attr),:删除,obj,的,attr,属性,,attr,是字符串,delattr(obj, attr1),等价于,del obj.attr1,dir(obj),:显示,obj,的所有可用的属性名称的列表,36,对象与类,每个对象有一个对应的类,相同类的对象有相似的性质,使用内置函数,type(obj),获取,obj,对应的类,类也是一个对象,例如,整数的类是,int,,列表的类是,list,,,通常调用类可以创建相应类型的对象,类的类是,type,(,type,的类也是,type,),类有继承关系,子类可以继承父类的数据和方法,在,Python,中,实际上是继承了父类的命名空间,任何类都是,object,的子类,使用,issubclass(cls1, cls2),判断某个类是否是另一个类的子类,使用,isinstance(obj, cls),判断对象是否是某个类(包括它的子类)的对象,37,可变类型与不可变类型,字符串、数值、仅包含不可变对象的元组(,dict,)、函数、类是不可变类型,如果两个不可变对象相等,则它们将永远相等,可以用,hash(),计算,hash,值;可以作为字典的,key,;可以放入集合,将名称绑定到不可变对象,则这个名称对应的值永远不会改变,类似于,+=,这样的操作,是计算新的值后重新绑定,列表(,list,)、字典(,dict,)、集合(,set,)、,bytearray,等是可变类型,对象的值可以改变,因此曾经相等的对象可能变得不相等,不可以计算,hash(),或者作为字典的,key,使用;不可以放入集合,将名称绑定到可变对象,则值可能通过其他相同对象的绑定修改,类似于,+=,这样的操作,可能只改变了对象的值,而没有重新绑定,38,内置类型,int/long,常量表示:,1 2 0x1e 0777 (Python 3,:,0o777) 0b11010101,没有大小限制(,Python2,中,超过,32,位范围时会自动转化为,long,):,2 * 1000,使用,int,类可以从字符串或浮点数中构造出整数:,int(12) = 12,,,int(1.9) = 1,内置方法:,(1).bit_length(),等,float,常量表示:,1.0, -.2, 1e15,特殊:,float(inf),,,float(nan),等,范围为双精度数,超过双精度数范围会报错,内置方法:,(1.0).is_integer(),等,39,内置类型,bool,只有两个值:,True,和,False,它是,int,的子类型,,True = 1,,,False = 0,bool(),将其他类型转换为,bool,类型:,False,,,0,(包括,0.0,),,None,,空字符串(, b, u,),空的序列(包括, (), ,等)为,False,自定义类的,_nonzero_,返回等于,False,的值,或没有,_nonzero_,方法但,_len_,方法返回,0,的,其他值为,True,if,等条件语句使用相同的规则,40,字符串,unicode,:,unicode,编码的字符串,常量表示:,uabc,,,uranb (Python 3,中不支持,),多行:,uabc,def,bytes,:,单字节字符串,也用来表示普通二进制数据,相当于,char,常量表示:,babc, branb, btest test2,str,以及不带,ub,前缀的字符串,在,Python2,中为,bytes,,在,Python3,中为,unicode,单引号双引号均可;多个同类型字符串连写会自动拼接(字符串过长需要换行时有用),处理中文等非,ASCII,语言时要注意编码转换,推荐转换为,unicode,41,序列类型,列表(,list,),可变类型,可以通过,append,、,extend,、,remove,等成员方法和,+=,等运算进行修改,可以通过下标操作取对应位置的元素如,my_list1,,也可以取分割的段如,my_list1:5,常量写法:,1,2,3 1 ,list(),可以将其他序列类型转换为列表如,list(1,2,3),元组(,tuple,),不可变类型,,与,list,相同的下标操作,但返回,tuple,类型(而,list,返回,list,类型),常量写法:,(1,2,3),或,1,2,3,(不推荐)单个元素的元组:,(1,),或,1,逗号不能省略 空元组:,(),tuple(),可以将其他序列类型转换为元组,42,序列类型,字典(,dict,),可变类型,代表一组对应关系。,key,必须是不可变类型;,value,可以是任意类型,常量写法:,1:2, abc:3, (4,5):6,7,8,,注意冒号分割了,key,和,value,字典是无序的:,a:1,b:2 = b:2, a:1,字典形式上是,key,的序列,如,list(a:1, b:2),返回,a,b,my_dict.values(),返回值的序列,,my_dict.items(),返回,(key,value),元组的序列,字典的下标操作需要使用,key,:,a:1,b:2a = 1,集合(,set,),可变类型,代表无序的对象的集合。必须放入不可变类型。,常量写法:,1,2,3,(,Python 2.7+,),集合是无序的:,1,2 = 2,1,43,序列类型的通用方法,字符串也是特殊的序列类型,str(bytes, unicode), list, tuple,支持使用下标操作截取(因此没有,substr,方法):,(1,2,3,4)2:3 = (3,) #,下标从,0,开始,包含开头,不包含结束,abc:2 = ab #,省略前或后表示从最前或者到最后,1,2,3: = 1,2,3 #,都省略则返回全部,可以用来复制列表,a4:5 = #,超出范围不会报错,而会忽略超出的部分,abc-1 = c #,负数下标代表从后往前数,,-1,是最后一个,abc-2: = bc,1,2,3,4,5,6,72:6:2 = 3,5 #,可以指定截取的间隔,每两个取一个,1,2,3,4,5:-1 = 5,4,3,2,1 #,截取间隔可以是负数,负数时,省略的意义自动变成最后和最前,44,序列类型的通用方法,序列类型可以使用类型方法相互转换,序列类型都支持,in,操作:,1 in (1,2,3) = True; a in a:1 = True,序列类型都可以使用,for,进行枚举:,for a in (1,2,3):,print a, # 1 2 3,# for,可以进行解构绑定:,for a,b in (1,1),(2,2),(3,3):,print a,b, # 1 1 2 2 3 3,#,字典使用,items(),同时枚举,key,和,value,:,for k,v in a:1,b:2.items():,print k,v, # a 1 b 2,# range(),可以用来产生一个包含区间中所有整数的序列,代替,C,中的,for(;),for i in range(0,5):,print i, # 0 1 2 3 4,45,列表推导,列表推导是生成列表、字典、集合的特殊语法,在其中可以用,for,和,if,构成表达式,x * x for x in range(0,5) = 0, 1, 4, 9, 16,x * 2 for x in range(0,6) if x % 3 = 0 = 0, 6,x : ord(x) for x in abcdefg = ,a: 97, c: 99, b: 98, e: 101, d: 100, g: 103, f: 102 #Python 2.7+,max(x,3) for x in range(0,5) = 3,4 # Python 2.7+,没有元组,(tuple),的推演,但可以用,tuple(.),转换列表推演得到,46,生成器,带有,yield,的函数运行返回生成器对象,这是一种特殊的序列类型,def gen():,for x in range(0,5):,yield x * x,a = gen(),for x in a:,print x, # 0 1 4 9 16,生成器对象在需要时才会计算出相应的值,它会暂停在,yield,的位置,等待取下一个值时再继续运算,yield,是一个表达式,有返回值,通常是,None,可以使用,a.send(1),发送一个非,None,的值,有一些特殊的用法,47,生成器,另一种简短的生成器写法类似于列表推导:,(x for x in range(0,5),注意:使用圆括号;不是元组的推演,而是返回一个生成器对象,用于函数的唯一参数时,有时会省略外面的圆括号,可以用,tuple(x for x in range(0,5),来生成元组,48,函数类型,函数也是对象,特殊属性:,_name_,:定义的函数的名称,_module_,:函数最初被定义的模块,_globals_,:函数的,global,作用域,_doc_,:函数的,docstring,docstring,是函数定义后紧跟着的第一个常量字符串表达式:,def a():,function a,.,#,并不是注释,可以用于,help(),显示,尽量添加,49,模块类型,import,返回的模块也是对象,特殊属性:,_name_,:模块名,如果通过,import,加载则为文件名(不含路径),如果是通过,Python,直接执行的脚本则为,_main_,,可以通过这个方法判断是否需要执行相应动作:,if _name_ = _main_:,.,_package_,:如果模块属于某个,package,(在某个子目录中),则为这个,package,的用,.,分隔的路径:,import a.b.c as c; c._package_ # a.b,_doc_,:与函数一样,如果开头紧跟着字符串常量,则会自动变为,docstring,,可以在,help(),中显示,50,自定义类,使用,class,语句定义自定义的类:,class MyClass(object):,“docstring”,a = 1,def myfunc(self, a):,.,def _init_(self):,.,obj = MyClass(),51,自定义类,自定义类创建了新的类型,调用这个类型会返回该类型的对象,在,class,复合语句中进行的任何绑定操作,都绑定到类的命名空间,成为类的属性或方法,自定义类和类型创建的对象有自己的命名空间;对象的命名空间继承类的命名空间,如果对象的命名空间中没有绑定某个属性名,则使用类的,自定义类可以继承自其他类(包括自定义类和系统类如,int,),所有类最终都继承,object,。如果没有基类应当写,object,(省略会变为旧类,不推荐使用),类的命名空间会继承基类的命名空间,类中没有定义的对象会到基类的命名空间中进行查找,52,自定义类的方法,类的命名空间中通过任意形式绑定的函数对象,会成为类的方法,它的第一个参数代表类的对象,通常使用,self,。在通过对象调用时,,self,会自动使用对象进行绑定,只需要提供后面的其他参数(参考:,descriptor,机制),可以使用装饰器,staticmethod,和,classmethod,修改这个特性,class MyClass(object):,def func1(self, a):,return (self,a),staticmethod,def func2(a):,return (a,),classmethod,def func3(cls, a):,return (cls, a),obj = MyClass(),obj.func1(1); obj.func2(1); obj.func3(1) # (obj, 1); (1,); (MyClass, 1),53,自定义类的属性,自定义类和类的对象的命名空间可以自由绑定新的属性,特殊属性:,_name_,,,_doc_,,,_module_,特殊方法:,_init_,,代表构造函数;调用类的时候,首先构造空的对象,然后调用空对象的,_init_,方法,关于自定义类的更详细的介绍留到以后,54,小结,Python,的一切值(表达式运算的结果,名字绑定的内容)都是对象,有自己的命名空间,对象与类的关系:每个对象都有自己的类;从类中可以创建新的对象,内置类:,int/long float bytes unicode str tuple list dict set,等,序列类型,函数,模块,自定义类,55,编码规范,使用四个空格进行缩进;绝对不使用,tab,使用小写字母和下划线(,under_scored,)命名函数名、变量名(包括参数)和模块;使用首字母大写的组合(,PascalCase,)命名类,下划线开头的函数、变量、类是私有的;双下划线开头(但不以双下划线结尾)的名称,在类当中会自动被改写成其他形式;双下划线开头并且双下划线结尾的是,Python,保留的特殊名称,注意代码可读性,如一行不要过长、合理使用空格和括号等,源文件中有中文(包括注释)等非,ASCII,编码时,需要用,UTF-8,(无,BOM,)编码,在文件开头指定,# coding=utf-8,其他细则参考,PEP8,(搜索),56,学习与利用他人的代码,PyPI,:,开放的,Python,第三方库索引,任何人都可以上传并共享自己的,Python,库,PyPI,中的库可以直接通过,pip,工具安装:,pip install requests,pip,工具的安装和使用可以参考,pip,库的文档,GitHub,Python,系统库:,Linux,下通常在,/usr/lib/python2.7/site-packages/,,大部分使用纯,Python,编写,57,感谢聆听,58,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!