【发布时间】:2014-07-01 12:37:10
【问题描述】:
表达式logic=_changelog_txt:
def writeChangelog(repo, milestone, overwrite=False, extension=u'.txt',
logic=_changelog_txt): # HERE
"""Write 'Changelog - <milestone>.txt'"""
outFile = _outFile(dir_=CHANGELOGS_DIR,
name=u'Changelog - ' + milestone.title + extension)
if os.path.isfile(outFile) and not overwrite: return outFile
issues = getClosedIssues(repo, milestone, skip_labels=SKIP_LABELS)
return logic(issues, milestone, outFile)
def writeChangelogBBcode(repo, milestone, overwrite=False):
"""Write 'Changelog - <milestone>.bbcode.txt'"""
return writeChangelog(repo, milestone, overwrite, extension=u'.bbcode.txt',
logic=_changelog_bbcode) # no errors here
def _changelog_txt(issues, milestone, outFile):
with open(outFile, 'w') as out:
out.write(h2(_title(milestone)))
out.write('\n'.join(ul(issues, closedIssue)))
out.write('\n')
return outFile
给我Unresolved reference \_changelog\_txt。做我想做的最pythonic的方式是什么?另见:What is the best way to pass a method (with parameters) to another method in python
【问题讨论】:
-
你需要在
writeChangelog方法之前定义_changelog_txt方法,因为默认参数是在定义函数时实例化的,所以此时_changelog_txt不存在。 -
跟 PyCharm 有关系吗?否则你应该得到一个
NameError: name '_changelog_txt' is not defined -
@Germano:是的,我使用 PyCharm :)
-
@Germano:不需要 - 我只是重新安排了方法 - :D
标签: python python-2.7