当前位置:   article > 正文

python知识点学习_python知识点学习【未完】

python知识点学习_python知识点学习【未完】

函数相关知识点:

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)

前面三个参数分别是获取属性的方法、设置属性的方法、删除属性的方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/824783
推荐阅读
相关标签
  

闽ICP备14008679号