1.在Python中数的类型有三种——整数、浮点数和复数。其中整数类型又分为int(有符号整数)、long(长整数)和bool(布尔值)。复数的例子:(-5+4j)。在Python中不用区分’longint’类型,长整数范围仅受限于用户计算机的虚拟内存总数。2.没有仅仅使用ASCII的字符串,原因是Unicode是ASCII的超集。如果要严格使用ASCII编码的字节流,可用str.encode(ascii)。默认所有的字符串的编码是Unicode。(P14in“AByteofPython”)3.可以用单引号指定字符串,如:4.在双引号中的字符串与单引号中的字符串的使用完全相同,如:5.利用三引号(or’’’),你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号,如:将会输出:6.一个字符串一旦创建,就不能再改变它。(P16)7.如果把两个字符串按字面意义相邻放着,他们会被Python自动级连,如:等价于8.format方法:输出为:也可用字符串连接:来实现9.物理行是你在编写程序时所看见的。逻辑行是Python看见的单个语句。Python假定每个物理行对应一个逻辑行。默认地,Python希望每行都只使用一个语句,这样使得代码更加易读。如果你想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号(;)来特别地标明这种用法。分号表示一个逻辑行或语句的结束10.在Python中,每行开头的空白很重要,其用来决定逻辑行缩进的层次,从而来决定语句分组。同一层次的语句必须有相同的缩进,每一组这样的语句称为一个块。如:11.表达式可以被分解成操作符和操作数。12.Python也支持增量赋值。如:等价于13.相同优先级的运算符按照从左向右的顺序计算(左结合性);相同优先级的赋值运算符有从右向左的结合顺序(右结合性)。(P25)14.在Python中有三种控制流语句——if、for和while。15.if语句我们为内建的input()函数提供一个字符串,这个字符串被打印在屏幕上,然后等待用户的输入。一旦我们输入一些东西,再按回车键,函数就返回一个字符串。通过int()把这个字符串转换为整数,并把它存储在变量guess中(假设这个字符串含有一个有效的整数文本信息)。这里使用了缩进层次来告诉Python每个语句分别属于哪一个块。if语句在结尾处包含一个冒号,它告诉Python下面跟着一个语句块。elif从句把两个相关联的ifelse-ifelse语句合并为一个if-elif-else语句。elif和else部分是可选的。(P28)16.while语句while语句有一个可选的else从句。若while循环有配套的else从句,它将始终被执行,除非你的while循环将永远循环下去不会结束。17.for循环range()返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,range(1,5)给出序列[1,2,3,4]。默认地,range()的步长为1。若为range()提供第三个参数,它将成为步长。如,range(1,5,2)给出[1,3]。记住,range()向上延伸到第二个数,即它不包含第二个数。else部分是可选的。如果包含else,它总是在for循环结束后执行一次,除非遇到break语句。18.break语句若你从for或while循环中break,任何对应的循环else块将不执行。如:上面的程序将只会打印一个‘1’。19.输入的字符串的长度可以用内置函数len()来计算。20.continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。raw_input(str)等待用户输入一个字符串,可提供一个可选的参数str用作提示信息。21.函数用关键字def来定义。def关键字后跟一个函数的标识符名称,然后跟一对圆括号。圆括号之中可包括一些变量名,该行以冒号结尾。接下来是一块语句,它们是函数体。22.Python不需要指定返回值的数据类型;甚至不需要指定是否有返回值。实际上,每个Python函数都返回一个值;如果函数执行过return语句,它将返回指定的值,否则将返回None(Python的空值)。23.若你想在函数定义内为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是全局的。我们使用global完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。输出为:global用来声明x是全局的。因此,当在函数内把值赋给x时,这个变化也反映在主块中使用x的值的时候。24.默认参数值应该是不可变的。25.在Python2.7中,print后不要加圆括号。若我们不提供一个值,那么默认地,字符串将只被打印一遍。我们通过形参times指定默认参数值为1来实现这一功能。在第二次调用say的时候,我们提供了字符串和参数5,表明想要说这个字符串消息5遍。只有在形参表末尾的那些参数可以有默认参数值。26.关键参数:若某个函数有许多参数,而你只想指定其中的一部分,那么可以通过命名来为这些参数赋值——这被称作关键参数——使用名字而不是位置来给函数指定实参。这样做有两个优势:1、由于不必担心参数的顺序,使用调用函数变得更简单。2、假设其他参数都有默认值,则可只给我们想要的那些参数赋值。输出:27.VarArgs参数:当我们定义一个带星的参数,像*param时,从那一点后所有的普通参数被收集为一个叫做’param’的列表。如下例中,首先initial的值会由5变成10,然后numbers将1,2,3,收集作为一个列表:numbers=(1,2,3)。当我们定义一个带两个星的参数,像**param时,从那一点开始的所有的关键字参数会被收集为一个叫做’param’的字典。在下例中,从vegetables=50后的所有参数被收集为一个字典keywords=’vegetables’:50,‘fruits’:100。28.None是Python中表示没有任何东西的特殊类型。例如,如果一个变量的值为None,可以表示它没有值。除非你提供你自己的return语句,每个函数都在结尾暗含有returnNone语句。29.文档字符串,通常被简称为docstrings。DocStrings是一重要的工具,由于它帮助你的程序文档更加简单易懂,应该尽量使用它。甚至可以在程序运行的时候,从函数恢复文档字符串!Line2、3的字符串就是这个函数的文档字符串。DocStrings也适用于模块和类。文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。可用__doc__(注意双下划线)调用printMax函数的文档字符串属性(属于函数的名称)。30.模块是指一个可以交互使用,或者从另一Python程序访问的代码段。只要导入了一个模块,就可以引用它的任何公共的函数、类或属性。31.模块的__name__每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。这在一个场合特别有用——就如前面所提到的,当一个模块被第一次输入的时候,这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的__name__属性完成。如:输出:说明:每个Python模块都有它的__name__,如果它是’__main__’,这说明这个模块被用户单独运行,我们可以进行相应的恰当操作。32.创建自己的模块接下来将看看如何在别的Python程序中使用这个模块。记住这个模块应该被放置在我们输入它的程序的同一个目录中,或者在sys.path所列目录之一。输出:下面是一个使用from..import语法的版本:注意如果已经在导入example_code的模块中申明了一个__version__的名字,就会有冲突。这也是有可能的,因为从实际情况来看,每个模块会用这个名字来申明它的版本。因此,推荐选择使用import语句,虽然会导致程序稍微有点冗长。也可以这样使用:这回导入像sayhi这样公用的名字,但不会导入__version__,因为它是以双下划线开始的。33.dir函数内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。如:在导入的sys模块上使用dir()。我们看到它包含一个庞大的属性列表。若不给dir()函数传递参数,默认地,它返回当前模块的属性列表。注意,导入的模块同样是列表的一部分。若定义一新变量a并给它赋一值,然后检验dir(),我们观察到在列表中增加了以上相同的值。我们使用del语句删除当前模块中的变量/属性,这个变化再一次反映在dir()的输出中。关于del——该语句用于删除变量/名字。在这个例子中,dela,你将无法再使用变量a——它就像从来没有存在过一样。注意dir()函数能在任何对象上起作用。例如,运行dir(print)来了解关于print函数的属性,或者dir(str)来查看str类的属性。34.Python中有四种内建的数据结构——列表、元组、字典和集合。35.列表:list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。每个项目之间用逗号分隔。列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表。一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。36.静态类型语言:一种在编译期间就确定数据类型的语言。动态类型语言:一种在运行期间才去确定数据类型的语言。强类型语言:一种总是强制类型定义的语言。弱类型语言:一种类型可以被忽略的语言,与强类型相反。输出为:len(shoplist)求得列表的元素的个数,即列表的长度;shoplist.append('rice')在列表的末尾来增加项目;shoplist.sort()对列表进行排序;delshoplist[0]指定想要移除列表中的第一项因此用delshoplist[0](Python中从0开始计算)。37.元组:元组用来将多样的对象集合到一起。元组和列表十分类似,只不过元组和字符串一样是不可变的,即你不能修改元组。元组通过圆括号中用逗号分隔的项目定义。元组常用在使语句或函数能够安全地采用一组值的时候。输出:元组之内的元组不会失去它的特性。可以通过一对方括号来指明某个项目的位置从而来访问元组中的项目,就像C语言中数组的下标运算。这被称作索引运算符。如上例中使用new_zoo[2][2]来访问new_zoo元组的第三个项目的第三个项目。虽然圆括号是可选的,但写出它使其明显地表明它是一个元组,避免歧义。38.含有0个或1个项目的元组:一个空的元组由一对空的圆括号组成,如myempty=()。然而,含有单个元素的元组就不那么简单了。必须在第一个(也就是唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。即如果你想要的是一个包含项目2的元组的时候,你应该指明singleton=(2,)39.字典:字典把键(名字)和值(详细情况)联系在一起。键必须是唯一的,且只能使用不可变的对象(如字符串)作为字典的键,但是你可以把不可变或可变的对象作为字典的值。键值对在字典中以这样的方式标记:d=key1:value1,key2:value2。注意它们的键/值对用冒号分隔,而各个对用逗号分隔,所有这些都包括在花括号中。字典中的键/值对是没有顺序的。若想要一个特定的顺序,则应自己排序。输出为:L16:用索引操作符来寻址一个键并为它赋值,这样就增加了一个新的键/值对。L9:只需指明字典和用索引操作符指明要删除的键,然后把它们传递给del语句就可以删除该键值对了。L12:字典的items方法,来使用字典中的每个键/值对。这会返回一个元组的列表,其中每个元组都包含一对项目——键与对应的值。可以使用in操作符来检验一个键/值对是否存在,或者使用d