将程序程序分解为函数的提示/技术:Python
Posted
技术标签:
【中文标题】将程序程序分解为函数的提示/技术:Python【英文标题】:Tips/Techniques on breaking down procedural programs into functions : Python 【发布时间】:2013-10-30 14:12:53 【问题描述】:我是python新手,请温柔:)
我仍在学习我的 Python 技能,并希望养成使用我的程序创建函数的习惯。我希望与人们联系,并询问有关将程序程序分解为功能的任何提示/技术。我现在正在做一些事情,我想我有一个好的方向,但希望看看是否有人有经验法则或他们可以提供的一些建议。
def main():
print("Welcome to Invitational Chess Tournament.1st Round Pairing below:")
def openlist:
myfile = open('CHESS.txt','r')
players = []
def creatlist(players):
for line in myfile:
line = line.rstrip('\n')
players.append(line)
players.sort()
def findpairs(players):
m= len(players)//2
for i in range(m):
print (players[i],"&", players[i+m])
myfile.close()
main ()
【问题讨论】:
请修正缩进。不清楚您是在尝试定义嵌套函数还是使用myfile
作为全局变量。
【参考方案1】:
只是一些(未分类的)建议:
不返回任何内容的函数称为“过程” 让函数只做一件事,而且只做一件事,没有副作用。考虑给函数一些东西,修改它并返回它。这样,您可以使它们保持简短,并且易于重复使用。 学习面向对象编程 (oop),它允许您从事物中创建“对象”,并使编程对于新手程序员来说更加直观。作为一个非常基本的示例,您可以执行以下操作: player.move(right); 与上一点相关,考虑一下你的函数的范围。如果一个函数仅由它的封闭类使用,请将其设为私有。 记录您的函数。在每个函数的开头,创建一个小注释来解释它的作用(而不是如何!)并可能解释参数。不是每个人都喜欢这个,但如果你曾经在库中分享你的代码,这是必须的。混凝土:
坚持您的设计,openlist
可以改进。它打开myfile
,但它也创建了一个数组players[]
,但也永远不会返回。您可以删除数组声明并添加一个 return 语句,但是您只剩下一个仅初始化变量的单行函数。这不是很有帮助,请考虑删除该功能并直接使用myfile = open...
。
def creatlist(players)
是一个更有用的过程,但您可以通过将其定义为 def createlistfromfile(file)
并使其返回初始化和填充的玩家数组来使其更清晰。
def findpairs(players)
很好,但尽量让它返回一个成对的数组,而不是直接打印它。您可能需要稍后使用它。用不同的过程打印数组。
【讨论】:
非常感谢您提供的所有资源和提示!我感谢大家的帮助。干杯!【参考方案2】:你的函数打开列表什么都不做。它只创建 2 个变量,但从不返回它们。我建议您阅读一些基本的 Python 教程。它们都涵盖了函数式编程。例如 Wikibooks 有一些不错的文章:http://en.wikibooks.org/wiki/Python_Programming
【讨论】:
以上是关于将程序程序分解为函数的提示/技术:Python的主要内容,如果未能解决你的问题,请参考以下文章