1基本配置及基础语法(1,2章)1Python.exe的解释器options:1.1–d提供调试输出1.2–O生成优化的字节码(生成.pyo文件)1.3–S不导入site模块以在启动时查找python路径1.4–v冗余输出(导入语句详细追踪)1.5–mmod将一个模块以脚本形式运行1.6–Qopt除法选项(参阅文档)1.7–ccmd运行以命令行字符串心事提交的python脚本1.8file以给定的文件运行python脚本2_在解释器中表示最后一个表达式的值.3print支持类c的printf格式化输出:print“%sisnumber%d!”%(“python”,1)4print的输入内容后面加逗号,就会使其输入不换行5把输出重定向到日志文件:logfile=open(“c:/1.log”,“a”);//打开文件c:/1.log使用a模式..即add,添加.printlogfile,“Fatalerror:invalidinput!”;为重定向..将print的结果重定向到logfile,输出内容是”Fatalerror:invalidinput!”…logfile.close();//关闭文件流…6程序输入:raw_input(“提示字符串”):user=raw_input(“请输入您的姓名”);7int(数值)…..将数值字符串转换成整数值…8运算符:8.1+-*/%是和其他语言相同的加减乘及取模运算.取余运算8.2/在浮点取模中得到的结果是完整的浮点数8.3//在浮点取模中得到的结果是经过舍去运算的结果.8.4**是乘方8.5和的移位运算也支持.但不支持java中的和移位.8.6==++!=等比较运算符8.7andornot等逻辑运算符9变量和赋值:python是弱类型语言..10list,tuple,map*4得到的结果是一个新的list|tuple|map,是原数据的4份11数字:11.1int(有符号整数)11.2long(长整数)11.3bool(布尔值)11.4float(浮点值)11.5complex(复数)11.6python2.3开始,如果结果从int溢出,会自动转型为long11.7python2.4开始支持decimal数字类型,需要导入decimal模块..由于在二进制表示中会有一个无限循环片段,普通的浮点1.1实际是不能被精确表示的,被表示为1.1000000000000001.使用printdecimal.Decimal(‘1.1’);则可以得到精确的1.112字符串:引号之间的字符集合,支持使用成对的单引号和双引号,三引号(三个连续单引号或双引号)可以用来包含特殊字符.使用索引运算符[]和切片运算符[:]可以得到子字符串…字符串中第一个字符的索引是0,最后一个字符的索引是-1;13列表和元组:可以看作是普通的数组,能保存任意数量任意类型的python对象…13.1列表元素用中括号包裹,元素的个数及元素的值可以改变.13.2元组元素用小括号包裹,不可以更改,尽管他们的内容可以,元组可以看成是只读的列表.可以使用切片运算得到子集.14字典:相当于其他语言中的map,使用{key:value}的方式表示.取值的方式和其他语言的map一致.也可以直接使用map[key]=value的方式为其赋值.15条件语句:ifexpression:path1elifexpression2:path2else:path316while循环whileexpression:processbusiness17for循环foriteminlist|tuple|map:printitem17.1range(len(list))得到一个list长度范围内的整数list,方便遍历过程中获取索引值.17.2python2.3中增加了enumerate(),可以通过它遍历list,同时得到索引和值forindex,datainenumerate(list):printindex,“:”,data,17.3列表解析:sqdEvens=[x**2forxinrange(8)ifnotx%2],获取一个序列,该序列是0-8的数字中所有x%2为0(false)的x的平方18文件和内建函数:open(),file()18.1handle=open(file_name,access_mode=“r”),只读方式打开文件,得到的句柄是handle..该方法如果没有提供access_mode,默认是r19异常处理:raise可以故意引发异常try:#processexceptIOError,e:#errorprocess20函数:如果函数中没有return语句,自动返回None对象deffunction_name([arguments]):“optionaldocumentstring”function_suite20.1python的函数调用中参数是引用传递20.2可以在定义函数的时候,在参数列表中通过=设置参数的默认值.21类:21.1定义:classclass_name:static_variable_name=valuedef__init__(self,[arguments])://operation//selfinhereisthereferenceforthisclassinstancedefgeneral_method_name(self,[arguments])://operation//selfistheclassinstance//ifyouwanttouseclassvariable,pleaseuselikeself.__class__.__name__21.2实例化:instance=class_name([arguments,…]);22模块:不带.py后缀名的文件名…一个模块创建之后,可以使用import导入这个模块使用.22.1访问模块内的函数或变量:module_name.function()|module_name.variable|module_name.class_name22.2sys模块概览22.2.1sys.stdout.write(‘HelloWorld!\n’)//使用sys模块的标准输出22.2.2sys.platform//返回系统的标记22.2.3sys.version//返回系统的版本23PEP:一个PEP就是一个python增强提案(pythonenhancementproposal),是在新版python中增加新特性的方式…索引网址是:一些常用函数24.1dir([obj])显示对象的属性,如果没有提供参数,显示全局变量的名字24.2help([obj])显示对象的文档,如果没有参数,进入交互式帮助24.3int(obj)将一个对象转换为整数24.4len(obj)返回对象的长度24.5open(file_name,mode)以mode(r|w|a…)方式打开一个文件24.6range([[start,]stop[,step]])返回一个整数列表…结束值是stop-1,step默认是124.7raw_input(str)提示str等待用户输入24.8str(obj)将一个对象转换为字符串24.9type(obj)返回对象的类型…返回值本身是一个type对象24.10sum(iterable[,start=0])可以对纯数值的list|tuple|map进行求和操作..24.11dir([object])如果没有参数获得当前脚本scope内定义的对象,如果有参数,返回该对象内部定义的对象,如果该对象有一个__dir__方法,该方法将被调用,并且必须返回属性的列表…这就允许通过自定义__getattr__()或__getattribute__()方法的方式实现dir的自定义显示属性列表….如果没有指定参数,是根据该对象的__dict__内存字典的最佳聚合信息显示的..24.12type([object])参数为空显示type‘type’,参数不为空显示该对象的类型24.13type(name,bases,dict)通过名称,基类,内存字典动态创建一个类型24.14object__name.__doc__查看该对象的文档字符串24.15__doc__对象的文档字符串,该文档字符串在定义对象时写在对象语句块中第一句,使用单纯的字符串的方式表示24.16sys.exit()退出python解释器24.17append(Object)给list添加一个元素24.18os.linesep返回的是系统换行符…不同的系统换行符是不同的,使用linesep可以提高代码跨平台性24.19string_variable_name.strip([chars])脱离,滤去字符串中的某些字符,如果没有参数返回原字符串25数值按进制分为:25.1二进制:0b10101025.2八进制:0716725.3十进制:9876725.4十六进制:0xf2134Python基础(chapter3)1setenceandsyntax语句和语法1.1#为注释符号1.2\n是标准行分隔符,通常一个语句一行1.3反斜线\表示下一行继续,用来将单条语句放入多行…尽量使用括号代替1.4分号;表示将两个语句连接在一行中…不提倡1.5冒号:表示将代码块的头和体分开1.6语句(代码块)用缩进块方式体现:同一个代码组的代码必须严格左对齐..由于不同的editor制表符宽度不一,为了使代码跨平台,推荐使用4个空格缩进1.7不同缩进深度分隔不同的代码块1.8python文件以模块的形式组织:模块以磁盘文件的形式存在,不应该让某个模块充斥的太大2赋值2.1赋值语句没有返回值,但可以使用链式赋值2.2python2.0开始支持增量赋值(算符和等号连接赋值),但是python不支持++,--2.3赋值操作中,可变对象会被直接修改(引用位置值的修改),不可变对象则被重新赋予新的对象(引用修改)2.4多元赋值:a,b,c=1,2,‘string’,建议使用tuple的方式进行多元赋值:(a,b,c)=(1,2,‘string’)3swap操作:x,y=y,x4标识符4.1大小写敏感4.2python的关键字列表和iskeyword()函数在keyword模块,方便查阅4.3内建:built-in可以看作是系统保留字….对于一些内建函数需要覆盖(重定义,替换)…built-in是__builtins__模块的成员,该模块由解释器自动导入4.4python不支持重载4.5下划线:作为变量前缀和后缀指定特殊变量4.5.1_xxx:不用’frommoduleimport*’导入4.5.2__xxx__:系统定义名字4.5.3_xxx:类中的私有变量名5python之禅TheZenofPython,byTimPeterspython之禅.作者TimPetersBeautifulisbetterthanugly.漂亮胜于丑陋Explicitisbetterthanimplicit.详尽胜于含蓄Simpleisbetterthancomplex.简单胜于复杂Complexisbetterthancomplicated.组合胜于复杂(结构)Flatisbetterthannested.单一胜于嵌套Sparseisbetterthandense.稀少胜于繁杂Readabilitycounts.可读性价值Specialcasesaren'tspecialenoughtobreaktherules.特例不足以违反规则Althoughpracticalitybeatspurity.实践胜于理论Errorsshouldneverpasssilently.错误可能从不沉默Unlessexplicitlysilenced.除非明白沉默Inthefaceofambiguity,