Python个人笔记

上传人:优*** 文档编号:49651869 上传时间:2022-01-18 格式:DOC 页数:16 大小:107KB
收藏 版权申诉 举报 下载
Python个人笔记_第1页
第1页 / 共16页
Python个人笔记_第2页
第2页 / 共16页
Python个人笔记_第3页
第3页 / 共16页
资源描述:

《Python个人笔记》由会员分享,可在线阅读,更多相关《Python个人笔记(16页珍藏版)》请在装配图网上搜索。

1、真诚为您提供优质参考资料,若有不当之处,请指正。Python1. 概述1) Python是大小写敏感2) 注释 l 注释不仅可以用来解释临近的代码,还可以组织代码的运行。一个很好的例子就是Django的settings.py配置文件。l 任何在#符号右面的内容都是注释.l Python至少应当有第一行那样的特殊形式的注释。它被称作 组织行 源文件的头两个字符是#!,后面跟着一个程序。这行告诉你的Linux/Unix系统当你 执行 你的程序的时候,它应该运行哪个解释器。3) 在Python中有4种类型的数整数、长整数、浮点数和复数。2. 对象的布尔类型1) 可以用bool函数来决定任何Pytho

2、n对象的布尔值l bool(x):当且仅当x=0时,返回Falsel bool(None)返回Faslel bool(None,0)返回Truel bool(0,0)返回True3. 数字1) Python有两个主要的数值类型:int(整数)和float(浮点数)。【老版本中的整数类型long现在已经被合并到了int】2) 另外,还有一个Decimal,但不是内置类型,必须通过decimal模块访问,它的范围比较小,但是更精确。3) 内置数据类型int:带符号整数(没有大小限制)4) 内置数据类型float:双精度浮点数5) 内置数据类型complex:复数(实部+虚部)4. 字符串1) 单双

3、引号:在双引号中的字符串与单引号中的字符串的使用完全相同。2) 使用三引号(或”): 利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。3) 转义字符:如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。自然字符串通过给字符串加上前缀r或R来指定。4) Unicode字符:处理Unicode文本你只需要在字符串前加上前缀u或U。5) 字符串是不可变的6) 按字面意义级连字符串:如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。例如,Whats your name?会被自动转为Whats your name?。【

4、用“+”效果一样,但效率比较低下。可用方法:a.用字符串的格式化操作符%;b.用jion方法;c.对于列表来说,extend方法也可以把另一个列表的内容加进来(相比list1 += list2,list1.extend(list2)要好得多)】5. 标识符的命名1) 变量是标识符的例子。 标识符 是用来标识 某样东西 的名字。在命名标识符的时候,你要遵循这些规则:l 标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线( _ )。l 标识符名称的其他部分可以由字母(大写或小写)、下划线( _ )或数字(0-9)组成。l 标识符名称是对大小写敏感的。6. 对象:Python把在程序

5、中用到的任何东西都称为 对象。7. 如何编写Python程序下面是保存和运行Python程序的标准流程。1). 打开你最喜欢的编辑器。2). 输入例子中的程序代码。3). 用注释中给出的文件名把它保存为一个文件。我按照惯例把所有的Python程序都以扩展名.py保存。4). 运行解释器命令python program.py或者使用IDLE运行程序。你也可以使用先前介绍的可执行的方法。8. 逻辑行与物理行1) 如果你想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号(;)来特别地标明这种用法。分号表示一个逻辑行/语句的结束。2) 强烈建议你坚持在每个物理行只写一句逻辑行。9. 运算符:1)

6、 *(幂运算)2) /除3) /求余4) 按位翻转5) and 布尔“与”6) or 布尔“或”7) not 布尔“非”8) 备注:没有自增/自减运算符(即+,-)10. 运算符的优先级(从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)):运算符描述lambdaLambda表达式or布尔“或”and布尔“与”not x布尔“非”in,not in成员测试is,is not同一性测试,=,!=,=比较|按位或按位异或&按位与移位+,-加法与减法*,/,%乘法、除法与取余+x,-x正负号x按位翻转*指数x.attribute属性参考xindex下标xindex:index寻址段f(ar

7、guments.)函数调用(experession,.)绑定或元组显示expression,.列表显示key:datum,.字典显示expression,.字符串转换11. 控制语句:在Python中有三种控制流语句if、for和while。1) if# -*- coding: cp936 -*-# Filename : if.pynumber = 23grade = int(raw_input(请输入您的成绩:)if grade = 90 : print 成绩优秀!elif grade = 80: print 成绩良好!elif grade = 70 : print 成绩合格!else :

