python学习总结

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

本文基于《byteofpython》电子书及网络材料而写,电子书本身已很精简,因此不必长篇累牍,旨在抛砖引玉。“【】”内表示补充说明。python与脚本语言首先我们知道,脚本与脚本解释器这两个概念是统一的、密不可分的。脚本本质上就是文本文件(如用ASCII码所写的),这种文本文件用文本编辑器打开与普通的文本文件没有区别,只不过扩展名不是“.txt”,python脚本的扩展名通常是“.py”。什么样的文本文件是脚本呢?答案是:针对特定脚本解释器的语法规则所编写的,供脚本解释器来使用的文本文件。计算机仅有脚本还是不能工作(它只是文本文件),我们需要一种工具软件,用来把脚本中的代码解释成计算机指令,同时让计算机立即执行这些指令,这种工具就是脚本解释器。很显然,使用不同语法规则编写的脚本应使用不同的解释器来解释执行,因为每种脚本实际上是专为其解释器而写的,是按照解释器能识别的语法规则而写的。如果你想通过脚本使计算机工作,就要在系统中安装一种脚本解释器,然后根据这种解释器规定的语法规则编写脚本,最后启动解释器来执行这个脚本。python是众多“脚本解释器+语法规则”的一种,类似还有bash、perl、javascript等等。比较C与python1.代码层面看C与python所谓不同编程语言,在代码层面来看,主要不同之处在于它们的语法规则,掌握了一种编程语言的语法规则,你就可以写出一种代码。我们写C语言代码,就是按照C语言规定的语法规则来定义变量、函数、数据结构等。同样地,遵照python的语法规则就可以编写python代码,这与写C代码没什么不同。2.代码的存在形式C语言中有源文件、目标文件、可执行文件这些概念,python中只有脚本及解释器。所谓的脚本、程序或者软件都是指保存代码的文本文件(虽然为了加快python模块导入时的速度,解释器会生成一种扩展名为”.pyc”的文件,它们只是用来保存中间状态的)。由于脚本既是可运行程序又是代码,可读性强、修改程序方便(不必编译,修改即可执行)是脚本的两大优点。3.从代码到执行C语言写好之后,我们根据目标CPU指令集来选择特定的工具链(如编译、链接工具),用它将C代码最终编译为目标CPU可直接执行的二进制文件,然后将这个二进制文件装载到内存中,执行时再将内存中程序入口地址传递给CPU,进而逐条执行程序中的指令。这是使用C语言编码,到最终计算机执行指令的过程。使用python语言编码之后的步骤与此不同:python代码不需要被编译为可执行文件,它需要通过python解释器来控制计算机工作。就是说,系统中必须事先安装好了python解释器,python解释器把python代码解释成CPU可执行的指令并运行这些指令。但python解释器如何解释成可执行指令,又如何控制CPU来执行,这对用户来说是不可见的。用户使用时只要以python代码作为输入来运行解释器,解释器就会自动解释并运行这些程序。学习《byteofpython_chn》体会Python是高层次的面向对象的编程语言。优点是代码简洁、简单易学,缺点是运行速度较慢。我们可以在python代码中调用C编译生成的动态链接库来提升程序运行速度。很多发布的linux系统都自带了python解释器,因此python在linux平台上应用广泛,很适合GUI、测试程序等各类软件的开发。建议学习时把书上提供的示例代码上机操作一遍,动手写python代码可以迅速掌握python。学习摘要(基于linux系统)1.两种python执行方式a.进入python的shell下逐行执行:在终端(Terminal)下键入“python”按回车(解释器被启动),进入python的shell,此时可以输入python语句,按回车执行。按“左侧ctrl+D”退出python的shell。输入“python-V”可查看python版本号(注意参数V是大写)。b.在终端下直接调用python脚本执行:可以在终端命令行指定解释器并调用,如“pythonhello.py”;或者可以在脚本文件首行指定解释器,终端命令行只需输入“./hello.py”调用,此方式见下文“创建并执行脚本文件”。【超级终端实际就是一种shell,linux默认指定为bash。在命令行中指定解释器时,脚本若在当前目录下,不必指定路径“./”;在脚本首行指定解释器时,命令行中必须指定路径名】2.创建并执行脚本文件a.创建一个名为“hello.py”的脚本文件(黄色背景表示脚本的内容):[root@Fedora10~]#vimhello.py#!/usr/bin/python#filename:hello.pyprint“hello,world”b.设置脚本文件可执行权限:[root@Fedora10~]#chmoda+xhello.pyc.执行脚本文件:[root@Fedora10~]#./hello.py【超级终端下会显示:“hello,world”】d.步骤说明在文件开头写“#!/usr/bin/python”,这是指定该脚本使用的解释器所在的目录。因为python的默认安装目录是“/usr/bin/python”,所以这里如此指定,真实情况要按照python的实际安装目录来指定。也可以不在文件开始处指出解释器,这种情况下应在终端命令行中指定解释器,如下:[root@Fedora10~]#python./hello.py3.python中的缩进缩进是语法规则相关的,它决定语句的层次(类似C语言中用“{}”来表示层次一样)。同一层次语句必须有相同缩进,否则解释器会报错。Python函数没有明确的开始(begin)或者结束(end),也没有用大括号来标记函数从哪里开始从哪里停止。唯一的定界符就是一个冒号(:)和代码自身的缩进。例如:defsome_func():i=3print“numberis%d“%i4.字符串的使用1.单引号与双引号在python中等效使用a.三引号(’’’或”””)可用来指示跨行的字符串,在其中,单、双引号均可使用。b.Python中字符串“what’sthis”表示方式方式1:’what\’sthis’.这里用到了转义符’\’方式2:”what’sthis”c.行末的单独一个反斜杠表示字符串在下一行继续,而不是开始一个新的行:Thisisthefirstsentence.\Thisisthesecondsentence.等价于Thisisthefirstsentence.Thisisthesecondsentence.d.用r或R指定自然字符串r”Happy\n”,因为用’r’指定为自然字符串,因此’\n’不会被解释器理解为回车换行符,而是’\’和’n’这两个字符,因此打印时会打印出”Happy\n”这7个字符。e.用u或U指定使用unicode编码.如:u”Happy”f.连写的两个字符串会被解释器理解为一个连续的字符串“what’s””yourname”会被理解为”what’syourname”5.说明几个运算符:“**”表示“幂”。如:3**4=3的4次幂=81“//”表示“取整除”。如:4//3.0=1.0“not、and、or”:(布尔)非、(布尔)与、(布尔)或6.文档字符串函数(模块或类)的第一个逻辑行是其文档字符串,惯例是一个多行的字符串。首行以大写字母开始,句号结尾;次行是空行;第三行开始是详细描述。举例:'''Printsthemaximumoftwonumbers.Thetwovaluesmustbeintegers.……'''使用“函数名.__doc__”来得到某函数的文档字符串,例如这样用:printsome_func.__doc__7.数据结构--简介python中每种数据类型都被当作对象。虽然Python中的每个值都有一种数据类型,但我们不需要声明变量的数据类型,因为python会根据每个变量的初始赋值情况分析其类型,并在内部对其进行跟踪,当然这种“i=long(12)”带类型来定义变量的方式也是支持的。Python有多种内置数据类型,各类型关键字可用于类型强制转化、作help()的参数、定义变量等。以下是比较重要的一些:a.布尔型:关键字bool,值为True或Falseb.整数:关键字int,如3,-1c.浮点数:关键字float,如3.2,7.92d.字符串型:关键字str,如”hellopython”e.列表:关键字list,是值的有序序列,如[3,2,5]f.元组,关键字tuple,是有序而不可变的值序列。g.集合是装满无序值的包(注意,“集合”在不同版本间略有不同)h.字典是键值对的无序包【要使用C语言类型的数据,需要导入ctypes模块,以便使用c_int、c_long等类型。可以在python的shell先“importctypes”然后“help(ctypes)”查看具体规定】8.数据结构--“列表(list)”list是一组有顺序的数据,它的元素(对象)个数是变的(后面要说的元组则是固定的)。a.各种内建方法list_a=[1,2]/*定义list_a含有1,2两个对象*/list_a.append(2)/*添加一个对象到末尾*/list_a/*查看list_a中内容*/[1,2,2]/*shell中显示*/list_a.count(2)/*返回list_a中对象是2的个数*/2/*shell中显示有2个值为2的对象*/list_b=[3,4]/*定义list_b含有3,4两个对象*/list_a.extend(list_b)/*在list_a末尾添加添加list_b*/list_a/*查看list_a中内容*/[1,2,2,3,4]/*shell中显示*/list_a.index(3)/*返回第1个匹配的指定值在list中的位置,list中第1个对象的位置是0,第2个对象位置是1,以此类推*/3/*shell中显示*/list_a.insert(2,’ok’)/*在位置是2的对象前添加对象’ok’*/list_a/*查看list_a中内容*/[1,2,‘ok’,2,3,4]list_a.pop()/*删除并返回list中最后一个对象*/list_a.remove(2)/*删除第1次出现的匹配指定值的对象*/list_a/*查看list_a中内容*/[1,‘ok’,2,3,4]list_a.reverse()/*将list_a中的所有对象的位置反转*/list_a/*查看list_a中内容*/[4,3,2,‘ok’,1]list_a.sort(cmp=None,key=None,reverse=False):对list_a排序Key:指定“取值函数”。取值函数带1个参数。sort方法从list_a中取出元素,作为实参传递给取值函数,取值函数做些处理,再将处理后的返回值传递给比较函数。cmp:指定“比较函数”。比较函数带2个参数。比较函数接收取值函数传送过来的2个参数,经过某种比较,返回比较结果(-1,0,1)。在写具体比较函数时,往往会用到python内建函数“cmp()”reverse:指定为True时,将排序后序列顺序转置,否则无动作。【list_a.sort()不指定任何参数时,对list_a按小从到大排序】b.列表使用:下标方式,结合切片操作符’:’list_a[2]=‘ok’/*给列表中一项赋值*/list_b=list_a[2:]/*将list_a[2]起到最后一个元素,都值赋给list_b*/list_b=list_a[:3]/*将list_a中第1个至list_a[2]赋给list_b,不包括list_a[3]*/list_b=list_a[1:4]/*将list_a[1]至list_a[3]赋给list_b,不包括list_a[4]*/list_b=list_a[1:-1]/*将lis

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功