【问题标题】:how to display content of variables of file1 to file2 in python如何在python中显示file1到file2的变量内容
【发布时间】:2018-12-26 20:22:02
【问题描述】:

我想在 python 中显示 file1 到文件 2 的列表内容

我只是在该文件中提供一个示例代码,该文件具有一个列表和一个变量。我只是想通过导入在 file2 中显示该列表的内容。代码报错

从文件1导入列表1,p

ImportError: 无法导入名称列表 1

我的代码是:

文件1:

if __name__ == '__main__':
    list1 = ['a','b']
    p = 123
    print list1
    print p

文件2:

from file1 import list1,p
if __name__ == '__main__':
    list2 = ['p','q']
    pb = 321
    print list2
    print pb
    print list1
    print p

【问题讨论】:

    标签: python import


    【解决方案1】:

    file1 中,您有if __name__ == '__main__':,但由于导入了file1,因此在这种情况下并非如此。对于file,也许这样的事情会更合适:

    list1 = ['a','b']
    p = 123
    if __name__ == '__main__':
        print list1
        print p
    

    在您的情况下,print 语句似乎仅用于在直接调用file1 的情况下进行调试。但是list1p 必须定义为导入,在这种情况下print 语句可能不应该运行(我会从你的代码中假设)。

    【讨论】:

      【解决方案2】:

      在 file1 中,您应该使用 if __name__ == 'file1',而不是 if __name__ == '__main__'。这是因为当您在 file2 中导入此文件时,file1 的 __name__not __main__ 而是文件的名称 file1 .

      所以,有这样的东西会有所帮助:

      文件1:

      if __name__ == 'file1':
          list1 = ['a','b']
          p = 123
          print(list1)
          print(p)
      

      文件2:

      from file1 import list1,p
      if __name__ == '__main__':
          list2 = ['p','q']
          pb = 321
          print(list2)
          print(pb)
          print(list1)
          print(p)
      

      运行file2时的输出:

      ['a', 'b']
      123
      ['p', 'q']
      321
      ['a', 'b']
      123
      

      您可以从打印语句中删除括号,因为我使用的是 Python3 而不是 Python2。

      但在 file1 中使用 __name__ == 'file1' 是多余的。

      【讨论】:

        【解决方案3】:

        只需删除 if 语句:

        file1.py:

        list1 = ['a','b']
        p = 123
        

        file2.py:

        from file1 import list1,p
        print(list1) #output: ['a', 'b']
        

        【讨论】:

          【解决方案4】:

          我会让你的 list1 和 p 函数而不仅仅是变量(见下文):

          file1.py

          if __name__ == '__main__':
              list1 = ['a','b']
              p = 123
              print(list1)
              print(p)
          
          def list1():
              list1 = ['a','b']
              print(list1)
          
          def p():
              p = 123
              print(p)
          

          然后在你的第二个文件中这样调用它们:

          file2.py

          from file1 import *
          if __name__ == '__main__':
              list2 = ['p','q']
              pb = 321
              print(list2)
              print(pb)
              list1()
              p()
          

          您也可以更简单地这样做:

          list1 = ['a','b']
          p = 123
          if __name__ == '__main__':
              print(list1)
              print(p)
          

          希望这会有所帮助!

          【讨论】:

            猜你喜欢
            • 2019-01-31
            • 1970-01-01
            • 1970-01-01
            • 2014-06-01
            • 2018-07-03
            • 1970-01-01
            • 2021-09-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多