1.Python的伪私有方法
class A(object):
def __init__(self, age):
self._age = age
print(self._age) 私有属性在类内部可以被调用
def __play(self): 私有方法在函数内外部不能通过正常方法调用
print('我爱我家')
a = A('21')
a._A__play() 类._类名__私有方法名 调用
输出: 21 我爱我家
2.工厂模式
3个子类和一个工厂类
最终输出为 6
3.初始化__init__ 和 __new__的区别
有返回对象的结果
没有的结果 (去掉 return 那行)
当类被创建时调用 __new__方法,被实例化时调用__init__方法;
__new__方法被调用需要返回对象,否则无法被接收而__init__方法不用返回
当两种方法都存在时首先执行__new__方法,有返回值时执行__init__方法,没有返回则不执行
4.猴子补丁
class A(object):
def bar(self):
print('hello')
def bar(self):
print('hi')
A().bar()
A.bar = bar #使用外部函数替换方法
A().bar()
输出
hello
hi
5.jwt盐值生成 Token 并解析
结果
6.知识点总结
python 读取大文件内容
使用 with ...open 方式
以 rb 二进制方式读取提高效率
read() 默认读取全部内容
使用 read(size) 设置每次读取的文件大小
使用 readlines() 以行为单位,读取全部
使用 readline() 一次的读取一行,可以循环读取全部
with open('ll.py', 'rb') as f:
line = f.readline()
while line:
print(line)
line = f.readline()
f.close()
dir()内置函数
无参数时 dir() 获取当前模块的属性列表
有参数时 查看其所有方法 dir( [ ] )
range() 与 xrange()
第一个 python2 返回列表 ,python3 为了节省内存,返回可迭代对象
第二个 python2 是可迭代对象 ,python3 取消
只有数值型和字符串型
a is b 才为 True (比较的是存储地址)
即使 a 和 b值相同
7. 附注
使用可变参数 *args 传递参数时最终会返回一个元组
使用关键字参数 **kwargs传递字典则不会
全局变量
x=10
def f():
global x
print(x)
x = 4
print(x)
f()
输出 10 4
作用:在函数内部想要改变全局变量的值
一行代码实现阶乘
reduce( lambda a, b: a*b, range(x, y+1))
功能:从 x 乘到 y