将过程程序分解为函数的提示/技术: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 ()

只是一些(未排序的)建议:

  • 不返回任何内容的函数称为"过程"
  • 让函数只做一件事,没有副作用。考虑给函数一些东西,修改它并返回它。通过这种方式,您可以使它们保持简短,并且易于重用它们。
  • 学习面向对象编程(oop),它允许您从事物中创建"对象",并使编程对于新手程序员来说更加直观。作为一个非常基本的例子,你可以做这样的事情:player.move(右);
  • 与上一点相关,请考虑函数的范围。如果函数仅由其封闭类使用,请将其设为私有。
  • 记录您的函数。在每个函数的开头,创建一个小注释来解释它的作用(而不是如何!),也许还可以解释参数。不是每个人都喜欢这个,但是如果你曾经在库中共享你的代码,这是必须的。

混凝土:

坚持你的设计,openlist可以改进。它打开myfile,但它也创建一个数组players[],但也不会返回。您可以删除数组声明并添加 return 语句,但随后只剩下一个初始化变量的单行函数。这不是很有帮助,请考虑删除该功能并直接使用myfile = open...

def creatlist(players)是一个更有用的过程,但您可以通过将其定义为 def createlistfromfile(file) 并使其返回初始化和填充的玩家数组来使其更清晰。

def findpairs(players)很好,但尝试让它返回一个有对的数组,而不是直接打印它。以后可能需要使用它。使用其他过程打印阵列。

您的函数打开列表不执行任何操作。它只创建 2 个变量,但从不返回它们。我建议您阅读一些基本的python教程。它们都涵盖了函数式编程。例如,维基教科书有一些好文章:http://en.wikibooks.org/wiki/Python_Programming

最新更新