一、pipreqs的使用
咱们写项目,项目的依赖:requirements.txt文件
多种方式实现:
- 手写
- 虚拟环境:
pip freeze > requirements.txt
- 使用第三方插件自动生成:只生成当前项目所依赖的模块
安装项目依赖:pip3 install pipreqs==0.4.0
项目根路径下执行,生成依赖文件:pipreqs ./ --encoding=utf-8
(windows需指定utf-8编码)
安装依赖文件:pip3 install -r requirements.txt
二、函数和方法
函数就是普通函数,不会自动传值
方法是函数,但是它会自动传值,面向对象中概念
方法,你得看谁来调用,如果类调用对象的方法,它就变成了普通函数,就不是方法了
示例:
from types import MethodType, FunctionType
class Foo(object):
def fetch(self): # 绑定给对象的方法,正常应该对象来掉用,就是方法
pass
# isinstance:判断一个对象是不是一个类的对象(包含父类)
# print(isinstance(Foo.fetch, MethodType)) # False,变成了函数
#
# print(isinstance(Foo.fetch, FunctionType)) # True
obj = Foo()
print(isinstance(obj.fetch, MethodType)) # True
print(isinstance(obj.fetch, FunctionType)) # False
三、偏函数
偏函数的第二个部分(可变参数),按原有函数的参数顺序进行补充,参数将作用在原函数上,最后偏函数返回一个新函数。
from functools import partial
# 提前传参,延迟计算
def add(a, b, c):
return a + b + c
# res=add(3,4,5)
# print(res)
res = partial(add, 3)
# res 就是偏函数,提前先给add函数传了一个参数3,还没执行add,以后执行传两个参数就可以了,使用res
# print(res)
r=res(4,5)
print(r)