8、print 还需要加油哦!2) while循环【while语句有一个可选的else从句。】# -*- coding: cp936 -*-# Filename while.pynumber = 99option = Truewhile option : guess = int(raw_input(请输入一个数字:) #接受用户的输入 if number = guess : print 恭喜您!猜中了! option = False else: print 抱歉,您没有猜中哦!重来吧!else: print 谢谢您的参与!3) for循环【for.in是另外一个循环语句,它在一序列的对象上 递归

9、即逐一使用队列中的每个项目】l 我们所做的只是提供两个数,range返回一个序列的数。这个序列从第一个数开始到第二个数为止。例如,range(1,5)给出序列1, 2, 3, 4。默认地,range的步长为1。如果我们为range提供第三个数,那么它将成为步长。例如,range(1,5,2)给出1,3。记住,range 向上 延伸到第二个数,即它不包含第二个数。l else部分是可选的。如果包含else,它总是在for循环结束后执行一次,除非遇到break语句。4) break语句:如果你从for或while循环中 终止 ,任何对应的循环else块将不执行。5) continue语句:cont

10、inue语句被用来告诉Python跳过当前循环块中的剩余语句,然后 继续 进行下一轮循环。12. 函数1) 函数的定义:def sayHello():2) 定义全局变量:global关键字;可以使用同一个global语句指定多个全局变量。例如global x, y, z。3) pass语句在Python中表示一个空的语句块。13. DocStrings:1) Python有一个很奇妙的特性,称为 文档字符串 ,它通常被简称为 docstrings 。DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。你甚至可以在程序运行的时候,从函数恢复文档字符串!2)

11、 惯例:文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。3) 你可以使用_doc_(注意双下划线)调用printMax函数的文档字符串属性(属于函数的名称)。14. 模块1) 模块基本上就是一个包含了所有你定义的函数和变量的文件。2) 为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。3) 记住,脚本的名称总是sys.argv列表的第一个参数。4) 创建 字节编译的文件 ,这些文件以.pyc作为扩展名。字节编译的文件与Python变换程序的中间状态有关。当你在下次从别的程序输入这个模块的时候,.pyc文件是十分有用的它会快得

12、多,因为一部分输入模块所需的处理已经完成了。另外,这些字节编译的文件也是与平台无关的。5) 如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用from sys import argv语句。如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。这对于所有模块都适用。一般说来,应该避免使用from.import而使用import语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。6) 每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。这在一个场合特别有用就如前面所提到的,当一个模块被第一次输入的时候,

13、这个模块的主块将被运行。假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的_name_属性完成。7) dir():l 你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。l 默认地,它返回当前模块的属性列表。l a = 5 # create a new variable a.l del a,你将无法再使用变量a它就好像从来没有存在过一样。15. 数据结构1) 在Python中有三种内建的数据结构列表、元组和字典.2) 列表:l list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目。

14、l 而在Python中,你在每个项目之间用逗号分割。l 列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表。l 一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。l 由于你可以增加或删除项目,我们说列表是 可变的 数据类型,即这种类型是可以被改变的。l 常用方法:append(x),insert(x,x),remove(x),pop(),extend(x),sort()3) 元组(tuple):l 元组和列表十分类似,只不过元组和字符串一样是 不可变的 ,即你不能修改元组。l 元组通过圆括号中用逗号分割的项目定义。l 元组通常用在使语句或用户定义的函数能够安全地

15、采用一组值的时候,即被使用的元组的值不会改变。l len函数可以用来获取元组的长度。l 含有0个或1个项目的元组。一个空的元组由一对空的圆括号组成,如myempty = ()。然而,含有单个元素的元组就不那么简单了。你必须在第一个(唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。即如果你想要的是一个包含项目2的元组的时候,你应该指明singleton = (2 , )。l 元组与打印语句#!/usr/bin/python# Filename: print_tuple.pyage = 22name = Swaroopprint %s is %d years

16、old % (name, age)print Why is %s playing with that python? % name4) 字典:字典是可变的、无序的、大小可变的键值映射,亦称散列表。l 字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起。注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息。l 注意,你只能使用不可变的对象(比如字符串)来作为字典的键,但是你可以不可变或可变的对象作为字典的值。基本说来就是,你应该只使用简单的对象作为键。l 键值对在字典中以这样的方式标记:d = key1 : value1

