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没有深入的了解,而且我对编程相当陌生,它反对什么?