我创建了几个函数
#generate .h file template for class
def generateHeaderClassTemplate(name):
template = open('header.template', 'r')
code = parseHeaderTemplate(template.read(), name)
template.close()
return code
#generate .cpp file template for class
def generateImplClassTemplate(name):
template = open('class.template', 'r')
code = parseImplTemplate(template.read(), name)
template.close()
return code
#generate main.cpp file template
def generateMainTemplate():
template = open('main.template', 'r')
code = parseMainTemplate(template.read())
template.close()
return code
但问题是它们基本上都是一样的
1. open file
2. write there some function result
3. close file
4. return data
因此,我想创建一些通用函数,它将函数作为参数,文件名作为参数,并为函数指定参数。然后像generateHeaderClassTemplate
这样的函数
def generateHeaderClassTemplate(name):
return generateTemplate(parseHeaderTemplate, 'header.template', name)
基本上我想要这样的功能
def generateTemplate(func, templateFile, name):
template = open(templateFile, 'r')
code = func(template.read(), name) #or code = func(template.read()) if name was not passed
template.close()
return code
但是如何让它像我写的评论一样工作-如果我不传递name
-执行func(template.read())
如果我传递它-执行func(template.read(), name)
?你知道吗
可以对参数使用默认值:
通过这种方式,您可以使用
generateTemplate
并带有或不带有第三个参数:在
generateTemplate
定义中,可以执行以下操作:也许参数名的默认值会对您有所帮助
模板methids必须始终具有相同的原型,
generateTemplateFun(name="")
,但是在调用它们时,可以跳过名称部分,从而使代码更干净使用python可选参数
http://www.diveintopython.net/power_of_introspection/optional_arguments.html
声明函数时,可以将默认值传递给参数,因此如果在默认情况下调用函数时不将其传递给函数,则函数将使用这些参数,如以下示例所示:
间距默认为10,折叠为1
相关问题 更多 >
编程相关推荐