Python 在方法中访问局部变量?

Python 在方法中访问局部变量?,python,Python,我的脚本打开一个文件(a.txt)并将其复制到一个新文件(b.txt)。如果新文件存在,它将索引名称(b1.txt),因此我不会覆盖现有文件。现在我想在函数(方法?-抱歉,我是新手)之外使用复制文件的最新名称(b#.txt) 这是我剧本的一部分。在复制原始文件后调用replaceAll方法替换某些文本时,我希望使用newFile的当前值 谢谢 您可以:1)使用全局变量存储newFile变量的最终值。 2) 返回newFile变量的值,然后将其作为参数传递给replaceAll函数您提到的类cl

我的脚本打开一个文件(a.txt)并将其复制到一个新文件(b.txt)。如果新文件存在,它将索引名称(b1.txt),因此我不会覆盖现有文件。现在我想在函数(方法?-抱歉,我是新手)之外使用复制文件的最新名称(b#.txt)

这是我剧本的一部分。在复制原始文件后调用replaceAll方法替换某些文本时,我希望使用newFile的当前值


谢谢

您可以:1)使用全局变量存储newFile变量的最终值。
2) 返回newFile变量的值,然后将其作为参数传递给replaceAll函数

您提到的
类classMain中的函数。虽然这不是解决问题的最佳方法,但您可以通过将变量
newFile
写回成员变量来共享该变量,如下所示:

class classMain:

    newFile = None
    # ... the rest of your code here.
然后,您可以通过在类方法中将成员变量作为
self.newFile
写入并读取来引用该变量。但是,同样,还有其他方法可以解决这个问题。也许对你也有帮助


欢迎来到StackOverflow!祝您好运。

由于您不知道函数将创建哪个文件,请通过返回一个值来告诉您:

return newFile
return
将立即结束其所在函数的执行,因此相应地放置它。在您的情况下,它应该是
copyFile()
的最后一行。使用
copyFile()
时,通过将其分配给变量来捕获它返回的值:

savedin = classMain.copyFile(oldname, newname)
如果您不想保存返回的值,只需像以前一样调用
copyFile
,返回的值就会被显示出来


其他一些答案建议设置一个全局变量。这在某些方面可能是正确的,但这是一个“副作用”,因为它在调用函数的代码中不可见。保持简单并返回值,直到您遇到无法通过这种方式解决的问题。

为什么要将其包装到类中?谢谢Alexis。这很好用,而且干净简单。我先读了你的答案,还需要复习其他答案,至少要理解所提供的选项并从中学习。它们给出了很好的建议:如果你的类表示一个概念(对象),应该知道它存储在哪个文件中,那么在其中记录文件名是有意义的。但是我想他们会同意工具箱中的第一个工具应该是返回一个值。
savedin = classMain.copyFile(oldname, newname)