摘要: 描述: classmethod修饰符对应的函数不需要实例化,不需要self参数,但第一个参数需要是表示自身类的cls参数,可以来类的属性,类的方法,实例化对象等。 返回值: 返回函数的类方法 实例1: #!/usr/bin/python # -*- coding: UTF-8 -*- class A 阅读全文
posted @ 2020-08-28 15:47 马里奥本奥 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。 ​Python提供了pickle模块来实现序列化。 阅读全文
posted @ 2020-08-28 15:45 马里奥本奥 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 操作文件和目录的函数一部分在os模块中,一部分在os.path模块中。 查看、创建和删除目录: # 查看当前目录的绝对路径 >>> os.path.abspath('.') '/Users/michael' # 在某个目录下创建一个新目录,首先把新目录的完整路径表示出来 >>> os.path.jo 阅读全文
posted @ 2020-08-28 15:43 马里奥本奥 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 1、读文件 以读文件的模式打开一个文件对象,使用python内置的open()函数 >>> f = open('/Users/michael/test.txt', 'r') 如果文件不存在,open()函数就会抛出一个IOError的错误,并给出错误码和详细的信息 >>> f=open('/User 阅读全文
posted @ 2020-08-28 15:42 马里奥本奥 阅读(118) 评论(0) 推荐(0) 编辑
摘要: try: try: print('try...') r = 10 / 0 print('result:', r) except ZeroDivisionError as e: print('except:', e) finally: print('finally...') print('END') 阅读全文
posted @ 2020-08-28 15:41 马里奥本奥 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 枚举类和元类 枚举类 from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) 可以直接使用Mon 阅读全文
posted @ 2020-08-28 15:40 马里奥本奥 阅读(122) 评论(0) 推荐(0) 编辑
摘要: __slots__ 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。但是,如果我们想要限制实例的属性怎么办? 为了达到限制的目的,Python允许在定义class的时候,定义一个特殊的__slots__变量,来限制该c 阅读全文
posted @ 2020-08-28 15:38 马里奥本奥 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 实例属性与类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性。 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(self, name): self.name = name s = Student(' 阅读全文
posted @ 2020-08-28 15:37 马里奥本奥 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 继承和多态 们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。 当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在 阅读全文
posted @ 2020-08-28 15:35 马里奥本奥 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 以Student类为例,在Python中,定义类是通过class关键字: class Student(object): pass ​ class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有 阅读全文
posted @ 2020-08-28 15:32 马里奥本奥 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 在Python中,一个.py文件就称之为一个模块(Module)。 如果不同的人编写的模块名相同怎么办? 为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。 举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz 阅读全文
posted @ 2020-08-28 15:31 马里奥本奥 阅读(88) 评论(0) 推荐(0) 编辑
摘要: Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。 举例如下: int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换: >>> 阅读全文
posted @ 2020-08-28 15:24 马里奥本奥 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 定义函数: >>> def now(): ... print('2015-3-25') ... >>> f = now >>> f() 2015-3-25 函数对象有一个__name__属性,可以拿到函数的名字: >>> now.__name__ 'now' >>> f.__name__ 'now' 阅读全文
posted @ 2020-08-28 15:23 马里奥本奥 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 在Python中,对匿名函数提供了有限支持。 关键字lambda表示匿名函数,冒号前面的x表示函数参数。 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。 用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数 阅读全文
posted @ 2020-08-28 15:22 马里奥本奥 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 # 通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax # 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计 阅读全文
posted @ 2020-08-28 15:21 马里奥本奥 阅读(122) 评论(0) 推荐(0) 编辑
摘要: Python内置的sorted()函数就可以对list进行排序: >>> sorted([36, 5, -12, 9, -21]) [-21, -12, 5, 9, 36] 此外,sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序: >>> so 阅读全文
posted @ 2020-08-28 15:16 马里奥本奥 阅读(103) 评论(0) 推荐(0) 编辑
摘要: python内建得filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列,返回iterator。filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。 在一个list中,删掉偶数,只保留奇数,可以这么写: 阅读全文
posted @ 2020-08-28 15:15 马里奥本奥 阅读(180) 评论(0) 推荐(0) 编辑
摘要: MAP函数 map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。 >>> def f(x): ... return x * x ... >>> r = map(f, [1, 2, 3, 4, 5, 6, 7 阅读全文
posted @ 2020-08-28 15:13 马里奥本奥 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 函数名也是变量 传入函数 既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。 一个最简单的高阶函数: def add(x, y, f): return f(x) + f(y) 当我们调用add(-5, 6, abs)时,参数x,y和f分别 阅读全文
posted @ 2020-08-28 15:12 马里奥本奥 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 可以直接作用于for循环的数据类型有: 集合数据类型:list、tuple、dict、set、str generator,包括生成器和带yield的generator function。 这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。 可以使用isinstance()判断一个 阅读全文
posted @ 2020-08-28 15:05 马里奥本奥 阅读(105) 评论(0) 推荐(0) 编辑