最新python学习笔记资料Word格式.docx
- 文档编号:16924435
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:16
- 大小:22.56KB
最新python学习笔记资料Word格式.docx
《最新python学习笔记资料Word格式.docx》由会员分享,可在线阅读,更多相关《最新python学习笔记资料Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
map(chr,range(97,101))
['
'
b'
c'
d'
]
在将列表中的字符连接起来:
"
"
.join(map(chr,range(97,101)))
abcd'
三、os模块:
1、getcwd():
返回一个表示当前工作目录的字符串,比如:
>
os.getcwd()
F:
\\films'
type(os.getcwd())
str'
2、listdir():
返回一个参数所指定目录的所有文件名字符串的列表,比如:
type(os.listdir(os.getcwd()))
os.listdir(os.getcwd())
.metadata'
.project'
.pydevproject'
src'
四、内置数据类型:
1、list:
注意:
使用extend()添加元素时,注意参数时list,比如:
list.extend("
asdasdsa"
list
s'
list.extend(['
adasdsada'
])
list.extend(213121)
Traceback(mostrecentcalllast):
File"
stdin>
line1,in<
module>
TypeError:
'
int'
objectisnotiterable
12121"
1'
2'
在python中,字符串就是一个序列,看成一个列表类型。
五、模块
python的模块---最高级的程序组织单位。
1、模块中的语句:
比如print语句
2、模块的属性:
内置属性:
每个模块中都有内置模块。
dir()
__builtins__'
__doc__'
__name__'
__package__'
自定义属性:
就是在模块中定义的属性。
比如:
count=0
str="
iloveyou"
count'
3、模块中的函数:
内置函数:
可以在模块中直接调用。
一些常用内置函数,比如:
range()与xrange()
以下常用内置函数:
▪help(obj)
在线帮助,
obj可是任何类型
▪callable(obj)
查看一个obj是不是可以像函数一样调用
▪repr(obj)
得到obj的表示字符串,可以利用这个字符串eval重建该对象的一个拷贝
▪eval_r(str)
表示合法的python表达式,返回这个表达式
▪dir(obj)
查看obj的name
space中可见的name
▪hasattr(obj,name)
查看一个obj的name
space中是否有name
▪getattr(obj,name)
得到一个obj的name
space中的一个name
▪setattr(obj,name,value)
为一个obj的name
space中的一个name指向vale这个object
▪delattr(obj,name)
从obj的name
space中删除一个name
▪vars(obj)
返回一个object的name
space。
用dictionary表示
▪locals()
返回一个局部name
space,用dictionary表示
▪globals()
返回一个全局name
▪type(obj)
查看一个obj的类型
▪isinstance(obj,cls)
查看obj是不是cls的instance
▪issubclass(subcls,supcls)
查看subcls是不是supcls的子类
类型转换函数:
▪chr(i)
把一个ASCII数值,变成字符
▪ord(i)
把一个字符或者unicode字符,变成ASCII数值
▪oct(x)
把整数x变成八进制表示的字符串
▪hex(x)
把整数x变成十六进制表示的字符串
▪str(obj)
得到obj的字符串描述
▪list(seq)
把一个sequence转换成一个list
▪tuple(seq)
把一个sequence转换成一个tuple
▪dict(),dict(list)
转换成一个dictionary
▪int(x)
转换成一个integer
▪long(x)
转换成一个long
interger
▪float(x)
转换成一个浮点数
▪complex(x)
转换成复数
▪max(...)
求最大值
▪min(...)
求最小值
自定义函数:
自己定义的函数,使用关键字def定义的,不需要定义返回类型,Python能返回任何类型。
deffunc():
...print"
helloworld!
func()
lambda函数:
格式如下:
lambdaarg1,arg2,…:
表达式
g=lambdax,y:
x*y
printg(12,12)
144
printg
function<
lambda>
at0x00DEE930>
表示:
lambda语句构建的其实是一个函数对象
比如以下的一些应用:
foo=[1,2,4,5,6,7,8,9,10]
printfilter(lambdax:
x%2==0,foo)
[2,4,6,8,10]
printmap(lambdax:
x+10,foo)
[11,12,14,15,16,17,18,19,20]
printreduce(lambdax,y:
x+y,foo)
52
generator函数:
该函数的定义域普通函数的定义没有什么区别,只是在函数体内使用yield生成数据项即可。
与yield关键字的使用。
defgene():
...foriinrange(10):
...yieldi使用了yield关键字
printgene()
generatorobjectgeneat0x00DE2B70>
#表示是generator函数对象
使用for循环对generator进行遍历,如下:
foriingene():
...printi
1
2
3
4
5
6
7
8
9
使用generator函数对象中next()方法遍历,如下:
generator=gene()
printgenerator.next()
…….
StopIteration
Yield与return的区别:
如下代码:
...foriinrange(5):
...returni
printfunc()
而yield:
yield关键字:
包含yield语句的函数会被特地编译成生成器。
当函数被调用时,他们返回一个生成器对象,这个对象支持迭代器接口。
函数也许会有个return语句,但它的作用是用来yield产生值的。
六、python中的变量和常量:
常量:
Python中不像java使用关键字(staticfinal)来声明一个常量,python中没有提供关键字,可以自己定义个常量类来存放常量
局部变量:
通常是在函数或者类的方法中直接使用,在该函数或者类方法之外,不能引用该变量。
全局变量:
在程序文件中任何地方都可以引用,包括函数和类的内部;
但是如果在函数和类中对全局变量赋值,必须在该函数或者类中声明该变量为全局变量,否则经过赋值操作后,变量为本地变量。
重点:
如果在函数或类中对全局变量进行了赋值,则该全局变量就变成了局部变量,无论是在引用该变量之前还是在引用该变量之后。
如果在函数或类中未对全局变量进行赋值操作,那么对于该函数来说,此变量是一个全局变量。
所以,这时有一个问题,怎样才能在函数或类中对全局变量进行重新赋值呢?
这时就要使用到global关键字。
global的作用是:
声明为全局变量,那么无论是否对其进行了赋值操作,该变量都将作为全局变量。
在函数或类中使用global声明的变量,就为全局变量,比如:
...globalaaaa
...aaaa="
12321312321"
...printaaaa
12321312321
printaaaa
七、python中的面向对象:
1、self关键字:
类中的方法必须有一个self参数。
2、属性和方法
访问权限:
python中的私有属性和私有方法不像java中的私有属性,使用private修饰符,而是在属性或方法的名字前面使用两个下划线表示私有性。
比如__price,__grow()分别表示的是私有属性和私有方法。
类的外部不能访问私有属性。
怎样访问类中的私有属性:
格式:
Instance._classname__attribute,比如:
apple._Fruit__color
通常不采用以上做法来访问私有属性,而是与java一样,通过setter与getter实现。
属法:
类属性可以被类访问,也可以被实例对象访问,但是实例属性只能被实例访问。
与java不同的是,java中使用static关键字修饰类属性,而python中不使用任何修饰符,只要声明一下就可以,但是实例属性要使用self关键字作为前缀的。
实例属性:
以self作为前缀的属性。
类属性:
直接声明的变量,python中类属性都能被类和对象访问。
类的内置属性:
用于管理内的内部关系,比如:
__dict__、__base__、__doc__
方法:
类中的方法至少要有一个参数,调用时不必给该参数赋值,该参数就是self。
相当于java中的this关键字。
Self:
用于区分函数和类的方法。
注意函数要与方法区分开来。
静态方法:
Python使用函数staticmethod()或@staticmethod把普通的函数转换为静态方法。
@staticmethod
defgetPrice():
printFruit.price
def__getPrice():
Fruit.price=Fruit.price+10
count=staticmethod(__getPrice)
python的静态方法没有和类的实例进行名称绑定,python的静态方法相当于全局函数。
类方法:
Python使用函数classmethod()或@classmethod把方法转换为静态方法,这时的方法必须要有参数。
@classmethod
defgetPrice(self):
def__getPrice(self):
count=classmethod(__getPrice)
3、类中的构造函数:
__init__()
4、析构函数:
__del__()
显示释放对象占用的资源,是一种释放资源的方法。
默认自动执行。
如果程序中不提供析构函数,会在后台提供默认的析构函数。
5、垃圾回收机制:
Python使用gc模块。
6、类的内置方法:
__init__(self,…):
初始化对象,在创建新对象时调用
__new__():
在__init__()之前被调用,用于生产实例对象。
__getitem__(self,key):
把类中的属性定义为序列
__str__:
使用print语句时被调用,打印对象的信息,类似于java中object中的toString()方法。
该方法中必须使用return语句。
7、方法的动态特性:
将一个已经定义好的函数添加到类中,还可以对已经定义好的方法进行修改。
语法如下:
Class_name.method_name=function_name
Class_name:
类名
Method_name:
新的方法名
Function_name:
已经定义好的函数
添加与修改的语法一样,只是method_name表示的含义不一样,添加表示新的名称,修改表示已存在的方法名。
修改的时候,原来的类中方法的名字不变,只是将方法中的内容改变。
比如:
classFruit4:
pass
defadd(self):
print"
grow..."
if__name__=="
__main__"
:
Fruit4.grow=add
fruit4=Fruit4()
fruit4.grow()
8、继承:
在类名后使用一对括号表示继承关系。
如果在父类中定义了__init__方法,子类在自己的__init__方法中必须显示调用父类中的__init__方法,如果子类要扩展父类中的行为,可以添加__init__方法的参数。
classApple(Fruit):
def__init__(self,color):
Fruit.__init__(self)调用父类中的__init__方法
类似于java中的super关键字,在java中,首先实例化父类,再实例化子类。
这就是为什么要在子类的__init__中显示调用父类的__init__了。
在java中使用super关键字来调用父类中的构造方法,在子类的无参构造方法中,通常都隐藏了super,那么在python中还可以使用super类的super()调用父类的__init__方法。
在使用super时,父类要继承object。
因为super类的实现代码继承了object,所以父类必须继承object。
Super的语法:
super(type,obj)
type:
某个类
obj:
通常是type类的实例化对象,通常使用self关键字表示。
例子:
classFruit(object):
def__init__(self,args):
parent%s"
%args
classApple(Fruit):
super(Apple,self).__init__(args)
child"
Apple("
+++++"
如果在子类中没写__init__方法时,当子类在实例化时,会调用父类中的__init__方法,所以在使用时,就应该在子类中写上__init__方法。
在python中,是支持多继承的。
语法:
class_name(parent_class1,parent_class2,….)
在多重继承中,子类只会调用第一个被继承的类的__init__,即parent_class1类中的__init__方法。
比如以下代码:
def__init__(self):
print"
initializeFruit"
defgrow(self):
grow..."
classVegetable(object):
initializeVegetable"
defplant(self):
plant...."
classWatermelon(Fruit,Vegetable):
pass
w=Watermelon()
w.grow()
w.plant()
9、抽象类:
抽象类有抽象方法组成。
Java中抽象类不可以实例化,通过子类实例化。
Python也是。
在java中可以使用abstract修饰符来声明抽象类,而python中只能用一个普通类来表示,怎样来声明一个抽象类呢?
可以通过python的NotImplementedError类来模拟抽象类。
NotImplementError类继承自Python运行时错误类RuntimeError。
在python中实现抽象类是这样的:
如果对该类进行实例化时,就抛出异常。
比如代码:
#抽象类
classFruit:
ifself.__class__isFruit:
#如果实例化的类是Fruit,则抛出异常
try:
abstract()
except:
抽象类不能实例化"
return
Fruit.__init__(self)#调用父类的__init__
apple"
apple=Apple()
f=Fruit()
10、多态性:
通过子类为父类实例化,向上转型。
这时的对象只能调用父类中的属性和方法。
在python中,有这样一个方法判断某个实例是不是属于某个类,该方法是:
isinstance(object,class_or_type_or_tuple)
def__init__(self,color=None):
self.color=color
def__init__(self,color="
red"
):
Fruit.__init__(self,color)
classBanana(Fruit):
yellow"
classFruitShop:
defsellFruit(self,fruit):
ifisinstance(fruit,Apple):
#判断参数fruit的类型
sellapple"
ifisinstance(fruit,Banana):
sellbanana"
ifisinstance(fruit,Fruit):
sellFruit"
shop=FruitShop()
apple=Apple("
banana=Banana("
shop.sellFruit(apple)
shop.sellFruit(banana)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 python 学习 笔记 资料
![提示](https://static.bdocx.com/images/bang_tan.gif)