在保证面向对象编程下,尽量少生成函数代码。
from functools import partial
import os
path = os.path.dirname(os.path.abspath(os.path.dirname(__file__)))
#python用partial和生平不见陈近南一样,学了partial会更加好。
def check_dir(dirname,filename): #(dirname,filename)形参列表
"""
检查上面的文件夹和文件是否存在,如果不存在就创建
:param dirname:
:param filename:
:return:
"""
dirpath = path + os.sep + dirname
if os.path.exists(dirpath):
if os.path.exists(dirpath+os.sep+filename):
print("文件夹和文件已存在")
else:
os.makedirs(dirpath)
file = open(dirpath + os.sep + filename, 'w')
file.close() # 关闭文件句柄
check_1 =partial(check_dir,filename="__init__.py") #本质是用关键字参数来填充 形参列表的第2个参数
check_2 =partial(check_dir,filename="__init__.py") #同上
check_1("test3") #本质是形参列表的第一个参数
check_2("test2")
上面是创建在项目根目录下,按形参列表第一个参数去创建文件夹。形参列表第二个参数是用来添加文件的。
这段似乎对于形参列表多个没有描述清楚。
形参列表数量>2 的解释
def sum(a, b,c,d):
"""
实体sum函数,提供给下面复用
:param a:
:param b:
:return:
"""
return a + b +c+d
#默认作用函数作为partial()函数的第一个参数
sum_1 =partial(sum,b=10,c=10)
print(sum_1(20,d=10))
print(sum_1(a=20,d=10)) #这个同上
python 不是没重载吗。看完下面的,这个是什么哇?结合专栏上面一篇文章的
import sys
module = sys.modules[__name__]
print(module) #看看是啥<module '__main__' from 'E:/invoke/actions/invoke_t.py'>
if hasattr(module,"sum"):
get_sum =getattr(module,"sum")
sum_2 =partial(get_sum,b=10,c=15,d=5)
print(sum_2(5))