Python个人笔记之欧阳结创编.docx
- 文档编号:6130898
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:17
- 大小:26.61KB
Python个人笔记之欧阳结创编.docx
《Python个人笔记之欧阳结创编.docx》由会员分享,可在线阅读,更多相关《Python个人笔记之欧阳结创编.docx(17页珍藏版)》请在冰豆网上搜索。
Python个人笔记之欧阳结创编
Python
1.
时间:
2021.02.14
创作:
欧阳结
2.概述
1)Python是大小写敏感
2)注释
●注释不仅可以用来解释临近的代码,还可以组织代码的运行。
一个很好的例子就是Django的settings.py配置文件。
●任何在#符号右面的内容都是注释.
●Python至少应当有第一行那样的特殊形式的注释。
它被称作组织行——源文件的头两个字符是#!
,后面跟着一个程序。
这行告诉你的Linux/Unix系统当你执行你的程序的时候,它应该运行哪个解释器。
3)在Python中有4种类型的数——整数、长整数、浮点数和复数。
3.对象的布尔类型
1)可以用bool函数来决定任何Python对象的布尔值
●bool(x):
当且仅当x=0时,返回False
●bool(None)返回Fasle
●bool([None,0])返回True
●bool([0,0])返回True
4.数字
1)Python有两个主要的数值类型:
int(整数)和float(浮点数)。
【老版本中的整数类型long现在已经被合并到了int】
2)另外,还有一个Decimal,但不是内置类型,必须通过decimal模块访问,它的范围比较小,但是更精确。
3)内置数据类型int:
带符号整数(没有大小限制)
4)内置数据类型float:
双精度浮点数
5)内置数据类型complex:
复数(实部+虚部)
5.字符串
1)单双引号:
在双引号中的字符串与单引号中的字符串的使用完全相同。
2)使用三引号(’’’或”””):
利用三引号,你可以指示一个多行的字符串。
你可以在三引号中自由的使用单引号和双引号。
3)转义字符:
如果你想要指示某些不需要如转义符那样的特别处理的字符串,那么你需要指定一个自然字符串。
自然字符串通过给字符串加上前缀r或R来指定。
4)Unicode字符:
处理Unicode文本——你只需要在字符串前加上前缀u或U。
5)字符串是不可变的
6)按字面意义级连字符串:
如果你把两个字符串按字面意义相邻放着,他们会被Python自动级连。
例如,'What\'s''yourname?
'会被自动转为"What'syourname?
"。
【用“+”效果一样,但效率比较低下。
可用方法:
a.用字符串的格式化操作符%;b.用jion方法;c.对于列表来说,extend方法也可以把另一个列表的内容加进来(相比list1+=list2,list1.extend(list2)要好得多)】
6.标识符的命名
1)变量是标识符的例子。
标识符是用来标识某样东西的名字。
在命名标识符的时候,你要遵循这些规则:
●标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘_’)。
●标识符名称的其他部分可以由字母(大写或小写)、下划线(‘_’)或数字(09)组成。
●标识符名称是对大小写敏感的。
7.对象:
Python把在程序中用到的任何东西都称为对象。
8.如何编写Python程序
下面是保存和运行Python程序的标准流程。
1).打开你最喜欢的编辑器。
2).输入例子中的程序代码。
3).用注释中给出的文件名把它保存为一个文件。
我按照惯例把所有的Python程序都以扩展名.py保存。
4).运行解释器命令pythonprogram.py或者使用IDLE运行程序。
你也可以使用先前介绍的可执行的方法。
9.逻辑行与物理行
1)如果你想要在一个物理行中使用多于一个逻辑行,那么你需要使用分号(;)来特别地标明这种用法。
分号表示一个逻辑行/语句的结束。
2)强烈建议你坚持在每个物理行只写一句逻辑行。
10.运算符:
1)**(幂运算)
2)/除
3)//求余
4)~按位翻转
5)and布尔“与”
6)or布尔“或”
7)not布尔“非”
8)备注:
没有自增/自减运算符(即++,)
11.运算符的优先级(从最低的优先级(最松散地结合)到最高的优先级(最紧密地结合)):
运算符
描述
lambda
Lambda表达式
or
布尔“或”
and
布尔“与”
notx
布尔“非”
in,notin
成员测试
is,isnot
同一性测试
<,<=,>,>=,!
=,==
比较
|
按位或
^
按位异或
&
按位与
<<,>>
移位
+,
加法与减法
*,/,%
乘法、除法与取余
+x,x
正负号
~x
按位翻转
**
指数
x.attribute
属性参考
x[index]
下标
x[index:
index]
寻址段
f(arguments...)
函数调用
(experession,...)
绑定或元组显示
[expression,...]
列表显示
{key:
datum,...}
字典显示
'expression,...'
字符串转换
12.控制语句:
在Python中有三种控制流语句——if、for和while。
1)if
#*coding:
cp936*
#Filename:
if.py
number=23
grade=int(raw_input('请输入您的成绩:
'))
ifgrade>=90:
print'成绩优秀!
'
elifgrade>=80:
print'成绩良好!
'
elifgrade>=70:
print'成绩合格!
'
else:
print'还需要加油哦!
'
2)while循环【while语句有一个可选的else从句。
】
#*coding:
cp936*
#Filenamewhile.py
number=99
option=True
whileoption:
guess=int(raw_input('请输入一个数字:
'))#接受用户的输入
ifnumber==guess:
print'恭喜您!
猜中了!
'
option=False
else:
print'抱歉,您没有猜中哦!
重来吧!
'
else:
print'谢谢您的参与!
'
3)for循环【for..in是另外一个循环语句,它在一序列的对象上递归即逐一使用队列中的每个项目】
●我们所做的只是提供两个数,range返回一个序列的数。
这个序列从第一个数开始到第二个数为止。
例如,range(1,5)给出序列[1,2,3,4]。
默认地,range的步长为1。
如果我们为range提供第三个数,那么它将成为步长。
例如,range(1,5,2)给出[1,3]。
记住,range向上延伸到第二个数,即它不包含第二个数。
●else部分是可选的。
如果包含else,它总是在for循环结束后执行一次,除非遇到break语句。
4)break语句:
如果你从for或while循环中终止,任何对应的循环else块将不执行。
5)continue语句:
continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
13.函数
1)函数的定义:
defsayHello():
2)定义全局变量:
global关键字;可以使用同一个global语句指定多个全局变量。
例如globalx,y,z。
3)pass语句在Python中表示一个空的语句块。
14.DocStrings:
1)Python有一个很奇妙的特性,称为文档字符串,它通常被简称为docstrings。
DocStrings是一个重要的工具,由于它帮助你的程序文档更加简单易懂,你应该尽量使用它。
你甚至可以在程序运行的时候,从函数恢复文档字符串!
2)惯例:
文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。
第二行是空行,从第三行开始是详细的描述。
3)你可以使用__doc__(注意双下划线)调用printMax函数的文档字符串属性(属于函数的名称)。
15.模块
1)模块基本上就是一个包含了所有你定义的函数和变量的文件。
2)为了在其他程序中重用模块,模块的文件名必须以.py为扩展名。
3)记住,脚本的名称总是sys.argv列表的第一个参数。
4)创建字节编译的文件,这些文件以.pyc作为扩展名。
字节编译的文件与Python变换程序的中间状态有关。
当你在下次从别的程序输入这个模块的时候,.pyc文件是十分有用的——它会快得多,因为一部分输入模块所需的处理已经完成了。
另外,这些字节编译的文件也是与平台无关的。
5)如果你想要直接输入argv变量到你的程序中(避免在每次使用它时打sys.),那么你可以使用fromsysimportargv语句。
如果你想要输入所有sys模块使用的名字,那么你可以使用fromsysimport*语句。
这对于所有模块都适用。
一般说来,应该避免使用from..import而使用import语句,因为这样可以使你的程序更加易读,也可以避免名称的冲突。
6)每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。
这在一个场合特别有用——就如前面所提到的,当一个模块被第一次输入的时候,这个模块的主块将被运行。
假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?
这可以通过模块的__name__属性完成。
7)dir():
●你可以使用内建的dir函数来列出模块定义的标识符。
标识符有函数、类和变量。
●默认地,它返回当前模块的属性列表。
●>>>a=5#createanewvariable'a'.
●dela,你将无法再使用变量a——它就好像从来没有存在过一样。
16.数据结构
1)在Python中有三种内建的数据结构——列表、元组和字典.
2)列表:
●list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目。
●而在Python中,你在每个项目之间用逗号分割。
●列表中的项目应该包括在方括号中,这样Python就知道你是在指明一个列表。
●一旦你创建了一个列表,你可以添加、删除或是搜索列表中的项目。
●由于你可以增加或删除项目,我们说列表是可变的数据类型,即这种类型是可以被改变的。
●常用方法:
append(x),insert(x,x),remove(x),pop(),extend(x),sort()
3)元组(tuple):
●元组和列表十分类似,只不过元组和字符串一样是不可变的,即你不能修改元组。
●元组通过圆括号中用逗号分割的项目定义。
●元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,即被使用的元组的值不会改变。
●len函数可以用来获取元组的长度。
●含有0个或1个项目的元组。
一个空的元组由一对空的圆括号组成,如myempty=()。
然而,含有单个元素的元组就不那么简单了。
你必须在第一个(唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。
即如果你想要的是一个包含项目2的元组的时候,你应该指明singleton=(2,)。
●元组与打印语句
#!
/usr/bin/python
#Filename:
print_tuple.py
age=22
name='Swaroop'
print'%sis%dyearsold'%(name,age)
print'Whyis%splayingwiththatpython?
'%name
4)字典:
字典是可变的、无序的、大小可变的键值映射,亦称散列表。
●字典类似于你通过联系人名字查找地址和联系人详细情况的地址簿,即,我们把键(名字)和值(详细情况)联系在一起。
注意,键必须是唯一的,就像如果有两个人恰巧同名的话,你无法找到正确的信息。
●注意,你只能使用不可变的对象(比如字符串)来作为字典的键,但是你可以不可变或可变的对象作为字典的值。
基本说来就是,你应该只使用简单的对象作为键。
●键值对在字典中以这样的方式标记:
d={key1:
value1,key2:
value2}。
注意它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。
●记住字典中的键/值对是没有顺序的。
如果你想要一个特定的顺序,那么你应该在使用前自己对它们排序。
5)序列
●列表、元组和字符串都是序列。
●序列的两个主要特点是索引操作符和切片操作符。
索引操作符让我们可以从序列中抓取一个特定项目。
切片操作符让我们能够获取序列的一个切片,即一部分序列。
●切片操作符是序列名后跟一个方括号,方括号中有一对可选的数字,并用冒号分割。
注意这与你使用的索引操作符十分相似。
记住数是可选的,而冒号是必须的。
●切片操作符中的第一个数(冒号之前)表示切片开始的位置,第二个数(冒号之后)表示切片到哪里结束。
如果不指定第一个数,Python就从序列首开始。
如果没有指定第二个数,则Python会停止在序列尾。
注意,返回的序列从开始位置开始,刚好在结束位置之前结束。
6)参考【个人理解:
即引用】
●当你创建一个对象并给它赋一个变量的时候,这个变量仅仅参考那个对象,而不是表示这个对象本身!
也就是说,变量名指向你计算机中存储那个对象的内存。
这被称作名称到对象的绑定。
#!
/usr/bin/envpython
#Filename:
reference.py
print'SimpleAssignment'
shoplist=['apple','mango','carrot','banana']
mylist=shoplist#mylistisjustanothernamepointingtothesameobject!
delshoplist[0]
print'shoplistis',shoplist
print'mylistis',mylist
#noticethatbothshoplistandmylistbothprintthesamelistwithout
#the'apple'confirmingthattheypointtothesameobject
print'Copybymakingafullslice'
mylist=shoplist[:
]#makeacopybydoingafullslice
delmylist[0]#removefirstitem
print'shoplistis',shoplist
print'mylistis',mylist
#noticethatnowthetwolistsaredifferent
●如果你想要复制一个列表或者类似的序列或者其他复杂的对象(不是如整数那样的简单对象),那么你必须使用切片操作符来取得拷贝。
7)字符串
●你在程序中使用的字符串都是str类的对象。
●startwith方法是用来测试字符串是否以给定字符串开始。
●in操作符用来检验一个给定字符串是否为另一个字符串的一部分。
●find方法用来找出给定字符串在另一个字符串中的位置,或者返回1以表示找不到子字符串。
●str类也有以一个作为分隔符的字符串join序列的项目的整洁的方法,它返回一个生成的大字符串。
●isupper()是否是大写
●title()大写每个单词的第一个字母
●strip()移除行首行尾的空白符
17.我们可以使用物理行尾的反斜杠来表示逻辑行在下一物理行继续。
18.面向对象:
1)简介
●对象可以使用普通的属于对象的变量存储数据。
●属于一个对象或类的变量被称为域。
对象也可以使用属于类的函数来具有功能。
这样的函数被称为类的方法。
这些术语帮助我们把它们与孤立的函数和变量区分开来。
域和方法可以合称为类的属性。
●域有两种类型——属于每个实例/类的对象或属于类本身。
它们分别被称为实例变量和类变量。
●类使用class关键字创建。
类的域和方法被列在一个缩进块中。
2)self:
●假如你有一个类称为MyClass和这个类的一个实例MyObject。
当你调用这个对象的方法MyObject.method(arg1,arg2)的时候,这会由Python自动转为MyClass.method(MyObject,arg1,arg2)——这就是self的原理
3)__init__方法:
●__init__方法在类的一个对象被建立时,马上运行。
这个方法可以用来对你的对象做一些你希望的初始化。
注意,这个名称的开始和结尾都是双下划线。
●__init__方法类似于C++、C#和Java中的constructor。
4)类与对象的方法:
●有两种类型的域——类的变量和对象的变量,它们根据是类还是对象拥有这个变量而区分。
●类的变量由一个类的所有对象(实例)共享使用。
只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。
●对象的变量由类的每个对象/实例拥有。
因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。
●Python中所有的类成员(包括数据成员)都是公共的,所有的方法都是有效的。
●只有一个例外:
如果你使用的数据成员名称以双下划线前缀比如__privatevar,Python的名称管理体系会有效地把它作为私有变量。
●这样就有一个惯例,如果某个变量只想在类或对象中使用,就应该以单下划线前缀。
而其他的名称都将作为公共的,可以被其他类/对象使用。
记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。
同样,注意__del__方法与destructor的概念类似。
5)举例
#*coding:
cp936*
#Filename:
extends.py
#成员类基类
classMember:
def__init__(self,name,age):
self.name=name
self.age=age
print'IntinalizedMember:
',self.name
deftell(self):
'''Tellmydetails.'''
print'Name:
"%s"age:
"%s"'%(self.name,self.age),
#老师类继承自成员类
classTeacher(Member):
'''Iamateacher.'''
def__init__(self,name,age,salary):
Member.__init__(self,name,age)
self.salary=salary
print'(InitializedTeacher:
%s)'%self.name
deftell(self):
Member.tell(self)
print'Salary:
"%d"'%self.salary
#学生类继承自成员类
classStudent(Member):
'''Iamastudent'''
def__init__(self,name,age,grade):
Member.__init__(self,name,age)
self.grade=grade
print'(InitializedStudent:
%s)'%self.name
deftell(self):
Member.tell(self)
print'Grade:
"%d"'%self.grade
t=Teacher('XDavid',23,9000)
s=Student('JJohn',21,89)
members=[t,s]
formenberinmembers:
menber.tell()
19.输入和输出
1)读文件:
defread_file(file_name):
f=file(file_name)
whileTrue:
line=f.readline()
iflen(line)==0:
break
printline
f.close()
2)写文件:
defwrite_file(context,filname):
fil=file(filname,'w')
fil.write(context)
fil.close()
20.存储器
1)Python提供一个标准的模块,称为pickle。
使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。
这被称为持久地储存对象。
2)还有另一个模块称为cPickle,它的功能和pickle模块完全相同,只不过它是用C语言编写的,因此要快得多(比pickle快1000倍)。
3)我们把这两个模块都简称为pickle模块。
4)为了在文件里储存一个对象,首先以写模式打开一个file对象,然后调用储存器模块的dump函数,把对象储存到打开的文件中。
这个过程称为储存。
5)接下来,我们使用pickle模块的load函数的返回来取回对象。
这个过程称为取储存。
#!
/usr/bin/python
#Filename:
pickling.py
importcPickleasp
#importpickleasp
shoplistfile='shoplist.data'
#thenameofthefilewherewewillstoretheobject
shoplist=['apple','mango','carrot']
#Writetothefile
f=file(shoplistfile,'w')
p.dump(shoplist,f)#dumptheobjecttoafile
f.close()
delshoplist#removetheshoplist
#Readbackfromthestorage
f=file(shoplistfile)
storedlist=p.load(f)
printstoredlist
21.异常:
1)try..except
●用try..except语句来处理异常。
我们把通常的语句放在try块中,而把我们的错误处理语句放在except块中。
●except从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。
如果没有给出错误或异常的名称,它会处理所有的错误和异常。
对于每个try从句,至少都有一个相关联的except从句。
●如果某个错误或异常没有被处理,默认的Python处理器就会被调用。
它会终止程序的运行,并且打印一个消息。
●你还可以让try..catch块关联上一个else从句。
当没有异常发生的时候,else从句将被执行。
2)引发异常
●你可以使用rais
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 个人 笔记 欧阳 创编
![提示](https://static.bdocx.com/images/bang_tan.gif)