17、, key2 : value2 。注意它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。l 记住字典中的键/值对是没有顺序的。如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。5) 序列l 列表、元组和字符串都是序列。l 序列的两个主要特点是索引操作符和切片操作符。索引操作符让我们可以从序列中抓取一个特定项目。切片操作符让我们能够获取序列的一个切片,即一部分序列。l 切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。注意这与你使用的索引操作符十分相似。记住数是可选的,而冒号是必须的。l 切片操作符中的第一个数(冒号之前)表示切片开始的位置

18、,第二个数(冒号之后)表示切片到哪里结束。如果不指定第一个数,Python就从序列首开始。如果没有指定第二个数,则Python会停止在序列尾。注意,返回的序列从开始位置 开始 ,刚好在 结束 位置之前结束。6) 参考【个人理解:即引用】l 当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 参考 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。#!/usr/bin/env python# Filename: reference.pyprint Simple Assignmentshoplist=apple,mango,carrot

19、,bananamylist=shoplist # mylist is just another name pointing to the same object!del shoplist0print shoplist is,shoplistprint mylist is,mylist# notice that both shoplist and mylist both print the same list without# the apple confirming that they point to the same objectprint Copy by making a full sl

20、icemylist=shoplist: # make a copy by doing a full slicedel mylist0 # remove first itemprint shoplist is, shoplistprint mylist is, mylist# notice that now the two lists are differentl 如果你想要复制一个列表或者类似的序列或者其他复杂的对象(不是如整数那样的简单 对象 ),那么你必须使用切片操作符来取得拷贝。7) 字符串l 你在程序中使用的字符串都是str类的对象。l startwith方法是用来测试字符串是否以给定

21、字符串开始。l in操作符用来检验一个给定字符串是否为另一个字符串的一部分。l find方法用来找出给定字符串在另一个字符串中的位置,或者返回-1以表示找不到子字符串。l str类也有以一个作为分隔符的字符串join序列的项目的整洁的方法,它返回一个生成的大字符串。l isupper()是否是大写l title()大写每个单词的第一个字母l strip()移除行首行尾的空白符16. 我们可以使用物理行尾的反斜杠来表示逻辑行在下一物理行继续。17. 面向对象:1) 简介l 对象可以使用普通的 属于 对象的变量存储数据。l 属于一个对象或类的变量被称为域。对象也可以使用 属于 类的函数来具有功能。

22、这样的函数被称为类的方法。这些术语帮助我们把它们与孤立的函数和变量区分开来。域和方法可以合称为类的属性。l 域有两种类型属于每个实例/类的对象或属于类本身。它们分别被称为实例变量和类变量。l 类使用class关键字创建。类的域和方法被列在一个缩进块中。2) self:l 假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法MyObject.method(arg1, arg2)的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)这就是self的原理3) _init_方法:l _init_方法在类的一个对象

23、被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。l _init_方法类似于C+、C#和Java中的 constructor 。4) 类与对象的方法:l 有两种类型的 域 类的变量和对象的变量,它们根据是类还是对象 拥有 这个变量而区分。l 类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。l 对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是

24、是互不相关的。l Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的 。l 只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如_privatevar,Python的名称管理体系会有效地把它作为私有变量。l 这样就有一个惯例,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。同样,注意_del_方法与 destructor 的概念类似。5) 举例# -*- coding: cp936 -*-# Filename: extends.

25、py# 成员类 基类class Member: def _init_(self,name,age): self.name = name self.age = age print Intinalized Member:,self.name def tell(self): Tell my details. print Name:%s age:%s % (self.name,self.age),# 老师类 继承自成员类class Teacher(Member): I am a teacher. def _init_(self,name,age,salary): Member._init_(self,

26、name,age) self.salary = salary print (Initialized Teacher:%s) % self.name def tell(self): Member.tell(self) print Salary: %d % self.salary# 学生类 继承自成员类class Student(Member): I am a student def _init_(self,name,age,grade): Member._init_(self,name,age) self.grade = grade print (Initialized Student:%s)

27、% self.name def tell(self): Member.tell(self) print Grade: %d % self.gradet = Teacher(X-David,23,9000)s = Student(J-John,21,89)members = t,sfor menber in members: menber.tell()18. 输入和输出1) 读文件:def read_file(file_name): f = file(file_name) while True: line = f.readline() if len(line) = 0: break print

28、line f.close()2) 写文件:def write_file(context,filname): fil = file(filname,w) fil.write(context) fil.close()19. 存储器1) Python提供一个标准的模块,称为pickle。使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地 储存对象。2) 还有另一个模块称为cPickle,它的功能和pickle模块完全相同,只不过它是用C语言编写的,因此要快得多(比pickle快1000倍)。3) 我们把这两个模块都简称为pickle模块。4) 为了在

