Python/函数参数

Python/函数参数,python,parameters,Python,Parameters,主要目标: 函数从文本文件中读取最高分数。 要传递给函数的参数: 文本文档 def highscore(): try: text_file = open ("topscore.txt", "r") topscore = int(text_file.read()) print topscore text_file.close() return topscore except: print

主要目标: 函数从文本文件中读取最高分数。 要传递给函数的参数: 文本文档

def highscore():
    try:
        text_file = open ("topscore.txt", "r")
        topscore = int(text_file.read())
        print topscore
        text_file.close()
        return topscore
    except:
        print "Error - no file"
        topscore = 0
        return topscore
如何添加文本文件作为参数

def highscore(filename):
    try:
        text_file = open (filename, "r")
哦,您应该停止在try块中添加过多的代码。清洁的解决方案如下所示:

def highscore(filename):
    if not os.path.isfile(filename):
        return 0
    with open(filename, 'r') as f:
        return int(f.read())
或者,如果您希望在读取文件失败的任何情况下返回0:

def highscore(filename):
    try:
        with open(filename, 'r') as f:
            return int(f.read())
    except:
        return 0
哦,您应该停止在try块中添加过多的代码。清洁的解决方案如下所示:

def highscore(filename):
    if not os.path.isfile(filename):
        return 0
    with open(filename, 'r') as f:
        return int(f.read())
或者,如果您希望在读取文件失败的任何情况下返回0:

def highscore(filename):
    try:
        with open(filename, 'r') as f:
            return int(f.read())
    except:
        return 0
只需将变量标识符(例如文件名)添加到参数列表中,然后在打开文件时引用它

然后使用您选择的文件名调用函数

topscore = highscore("topscore.txt")
只需将变量标识符(例如文件名)添加到参数列表中,然后在打开文件时引用它

然后使用您选择的文件名调用函数

topscore = highscore("topscore.txt")

另一个选项是提供关键字参数。例如,如果您有使用此函数的旧代码,并且由于某些奇怪的原因无法更新,那么这可能很有用。关键字参数可以包含默认值

def highscore( filename = "filename.txt" ):
    try:
        text_file = open (filename, "r")
然后可以像以前一样调用此函数以使用默认值filename.txt:

highscore()
或指定任何新文件名:

highscore( filename = "otherfile.csv" )
有关更多信息,请参阅python文档。
另一个选项是提供关键字参数。例如,如果您有使用此函数的旧代码,并且由于某些奇怪的原因无法更新,那么这可能很有用。关键字参数可以包含默认值

def highscore( filename = "filename.txt" ):
    try:
        text_file = open (filename, "r")
然后可以像以前一样调用此函数以使用默认值filename.txt:

highscore()
或指定任何新文件名:

highscore( filename = "otherfile.csv" )
有关更多信息,请参阅python文档。

您想传递一个路径字符串并让此函数打开文件,还是想传递一个文件对象并让函数对其进行操作?我真的不明白,在自己无法回答问题的情况下,如何能够编写现有代码并使其正常工作。您想传递一个路径字符串并让其运行让这个函数打开文件,或者你想传递一个文件对象并让函数对其进行操作?我真的不明白,如果你自己也不能回答问题,怎么可能编写现有代码并使其正常工作。我尝试添加文件名,例如:def highscoredata.txt,但它不起作用,有一个syntexerror突然出现。我不喜欢if not os.path.isfile构造,因为它要求权限而不是原谅。如果文件在调用成功和后续打开行之间被删除怎么办?我更喜欢你的最后一个例子。@Geostigmata不要放一个。文件参数名称中的句点。因此,请不要使用data.txt,而应使用data_txt,或者更好的文件名,正如我们的两个答案所示。@geostigrata data.txt不是有效的变量名。它必须是像def highscorefilename这样的东西,然后您可以将其称为highscoredata。txt@ThiefMaster-在您提供的代码中,as f代表什么,因为我对python没有深入的了解,而且我对编程相当陌生,它有什么挑战?我尝试添加文件名,例如:def highscoredata.txt,但是它不起作用,有一个syntexerror突然出现。我不喜欢if not os.path.isfile构造,因为它要求的是权限而不是原谅。如果文件在调用成功和后续打开行之间被删除怎么办?我更喜欢你的最后一个例子。@Geostigmata不要放一个。文件参数名称中的句点。因此,请不要使用data.txt,而应使用data_txt,或者更好的文件名,正如我们的两个答案所示。@geostigrata data.txt不是有效的变量名。它必须是像def highscorefilename这样的东西,然后您可以将其称为highscoredata。txt@ThiefMaster-在您提供的代码中,as f代表什么,因为我对python没有深入的了解,而且我对编程相当陌生,它反对什么?