python讲义01基础知识.ppt
Python课程教师信息:张端,计算机学院,赵傲,计算机学院,助教,第1章基础知识,主 要 内 容,Python是一种怎样的语言如何选择Python版本Python安装与简单使用Python基础知识Python代码规范Python文件名Python脚本的“_name_”编写自己的包与模块Python快速入门,3,1.0 Python是一种怎样的语言,计算机(Computer)的概念根据指令操作数据的机器计算机功能:指对数据的操作,表现为数据计算、输入输出处理和结果存储等必须告知计算机如何操作,计算机才会完成计算 计算机程序:为了完成某项任务,解决某个问题由计算机执行的一系列指令(步骤),4,1.0 Python是一种怎样的语言,程序设计语言的历史 机器语言:二进制代码表示的一种机器指令的集合 汇编语言:在机器语言上增加了人类可读的助记符 高级语言:向自然语言靠近的语言,5,1.0 Python是一种怎样的语言,6,Python由“龟叔”Guido van Rossum在1989创建,1.0 Python是一种怎样的语言,Python的要求:1994年,Python 12000年,Python 22008年,Python 3(本课程使用)更高级别的3.0系列不兼容早期2.0系列2011年1月,TIOBE将Python评为编程语言排行榜2010年度语言2017年7月,IEEE Spectrum编程语言排行榜中Python直接上升到了第1位Python 3.x系列已经开始全面普及,成为一种必然的趋势,7,1.0 Python是一种怎样的语言,Python是一门跨平台、开源、免费的解释型高级动态编程语言伪编译,Python源程序转换为字节码,Jythonpy2exe工具将Python程序转换为扩展名为“.exe”的可执行程序Python支持命令式编程函数式编程面向对象编程支持各领域的扩展库Python为“胶水”语言,与不同语言编写的程序无缝拼接优点:明确,简单,优雅,减轻构思性脑力劳动;缺点:慢,略提高记忆性脑力劳动在科学计算、大数据、人工智能等领域应用越来越广泛,8,1.0 Python是一种怎样的语言,9,1.0 Python是一种怎样的语言,10,1.0 Python是一种怎样的语言,如何学习Python,对过程的要求:根据Python的特点,注重记忆和理解系统学习和点滴学习并重,前半学期更注重后者PPT上红色部分代表第一次出现的、难点、重点课后必须将书本或者PPT看3遍,第一遍理解第二遍浓缩,PPT上的红色部分第三遍记忆独立完成作业和实验,熟练掌握重要示例至考前书本或者PPT阅读次数必须达到6遍以上,11,1.1 如何选择Python版本,安装好Python以后,在“开始”菜单中启动“IDLE(Python GUI)”即可启动Python解释器并可以看到当前安装的Python版本号。如果您喜欢的话,也可以启动“Python(command line)”来开始美妙的Python之旅。在“IDLE(Python GUI)”和“Python(command line)”两种界面中,都以三个大于号“”作为提示符,在提示符后面输入要执行的语句。,12,1.1 如何选择Python版本,2.x:一边鄙视一边用3.x:必然的趋势,本课程主要对象多版本共存与切换简便方法:更改系统环境变量path查看已安装版本的方法(在所启动的IDLE界面也可以直接看到):import sys sys.version sys.version_info,13,1.1 如何选择Python版本,如安装多个不同的版本,例如同时安装Python 2.7.8和Python 3.4.2,并根据不同的开发需求在两个版本之间进行切换。只需要启动相应版本的IDLE即可。在命令提示符环境中运行Python程序时在调用Python主程序时指定其完整路径修改系统Path变量来实现不同版本之间的切换,14,1.2 Python安装与简单使用,1.打开Python官网,如下图选择,15,1.2 Python安装与简单使用,2.下载exe后缀的可执行文件,根据自己系统选择32位或64位,16,1.2 Python安装与简单使用,3.执行下载的安装文件,选择Customize installation,17,1.2 Python安装与简单使用,4.选择Next,18,1.2 Python安装与简单使用,5.修改安装地址,选择Install,19,1.2 Python安装与简单使用,6.验证是否环境变量是否设置,按win+R,输入cmd,键入python,出席python版本号说明环境变量设置成功。,20,1.2 Python安装与简单使用,7.否则在控制面板-系统-高级系统设置-环境变量设置-系统变量中的Path项加上Python安装目录。,21,1.2 Python安装与简单使用,安装好以后,默认以IDLE为开发环境,当然也可以安装使用其他的开发环境,例如PythonWin。以IDLE为例,使用交互式编程模式,IDLE提示符“”回车,看执行结果,执行出错否抛出异常。3+58 import math math.sqrt(9)3.0 3*(2+6)24 2/0Traceback(most recent call last):File,line 1,in 2/0ZeroDivisionError:integer division or modulo by zero,22,1.2 Python安装与简单使用,23,1.2 Python安装与简单使用,第一个程序Hello World第一种方式:shell方式或者交互方式在IDLE界面中提示符之后键入代码输入代码print(Hello World)#代码 Hello World#输出#1.函数print(Hello world)在显示器上打印()中的内容#2.Hello world为字符串,引号不能少#3.引号 和括号(),必须是英文符号,24,1.2 Python安装与简单使用,第一个程序Hello World第二种方式:文件方式在IDLE界面中使用菜单“File”=“New File”创建一个程序文件输入代码并保存为文件,务必要保证扩展名为“.py”,如果是GUI程序可以保存为“.pyw”文件。菜单“Run”=“Check Module”来检查程序中是否存在语法错误菜单“Run”=“Run Module”运行程序,程序运行结果将直接显示在IDLE交互界面上。执行上述两项操作时系统会要求先保存文件假设有程序HelloWorld.py内容如下:print(Hello world),25,1.2 Python安装与简单使用,26,1.2 Python安装与简单使用,27,1.2 Python安装与简单使用,关于执行的补充:也可以通过在资源管理器中双击扩展名为“.py”或“.pyc”的Python程序文件直接运行;可命令提示符环境中运行Python程序文件,按win+R,键入cmd,回车,转至HelloWorld.py所在目录,键入python HelloWorld.py;,28,1.2 Python安装与简单使用,在实际开发中,如果您能够熟练使用集成开发环境IDLE提供的一些快捷键,将会大幅度提高您的编写速度和开发效率。在IDLE环境下,除了撤销(Ctrl+Z)、全选(Ctrl+A)、复制(Ctrl+C)、粘贴(Ctrl+V)、剪切(Ctrl+X)等常规快捷键之外,其他比较常用的快捷键如下表所示。,29,1.2 Python安装与简单使用,其他常用集成开发环境IDLE:Anaconda(https:/PyCharm,30,1.2 Python安装与简单使用,Anaconda中的Spyder,31,1.2 Python安装与简单使用,作业回顾Python历史,课外阅读Python简史http:/本地电脑上安装Python环境,手机上请在应用市场找到并安装QPython3 APP上机编写第一个示例程序 Hello World,尝试将print函数拼写错误等,查看输出结果,32,1.3*使用pip管理第三方包,Python3安装包默认包含pip,或在 下载get-pip.py文件安装方法:win+R,cmd=python get-pip.py用法示例pip install NumPy#安装Numpy包pip list#列出已安装包pip install-upgrade SomePackage#升级SomePackage包pip uninstall SomePackage#卸载SomePackage包,33,1.4 Python基础知识,对象模型基本数据类型变量运算符与表达式内置函数,34,1.4.1 Python的对象模型,概念引入:值和类型值(Value):程序操作的最基本的东西,字母,或者数字类型(Type):数据从不同角度看有不同的含义使用type()查看类型 type(2)#整数 type(20.0)#浮点数 type(Hello World!)#字符串,35,1.4.1 Python的对象模型,对象是python语言中最基本的概念,在python中处理的均为对象。内置对象 可供编程者使用,内置对象可直接使用,如数字、字符串、列表、del等;非内置对象 需要导入模块才能使用,如正弦函数sin(x),随机数产生函数random()等。,36,1.4.1 Python的对象模型,常用内置对象,37,1.4.2 Python变量,在Python中有:常量(Literal Constants):值不发生改变的元素,这里的值用的就是字面意义上的值或者内容。例:5、1.23、这是一串文本、This is a string“变量(Variable):就是某个值的标签,38,1.4.2 Python变量,39,1.4.2 Python变量,在Python中,不需要事先声明变量名及其类型(方便,函数声明等场合也会有麻烦),直接赋值即可创建各种类型的对象变量。例如语句 x=3 创建了整型变量x,并赋值为3,3是常量,x是变量 x=Hello world.创建了字符串变量x,并赋值为Hello world.。这一点适用于Python任意类型的对象。注意:Python解释器会根据赋值或运算来自动推断变量类型。Python仍属于强类型编程语言,40,1.4.2 Python变量,使用变量时需要程序员确定所进行的运算是否合适,避免出现异常。同一个运算符对于不同类型数据操作的含义和计算结果也是不一样的。Python还是一种动态类型语言,变量的类型是可以随时变化的。x=3 print(type(x)#type()返回变量类型 x=Hello world.print(type(x)x=1,2,3 print(type(x)isinstance(3,int)#isinstance()用来测试对象是否为指定类型True isinstance(Hello world,str)True,41,1.4.2 Python变量,变量出现在赋值符或复合赋值运算符(例如+=、*=等等)左边表示创建变量或修改变量的值,在右边表示引用变量的值。这一点同样适用于使用下标来访问列表、字典等可变序列以及其他自定义对象中元素的情况。x=3#创建整型变量 print(x*2)9 x+=6#修改变量值,效果上相当于 x=x+6 print(x)#读取变量值并输出显示9 x=1,2,3#创建列表对象 print(x)1,2,3 x1=5#修改列表元素值 print(x)#输出显示整个列表1,5,3 print(x2)#输出显示列表指定元素3,42,1.4.2 Python变量,字符串和元组属于不可变序列,不能通过下标来修改其中的元素值。x=(1,2,3)print(x)(1,2,3)x1=5#不能修改元组,出错。Traceback(most recent call last):File,line 1,in x1=5TypeError:tuple object does not support item assignment,43,1.4.2 Python变量,允许多个变量指向同一个值:x=3 id(x)#获取x的内存地址1786684560 y=x id(y)1786684560为其中一个变量修改值以后,此变量内存地址将会变化:x+=6 id(x)1786684752 y3 id(y)1786684560,44,1.4.2 Python变量,Python采用的是基于值的内存管理方式:如多个变量赋值相同,该值在内存中只有一份,多个变量指向同一块内存地址:x=3 id(x)10417624 y=3 id(y)10417624 y=5 id(y)10417600 id(x)10417624对于没有任何变量指向的值,Python自动将其删除,程序员一般情况下不需要太多考虑内存管理的问题。显式使用del命令删除不需要的值或显式关闭不再需要访问的资源,仍是一个好的习惯。,45,1.4.2 Python变量,变量名定义基本规则:变量名必须以字母或下划线开头,但以下划线开头的变量在Python中有特殊含义;变量名中不能有空格以及标点符号(括号、引号、逗号、斜线、反斜线、冒号、句号、问号等等);不能使用关键字作变量名,可以导入keyword模块后使用print(keyword.kwlist)查看所有Python关键字;import keyword keyword.kwlistand,as,assert,break,class,continue,def,del,elif,else,except,exec,finally,for,from,global,if,import,in,is,lambda,not,or,pass,print,raise,return,try,while,with,yield and=3SyntaxError:invalid syntax不建议使用系统内置对象名称,如模块名、类型名或函数名以及已导入的模块名及其成员名作变量名,这将会改变其类型和含义,可以通过dir(_builtins_)查看所有内置模块、类型和函数;变量名对英文字母的大小写敏感,例如student和Student是不同的变量。,46,1.4.3 数字,数字是python中最常用的对象,属于不可变对象。可以表示任意大小的数字。a=99999999999999999999999999999999 a*a9999999999999999999999999999999800000000000000000000000000000001L a*3999999999999999999999999999999970000000000000000000000000000000299999999999999999999999999999999L,47,1.4.3 数字,整数:十进制整数如,0、-1、9、123十六进制整数,需要16个数字0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f来表示整数,必须以0 x开头,如0 x10、0 xfa、0 xabcdef八进制整数,只需要8个数字0、1、2、3、4、5、6、7来表示整数,必须以0o开头,如0o35、0o11二进制整数、只需要2个数字0、1来表示整数,必须以0b开头如,0b101、0b100,48,1.4.3 数字,浮点数又称小数,15.0、0.37、-11.2、1.2e2、314.15e-2 1.这里e改为E,效果完全相同;浮点数5.0与整数5不同 2.一个浮点数a由两个数m和x来表示:a=m bx。3.m是定点小数,x是定点整数,m(即尾数)是形如d.ddd.ddd的p位数 4.python中浮点数精度有限,49,1.4.3 数字,复数:a=3+4j b=5+6j c=a+b c(8+10j)c.real#查看复数实部8.0 c.imag#查看复数虚部10.0 a.conjugate()#返回共轭复数(3-4j)a*b#复数乘法(-9+38j)a/b#复数除法(0.6393442622950819+0.03278688524590165j),50,1.4.4 字符串,用单引号、双引号或三引号括起来的符号系列称为字符串单引号、双引号、三单引号、三双引号可以互相嵌套,用来表示复杂字符串。abc、123、中国、Python字符串属于不可变序列空串表示为或 或或三引号或表示的字符串可以换行,支持排版较为复杂的字符串;三引号还可以在程序中表示较长的注释。,51,1.4.4 字符串,1.字符串合并 a=abc+123#生成新对象2.字符串格式化,即把对象按格式要求转换为字符串。a=3.6674%7.3f%a 3.667%d:%c%(65,65)65:A My name is%s,and my age is%d%(Dong Fuguo,38)My name is Dong Fuguo,and my age is 383.转义字符n:换行符 t:制表符 r:回车:单引号”:双引号:一个ddd:3位八进制数对应的字符xhh:2位十六进制数对应的字符 字符串界定符(引号)前面加字母r表示原始字符串,其中的特殊字符不进行转义,但字符串的最后一个字符不能是。,52,1.4.5 操作符和表达式,53,1.4.5 操作符和表达式,Python中的除法有“/”和“/”分别表示除法和整除运算。Python 3.x将其解释为真除法(无论任何类型都会保持小数部分)。例如:3/5#除法0.6#除法的结果为浮点数,例10/2结果为5.0 3/50 3.0/50.6 3.0/50.0 13/101-13/10#结果向下取整,也称“地板除”-2,54,1.4.5 操作符和表达式,运算符是“%”。字符串格式化用法对整数和浮点数计算余数。因精度影响,浮点数计算结果可能略有误差。3.1%21.1 6.3%2.12.0999999999999996 6%20,55,6.0%20.0 6.0%2.00.0 5.7%4.80.9000000000000004,较复杂运算举例:,1.4.5 操作符和表达式,Python中很多运算符有多重含义,具体含义取决于操作数的类型。例如“*”运算符:,56,3*2#整数相乘6 2.0*3#浮点数与整数相乘6.0(3+4j)*2#复数与整数相乘(6+8j)(3+4j)*(3-4j)#复数与复数相乘(25+0j),1*5#字符串重复11111 a*10#字符串重复aaaaaaaaaa 1,2,3*3#列表重复1,2,3,1,2,3,1,2,3(1,2,3)*3#元组重复(1,2,3,1,2,3,1,2,3)3*a#字符串重复aaa,列表:例如 8,7,5,3 或 ad,bnc,列表内容可改变,元组:例如(8,7,5,3)或(ad,bnc),元组内容不可改变,1.4.5 操作符和表达式,在Python中的合法表达式:1 单个任何类型的对象或常数;2 使用运算符连接的变量和常量以及函数调用的任意组合。a=1,2,3 b=4,5,6 c=a+b c1,2,3,4,5,6 d=map(str,c)d1,2,3,4,5,6 import math map(math.sin,c)Hello+worldHello world welcome*3welcome welcome welcome(welcome,*3).rstrip(,)+!welcome,welcome,welcome!,57,1.4.5 操作符和表达式,在Python中逗号“,”并不是运算符,而只是一个普通分隔符:a in b,a(False,a)a in(b,a)True x=3,5 x(3,5)3=3,5(True,5)x=3+5,7 x(8,7),58,1.4.6 常用内置函数,内置函数:内置函数不需要导入任何模块即可使用执行下面的命令可以列出所有内置函数 dir(_builtins_),59,1.4.6 常用内置函数,60,1.4.6 常用内置函数,61,1.4.6 常用内置函数,62,1.4.6 常用内置函数,ord()用来返回单个字符的序数或ASCII码chr()用来返回介于0到255之间的某序数对应的字符str()用来返回任意类型参数转换为字符串,63,ord(a)97 ord(A)65 chr(65)A chr(67)C chr(ord(A)+1)B,str(1)1 str(1234)1234 str(1,2,3)1,2,3 str(1,2,3)(1,2,3)str(1,2,3)1,2,3,1.4.6 常用内置函数,id(obj)用来返回obj对象内存地址type(obj)用来对象obj对象类型Isinstance(obj,class)用来判断obj对象是否是class类型len(obj)用来返回对象obj元素个数range()此函数在下章详细介绍,本章只要求掌握最简单的用法,64,a=5 id(a)1848574544 type(a)isinstance(a,str)False isinstance(a,int)True,b=range(6)#返回0开始到6之前整数的序列 list(b)0,1,2,3,4,5 len(b)6 len(abc)3,1.4.6 常用内置函数,abs():取模(绝对值)pow(x,y):x的y次方,等价于x*yround(x,小数位数):标准圆整,不给出小数位数返回整数,功能非常接近于四舍五入,65,abs(-5)5 abs(1+1j)pow(2,3)8 pow(2,-3)0.125,round(5.923)6 round(-5.923)-6 round(21.5,-1)20.0,round(1.55,1)1.6 round(2.55,1)2.5 round(2.550000001,1)2.6,1.4.6 常用内置函数,max()、min()、sum()这三个内置函数分别用于计算列表、元组或其他可迭代对象中所有元素最大值、最小值以及所有元素之和,sum()只支持数值型元素的序列或可迭代对象,max()和min()则要求序列或可迭代对象中的元素之间可比较大小。例如下面的示例代码,首先使用,然后分别计算该列表的最大值、最小值和所有元素之和。import random a=for i in range(10):a=a+random.randint(1,100)a26,31,21,22,20,86,53,8,96,54 print(min(a),max(a),sum(a),sum(a)/len(a)8 96 417 41.7,66,random是Python库,import random作用是引入该库,引入后才能使用该库中的对象。,random.randint()随机生一个整数int类型,并指定这个整数的上限和下限值,上下限的值均可取。,random.random()函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围在0.01.0之间 random.random(),1.4.6 常用内置函数,int()、float()、complex()、str()这4个内置函数将其他类型强制转换为整数、浮点数、复数和字符串,如果不能转换这出错。,67,int(2.1)#向下取整2 int(2.9)2 int(86)86 int(86.9)#错误 float(80)80.0 float(80)80.0,str(2)2 str(2.1)2.1 complex(3.5)(3.5+0j),1.4.6 常用内置函数,两个帮助编程的内置函数:dir()函数可以查看指定模块中包含的所有成员或者指定对象类型所支持的操作help()函数则返回指定模块或函数的说明文档。,68,1.4.7 对象的删除,在Python中具有自动内存管理功能或者垃圾回收机制,Python解释器会跟踪所有的值,一旦发现某个值不再有任何变量指向,将会自动删除该值。显式释放自己申请的资源是程序员的好习惯之一,也是程序员素养的重要体现之一。在Python中,del命令来显式删除对象并解除与值之间的指向关系。删除对象时,如果其指向的值还有别的变量指向则不删除该值。如果删除对象后该值不再有其他变量指向,则删除该值。,69,1.4.7 对象的删除,x=1,2,3,4,5,6 y=3 z=y print(y)3 del y#删除对象 print(y)Traceback(most recent call last):File,line 1,in print(y)NameError:name y is not defined print(z)3 del z,70,print(z)Traceback(most recent call last):File,line 1,in print(z)NameError:name z is not defined del x1#删除列表中指定元素 print(x)1,3,4,5,6 del x#删除整个列表 print(x)Traceback(most recent call last):File,line 1,in print(x)NameError:name x is not defined,1.4.7 对象的删除,del命令无法删除元组或字符串中的指定元素,而只可以删除整个元组或字符串,因为这两者均属于不可变序列。x=(1,2,3)del x1#错误Traceback(most recent call last):File,line 1,in del x1TypeError:tuple object doesnt support item deletion del x#可删除 print(x)Traceback(most recent call last):File,line 1,in print(x)NameError:name x is not defined,71,1.4.8 基本输入输出,用Python中输入:通过input()函数来实现的,该函数返回输入的字符串,imput()的一般格式为:x=input(提示:)Python 3.x中输出:使用print()函数 print(xxx,xxx,xxx)中的“,”将打成空格,72,1.4.8 基本输入输出,在Python 3.x中,不论用户输入数据时使用什么界定符,input()函数的返回结果都是字符串,需要将其转换为相应的类型再处理。,73,x=input(Please input:)Please input:3 print(type(x)x=input(Please input:)Please input:1 print(type(x)x=int(input(Please input:)print(type(x)x=input(Please input:)Please input:1,2,3 print(type(x)#?如何转换,1.4.8 基本输入输出,print()函数基本输出的几个参数:设置sep参数,作为数据间隔符:print(1,2,3,sep=:)1:2:3设置file参数,将重定向到文件:fp=open(r D:mytest.txt,a+)#打开文件,a追加模式,+读写模式 print(Hello,world!,file=fp)fp.close()设置end参数,实现输出内容之后不换行:for i in range(10):print(i,end=)0 1 2 3 4 5 6 7 8 9,74,1.4.9 模块的使用,在Python中,一个.py文件就称之为一个模块(Module)使用模块有什么好处?提高了代码的可维护性可引用其他模块,减轻工作量,包括Python内置模块和第三方模块避免函数名和变量名冲突不同的人编写的模块名相同怎么办?解决方法:引入包,包中含模块和下级包(子包),包相当与文件夹或目录。只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突,75,1.4.9 模块的使用,Python默认安装仅包含部分基本或核心模块,但用户可以安装的扩展模块,pip是管理模块的重要工具。在Python启动时,仅加载了很少的一部分模块,在需要时由程序员显式地加载(可能需要先安装)其他模块。可以使用import sys;sys.modules.items()显示所有预加载模块的相关信息。,76,1.4.9 模块的使用,import 模块名import mathmath.sin(0.5)#求0.5的正弦import randomx=random.random()#获得0,1)内的随机小数y=random.random()n=random.randint(1,100)#获得1,100上的随机整数可以使用dir()函数查看任意模块中所有的对象列表(如import math;dir(math),如果调用不带参数的dir()函数,则返回当前脚本的所有名字列表。可以使用help函数查看任意模块或函数的使用帮助。,77,1.4.9 模块的使用,from 模块名 import 对象名 as 别名,可以减少查询次数,提高执行速度from math import*#谨慎使用 from math import sin sin(3)from math import sin as f#别名 f(3),78,1.4.9 模块的使用,数学库(math)的使用,库中常用数学常数和函数,79,1.4.9 模块的使用,数学库示例#导入数学库 import math#查看圆周率常数 math.pi#求x的y次方pow(x,y)math.pow(math.pi,2)9.869604401089358#边长为8.3和10.58,两边夹角为37度的三角形面积计算 8.3*10.58*math.sin(37.0/180*3.1416)/226.423945174044125 from math import sqrt#引入数学库中的sqrt函数 sqrt(16)4.0 from math import*#引入数学库中所有的函数 sqrt(16)4.0,80,1.4.9 模块的使用,在3.x中重新导入需要使用imp模块的reload函数,例如当对xyz模块进行了修改后:fromimpimportreloadreload(xyz)Python首先在当前目录中查找需要导入的模块文件,如果没有找到则从sys模块的path变量所指定的目录中查找。可以使用sys模块的path变量查看python导入模块时搜索模块的路径,也可以向其中append自定义的目录以扩展搜索路径。import syssys.path.append(/Users/michael/my_py_scripts)在导入模块时,会优先导入相应的pyc文件,如果相应的pyc文件与py文件时间不相符,则导入py文件并重新编译该模块。,81,1.5 Python代码规范,(1)缩进类定义、函数定义、选择结构、循环结构,行尾的冒号表示缩进的开始 python程序是依靠代码块的缩进来体现代码之间的逻辑关系的,缩进结束就表示一个代码块结束了。同一个级别的代码块的缩进量必须相同。一般而言,以4个空格为基本缩进单位,可以通过下面的方法进行代码块的缩进和反缩进:FortmatIndent Region/Dedent Region,82,1.5 Python代码规范,(2)注释 一个好的、可读性强的程序一般包含30%以上的注释。常用的注释方式主要有两种:单行注释:以#开始,表示本行#之后的内容为注释多行注释:包含在一对三引号.或.之间且不属于任何语句的内容将被解释器认为是注释 在IDLE开发环境中,可以通过下面的操作快速注释(Alt+3)/解除注释(Alt+4)大段内容:FormatComment Out Region/Uncomment Region,83,1.5 Python代码规范,(3)每个import只导入一个模块(4)如果一行语句太长,可以在行尾加上来换行分成多行,之后不能有任何其他符号,包括空格和注释。a=1+2+3+4+5+6+7+8+9+10 a55(5)必要的空格与空行运算符两侧、函数参数之间、逗号两侧建议使用空格分开。不同功能的代码块之间、不同的函数定义之间建议增加一个空行以增加可读性。(6)适当使用异常处理结构进行容错,后面将详细讲解。(7)软件应具有较强的可测试性,测试与开发齐头并进。,84,1.6 Python文件名,.py:Python源文件,由Python解释器负责解释执行。.pyw:Python源文件,常用于图形界面程序文件。.pyc:Python字节码文件,源文件经过编译而来,用于隐藏Python源代码和提高载入和运行速度。对于Python模块,第一次被导入时将被编译成字节码的形式,并在以后再次导入时优先使用“.pyc”文件,以提高模块的加载和运行速度。对于非模块文件,直接执行时并不生成“.pyc”文件,但可以使用py_compile模块的compile()函数进行编译以提高加载和运行速度。另外,Python还提供了compileall模块,其中包含compile_dir()、compile_file()和compile_path()等方法,用来支持批量Python源程序文件的编译。.pyo:优化的Python字节码文件,同样无法使用文本编辑器直接查看其内容。可以使用“python O-m py_compile file.py”或“python OO-m py_compile file.py”进行优化编译。.pyd:一般是由其他语言编写并编译的二进制文件,常用于实现某些软件工具的Python编程接口插件或Python动态链接库。,85,1.7*Python脚本的“_name_”,每个.py脚本为一个模块,此模块有两种运行方式:第一种,模块本身直接运行第二种,被其他模块调用运行为区别这两种情况,在运行时解释器设置“_name_”属性:第一种,“_name_”属性被设为“_main_”第二种,“_name_”属性被设为模块名,不带路径和扩展名例如,假设文件nametest.py中只包含下面一行代码:print(_name_)在IDLE中直接运行该模块时,或者在命令行提示符环境中运行该程序文件时,运行结果如下:_main_而将该文件作为模块导入时得到如下执行结果:import nametest nametest,86,1.7*Python脚本的“_name_”,利用该属性可控制Python程序的运行方式。如有模块hello.py:#hello.pyif _name_=_main_:sayHello()else:saygoodbye()def sayHello():str=hello print(str);def saygoodbye():str=goodbye print(str);#程序直接执行时将会得到提示“hello”;被调用的话,提示goodbye。,87,1.8*编写自己的包与模块,包可以看做多个模块和子包的上级,对应一个目录或文件夹。在包的每个目录中都必须包含一个_init_.py文件,该文件可以是一个空文件,仅用于表示该目录是一个包。_init_.py文件的主要用途是设置_all_变量以及所包含的包初始化所需的代码。其中_all_变量中定义的对象可以在使用from import*时全部正确导入。,88,1.9 Python快速入门,例:用户输入一个三位自然数,计算并输出其百位、十位和个位上的数字。x=input(请输入一个三位数:)a=x/100b=x/10%10c=x%10print(a,b,c),89,1.9 Python快速入门,例:用户输入年份,判断是否为闰年。判断闰年的规则为:能被4整除且不能被100整除的为闰年(如2004年是,1900年不是)能被400整除的是闰年(如2000年是,1900年不是)y=int(input(请输入年份: