如何将文件插入字符串? (python3)

时间:2018-01-19 20:34:25

标签: python-3.x function

我一直在尝试创建一个程序,该程序需要从文件中读取,然后将文件中的字符串作为程序中字符串的一部分。我写了一个我做的例子:

gameinfo = [0,0]

def readsave(savefile):
"Reads a file and adds its statistics to variables"
filename = savefile
with open(filename) as file_object:
    gameinfo = file_object.readlines()
print(gameinfo)


readsave('gamesave.txt')

print (gameinfo)

但每当我运行此代码时,我似乎得到的只是:

['thisworks\n', '7']
[0, 0]

我想要将[0,0]字符串更改为['thisworks\n, 7'],但它只会在函数内部发生变化。有什么方法可以让这种变化全球化吗?

2 个答案:

答案 0 :(得分:1)

这里的问题是范围,函数中的gameinfo变量是本地变量,而不是全局变量。您可以将其声明为全局,或将gameinfo作为参数传递。通常,我会避免全局声明,因为它们会让人感到困惑。我建议传递gameinfo:

def readsave(savefile, gameinfo=[0,0]): # Declare it as a default to the function.
    "Reads a file and adds its statistics to variables"
    with open(savefile) as file_object: # No need to rename this.
        gameinfo = file_object.readlines()
    return gameinfo # Return it so it escapes the scope of this function.


gameinfo = readsave('gamesave.txt') # Save it.

print(gameinfo) # Print it.

答案 1 :(得分:0)

变量不在函数中共享,这意味着您定义gameinfo = [0,0],但实际上您从未在函数中获得该变量。我想要保存在gameinfo中,您需要使用returnglobalglobal可以在函数内部和外部共享变量,但这被认为是不好的做法,所以不要使用它。

使用return只需将其放入您的功能中即可。始终确保每个调用只返回一个变量,字符串,整数。

以下是您重写的示例,其中包含我上面提到的return语句:

gameinfo = [0,0]

def readsave(savefile):
    "Reads a file and adds its statistics to variables"
    filename = savefile
    with open(filename) as file_object:
        gameinfo = file_object.readlines()
    print(gameinfo)
    return gameinfo


gameinfo = readsave('gamesave.txt')

print (gameinfo)

你还犯了其他一些错误:

"Reads a file and adds its statistics to variables"不是评论。使用"""my text here"""(三引号)或#my text here插入评论。

您在阅读Python教程时将学到的所有这些内容。 Here is one illustrating the use of return