【问题标题】:Why does this return a different value outside the function为什么这会在函数外返回不同的值
【发布时间】:2016-02-10 08:41:55
【问题描述】:

当我在函数内部打印变量时,它会打印出我想要的内容。但是,当我在函数外部打印它时,它会打印文件位置而不是文件中的实际值。

def go():
    username = os.getlogin()
    file2 = ('C:/Users/'+username+'/enteryourmessagehere.txt')
    if os.path.exists(file2):
        try:
            os.rename(file2,file2+"_")
            file = open('C:/Users/'+username+'/enteryormessagehere.txt', 'r').read()
            os.remove('C:/Users/'+username+'/enteryormessagehere.txt')
            main4()
            return file
        except OSError as e:

            file2 = open('C:/Users/'+username+'/enteryourmessagehere.txt_', 'r').read()
            os.remove('C:/Users/'+username+'/enteryourmessagehere.txt_')
            print (file2)
            main4()


    return file2

def main4():
    file2 = go()
    print (file2)

go函数内部的输出是文件中的任何内容,而main4函数的输出是C:/Users/'+username+'/enteryormessagehere.txt

【问题讨论】:

  • go 不是变量,它是一个函数,就像main4。您的术语令人困惑。就像你的缩进一样。
  • 修正了缩进,我说变量错误也改变了。我的错。

标签: python variables


【解决方案1】:
def go():
    username = os.getlogin()
    file2 = ('C:/Users/'+username+'/enteryourmessagehere.txt')
    # …
    return file2

def main4():
    file2 = go()
    print (file2)

这是您的代码的相关部分。 file2 是文件名,因此当您返回 file2 时,您将返回文件名并打印该文件名。

file2 确实会发生变化,但只有在存在 OSError 时才会发生变化。使用变量名来告诉你某物是什么是一个非常好的主意。例如。使用fileNamefilePath 作为文件名或路径,对于文件内容,使用可以清楚表明它是某些内容的内容,例如fileContentuserMessage(如果这在您的上下文中有意义)。

最后,我不确定你实际上在做什么。您交替调用gomain,这似乎有点奇怪和不稳定。你应该考虑改变这一点。

【讨论】:

  • 使用此代码,我试图在文件“enteryourmessagehere”关闭后打印它的内容,因为在上面的另一个函数中,用户有机会编辑内容。他们完成并保存文件后,我想输出内容。希望这是有道理的。
猜你喜欢
  • 1970-01-01
  • 2015-09-12
  • 2017-02-11
  • 2012-02-16
  • 1970-01-01
  • 2012-04-14
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多