29、文件里储存一个对象,首先以写模式打开一个file对象,然后调用储存器模块的dump函数,把对象储存到打开的文件中。这个过程称为 储存 。5) 接下来,我们使用pickle模块的load函数的返回来取回对象。这个过程称为 取储存 。#!/usr/bin/python# Filename: pickling.pyimport cPickle as p#import pickle as pshoplistfile = shoplist.data# the name of the file where we will store the objectshoplist = apple, mango, c

30、arrot# Write to the filef = file(shoplistfile, w)p.dump(shoplist, f) # dump the object to a filef.close()del shoplist # remove the shoplist# Read back from the storagef = file(shoplistfile)storedlist = p.load(f)print storedlist20. 异常:1) try.exceptl 用try.except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在ex

31、cept-块中。l except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try从句,至少都有一个相关联的except从句。l 如果某个错误或异常没有被处理,默认的Python处理器就会被调用。它会终止程序的运行,并且打印一个消息。l 你还可以让try.catch块关联上一个else从句。当没有异常发生的时候,else从句将被执行。2) 引发异常l 你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。l 可以引发的错误或异常应该分别是一个Error或Exce

32、ption类的直接或间接导出类。l 自定义异常类#!/usr/bin/python# Filename: raising.pyclass ShortInputException(Exception): A user-defined exception class. def _init_(self, length, atleast): Exception._init_(self) self.length = length self.atleast = atleasttry: s = raw_input(Enter something - ) if len(s) os.path.split(/ho

33、me/swaroop/byte/code/poem.txt)(/home/swaroop/byte/code, poem.txt) l os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。类似地,os.path.existe()函数用来检验给出的路径是否真地存在。22. 特殊的方法1) 特殊方法名称说明_init_(self,.)这个方法在新建对象恰好要被返回使用之前被调用。_del_(self)恰好在对象要被删除之前调用。_str_(self)在我们对对象使用print语句或是使用str()的时候调用。_lt_(self,other)当使

34、用 小于 运算符(等等)都有特殊的方法。_getitem_(self,key)使用xkey索引操作符的时候调用。_len_(self)对序列对象使用内建的len()函数的时候调用。2) 单语句块l 每一个语句块是通过它的缩进层次与其它块区分开来的。l 例如:if flag: print Yesl 注意在使用交互模式的Python解释器的时候,它会通过恰当地改变提示符来帮助你输入语句。l 尽量不要使用单语句块3) 列表综合l 通过列表综合,可以从一个已有的列表导出一个新的列表。l 例如,你有一个数的列表,而你想要得到一个对应的列表,使其中所有大于2的数都是原来的2倍。对于这种应用,列表综合是最理

35、想的方法。#!/usr/bin/python# Filename: list_comprehension.pylistone = 2, 3, 4listtwo = 2*i for i in listone if i 2print listtwo输出结果:6,84) 在函数中接收元组和列表l 当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和*前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。5) lambda形式l lambda语句被用来创建新的函数对象,并且在运行时返回它们。6) exec语句用来执行储存在字符串或文件中的Python语句。7) eval语句用

36、来计算存储在字符串中的有效Python表达式。8) assert语句l assert语句用来声明某个条件是真的。l 例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。l 当assert语句失败的时候,会引发一个AssertionError。9) repr函数l repr函数用来取得对象的规范字符串表示。反引号(也称转换符)可以完成相同的功能。l 注意,在大多数时候有eval(repr(object) = object。l 基本上,repr函数和反引号用来获取对象的可打印的表示形式。l 你可

37、以通过定义类的_repr_方法来控制你的对象在被repr函数调用的时候返回的内容。23. 在解释器里使用Django1) Django提供了一个manage.py shell命令,它能进行一些必要的环境设置来避免这个问题。2) 如果你安装了iPython的话,manage.py shell会默认使用它。3) 如果你安装了iPython,但又希望使用标准的Python解释器的话,可以运行manage.py shell plain。24. Django开发步骤【以Blog为例】:1) 创建website命令:django-admin.py startproject mysite2) 运行开发服务器:manage.py runserver【需要跳转到mysite目录下】3) 创建Bolg应用:manage.py startapp blog4) 设计model5) 设置数据库:创建表命令:manage.py syncdb25. *args和*kwargs1) 当调用函数时,表达式在计算一个带星号前缀的元组或列表时会将其“打开”。2) 而双星号对字典的用法也是类似的。3) 注意:在函数定义里使用变长参数时,所有必须出现的参数一定先出现,然后是有默认值的参数,最后才是变长的参数。16 / 16

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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