赞
踩
函数相关知识点:
1.函数文档
2.函数默认参数
3.函数关键字参数,如果使用了关键字参数的话,所有后面的参数都要使用关键字参数
4.函数可变参数
5.函数局部变量全局变量作用域
6.函数嵌套函数(内部函数)的变量作用域
7.闭包
8.lambda函数表达式 lambda x : x**2
冒号前面是参数,冒号后面是返回值
可以结合内置函数filter、map等,如下
list(filter(lambda x : True if x % 2 == 1 else False, range(10)))//将奇数过滤出来
list(map(lambda x : True if x % 2 == 1 else False, range(10)))//得到映射后的值
9.递归
字典相关知识
1.dict1 = {'haha':'我是haha的值', 'xixi':'我是xixi的值'}; dict2 = {1:'haha', 2:'xixi'}
dict1['haha'] --> '我是haha的值'
2.创建方式
dict1 = dict()
dict1 = {}
dict1 = dict( ((1, 'haha'), (2, 'xixi'), (3, 'gaga'), (4, 'mimi')) ) 用存在的映射关系来创建字典,可以将小括号元祖改成中括号列表
dict1 = dict(one='haha', two='xixi') 用关键字参数来创建字典, 这里key为数字的时候回出错
3.修改添加value
通过 dict1[ key ] = new_value 如果字典已经存在key,则会改变key的值为new_value,如果字典部存在key,则会添加键值对
dict1.setdefault(key[,d])如果字典已经存在key,则直接返回key对应的value,否则将键值对插入到字典中,并返回d
4.字典的内建方法
fromkeys(iterable, value=None), 将iterable所指向的一组keys的集合改成指定的value,默认为none,如:
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict1.fromkeys((1,3), 'haha')
{1: 'haha', 3: 'haha'}
5.字典元素的访问
for each in dict1.keys() 遍历字典里所有的key
for each in dict1.values() 遍历字典里所有的value
for each in dict1.items() 遍历字典里所有的键值对
6.字典键的访问
xxx in dict1 如果key在dict1里,则返回True,否则返回false
dict1.get(key[,d]) 如果key在dict1里,则返回dict1[key],否则返回d,d为可选,默认为None
7.字典的清空
dict1 = {} 此方法不推荐,比如dict2是dict1的一份赋值,调用dict1={}后,只是将dict1指向了一份新的内存,原来的数据还是存在的
dict1.clare() 此方法会将所有的浅拷贝都清空
8.字典的copy和赋值还是不一样的
>>> a = {1:'one', 2:'two'}
>>> b = a.copy()
>>> c = a
>>> c[3]='three'
>>> a
{1: 'one', 2: 'two', 3: 'three'}
>>> b
{1: 'one', 2: 'two'}
>>> c
{1: 'one', 2: 'two', 3: 'three'}
9.字典数据弹出
dict1.pop(key) 弹出字典里对应key的值
dict1.popitem() 随机弹出字典里的一对键值对
集合set相关知识
1.创建
set1 = set([1,2,3,4,5,5])
set1 = {1,2,3,4,5}
type(set1) ---------->
用花括号括起一堆数字,但是这堆数字没有体现映射关系,那么这堆数字就是一个集合
集合里所有的元素都是唯一的,重复的元素都会被剔除,但是集合是无序的,所以不能试图去索引集合中的某个元素
2.访问集合中的值
通过for把集合中的数据一个个读取出来
通过in和not in判断一个元素是否在集合中
3.添加&删除
set1.add(xxx)
set1.remove(xxx)
4.创建一个不可变的集合
set1 = frozenset([1,2,3,4,5])
set1.add(0) 这步会出错,因为这个集合是不可变
文件相关知识
1.打开文件
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
mode有以下几种:
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)
2.遍历文件里的所有行
for each_line in file:
print(each_line)
3.判断是否读到文件尾了
line = file.readline()
if not line:
...
4.文件对象常用方法
f.close()关闭文件
f.read([size=-1])从文件当前位置读取size个字符,size为-1时,读取所有字符,将字符返回
f.readline([size=-1])从当前位置读取并返回一行(包括行结束符),如果指定了size,则返回size字符(如果还没读完一行)
f.write(str)将字符串str写入文件,返回写入的字符数
f.writelines(seq)向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象(存放字符串的元祖、列表等)
f.seek(offset, from)移动文件指针,从from(0:起始位置1:当前位置2:文件尾部)偏移offset个字节
f.tell()返回当前在文件中的位置
f.truncate([size=file.tell()])截取文件到size个字节,默认是截取到当前文件指针的位置
os、os.path模块关于文件/目录/路径的常用函数
1.os模块
getcwd()返回当前工作目录
chdir(path)改变当前工作目录
listdir(path='.')列出指定目录下的文件
mkdir(path)创建单层目录,如目录已存在则抛出异常
makedirs(path)递归创建多层目录
remove(path)删除文件
rmdir(path)删除单层目录,目录下非空则抛出异常
removedirs(path)递归删除目录,如果指定目录不为空,则抛出异常,否则删除目录后再向父目录递归删除,直到遇到非空目录为止
rename(old, new)将文件名old重命名为new
system(command)执行系统的shell
stat(path)获取文件属性
walk(top)遍历top路径以下所有子目录,返回三元组:(路径,[包含目录],[包含文件])
os.curdir指代当前目录'.'
os.pardir指代上一级目录'..'
os.sep输出操作系统特定的路径分隔符(win下为'\\',linux下为'/')
os.linesep输出当前平台使用的终止符(win下为'\r\n',linux下为'\n')
os.name指代当前使用的操作系统(包括:'linux', 'nt', 'mac', 'java', 'ce'等)
2.os.path模块
basename(path)去掉路径,获取文件名os.path.basename(r"r:/python/hello.py") --> "hello.py"
dirname(path)去掉文件名,获取路径os.path.dirname(r"c:/python/hello.py") --> "c://python"
join(path1[,path2[,...]])将path1,path2各部分组合成一个路径名
split(path)分离文件名os.path.split(r"c:/python/hello.py") --> ("c://python", "hello.py")
splitext(path)分离扩展名os.path.splitext(r"c:/python/hello.py") --> ("c://python//hello", ".py")
getsize(file)获取文件的大小
getatime(file)返回文件最近的访问时间(可用time模块的gmtime()或localtime()函数换算)
getctime(file)返回文件的创建时间
getmtime(file)返回文件最近的修改时间
exists(path)判断文件是否存在
isabs(path)判断是否为绝对路径
isdir(path)判断是否是目录
isfile(path)判断是否是文件
islink(path)判断是否是连接文件
ismount(path)判断指定路径是否存在且是一个挂载点
samefile(path1,path2)判断path1和path2两个路径是否指向同一个文件
pickle模块
pickle的实质就是利用一些算法将数据以二进制的形式保存到磁盘文件,也可以保存到数据库或网络传输到另一台计算机上
1.存储数据
pickle.dump(object, file)其中file必须是以'wb'模式打开的文件
2.读取数据
pickle.load(file)其中file必须是以'rb'模式打开的文件
异常处理
try:
检查范围当try里某条语句出错了,会直接跳到except里异常处理代码,try里后续的语句将不会被执行
except Exception[as reason]: 也可以一行捕获多个异常-->except (Exception, Exception) :
出现异常后的处理代码
except Exception[as reason]:
出现异常后的处理代码
finally:
无论如何都会被执行的代码,如果是出现异常了,则先执行except里的语句块,再执行finally语句块
1.主动产生一个异常
raise() 如:raise(TypeError),raise(ZeroDivisionError('除数为0啦'))
else语句和with语句的用法
1.要么进if分支,要么进else分支
if xxx:
-----
else:
-----
2.当循环执行完毕后,会执行else分支,但是如果是通过break退出循环的,则不会执行else分支
while xxx: 或 for xx in xxxxx:
-----
else:
-----
3.当try语句未出现异常时,则会执行else分支,否则,就不会执行else分支
try:
-----
except xxx
-----
else:
-----
4.有时候当出现异常时,需要将之前获得的资源释放掉,比如打开的文件需要关闭,这时可使用with
f = open(xxx)
f.read()
f.close()
---->
with open(xxx) as f:
f.read()
退出之后,操作系统会自动帮我们关闭
with A() as a:
------>with A() as a, B() as b:
with B() as b:
suite
suite
包的导入方式
1. import package导入包package
采用这种导入方式的函数调用如 package.xxx()
2. import package as p 导入包package,并重命名为p
采用这种导入方式的函数调用如 p.xxx()
3. from package import *导入包package里的所有符号,包的命名空间就没有了
采用这种导入方式的函数调用如xxx()
推荐采用第二种
图形用户界面---EasyGui
官网:
http://easygui.sourceforge.net/
面向对象相关知识
python中的类名约定以大写字母开头
class Base:
pass
object是所有类的基类
1.self是什么?
用来绑定对象,python用它来区分是哪个对象在调用方法,第一个参数设为self即可,类似于c++的this指针,
2.类的构造方法
我们可以重写该方法,为对象定制初始化方案
__init__(self) 类似c++的构造函数
__init__(self, param1, param2, ...)
3.公有和私有(python的私有是伪私有,照样有方式可以访问到)
在python中定义私有变量只需要在变量名或函数名前加上'__'两个下划线,这样函数或变量就变成私有了
python事实上是采用一种叫"name mangling"技术,将私有变量的名字如__haha改成了_类名__haha,因此外部可通过 对象._类名__变量名 来访问私有成员
4.继承
class DerivedClassName(BaseClassName):
pass
派生类构造方法里调用基类的构造方法:
调用未绑定的父类方法
父类名.__init__(self)
使用super函数
super().__init__() self参数也不用传
如果多重继承的话,第一种方式就不可取,因为要调用每一个父类的构造,二使用super的话,会自动调用所有的父类构造方法
5.多重继承
class DerivedClassName(BaseClassName, BaseClassName1, BaseClassName2):
pass
6.组合
class A:
pass
class B:
pass
class C:
def __init__(self):
self.a = A()
self.b = B()
7.mixin机制
8.类、类对象、实例对象
9.什么是绑定
要求方法需要有实例才能被调用,这种限制其实就是python所谓的绑定概念
10.类和对象相关的BIF
issubclass(class, classinfo)
一个类被认为是自身的子类
classinfo可以是类对象组成的元祖,只要class是其中任何一个候选类子类,就返回True
isinstance(object, classinfo)
如果第一个参数不是对象,则永远返回False
如果第二个参数不是类或由类对象组成的元祖,则抛出一个TypeError异常
hasattr(object, name) 测试对象是否有指定的属性,属性名用字符串括起来
getattr(object, name[,default]) 有属性就返回属性值,否则就返回default,没指定default就抛出异常
getattr(object, name, value)
delattr(object, name) 删除对象的属性,如果属性不存在就抛出异常
property(fget=None, fset=None, fdel=None, doc=None)
前面三个参数分别是获取属性的方法、设置属性的方法、删除属性的方法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。