0

可能重复:
来自不同文件 Python 的全局变量

可以在不同的文件中设置变量吗?

所以我有两个不同的文件有点像这样..

测试1.py

import test2
st = 'a'
def main():
  mis = input('puts: ')
  print tes2.set(mis)
main()

测试2.py

def set(object):
  pics = ['''
  %s
  1st
  '''%st,
  '''
  %s
  2nd
  ''']
  return pics[object]

我执行 tes1.py 并发出错误:

NameError: global name 'st' is not defined

感谢您的回复

4

2 回答 2

1

是的,但你真的不想这样做。我会st作为参数传递给set(). 但是,以下(错误)设置有效:

库文件

var = "woo"

执行文件

import lib
print lib.var

(请注意,仅导入lib.pyexec.py不允许我使用来自exec.pyinlib.py的变量,只能反过来。想想这如何适用于您的情况。)

于 2012-07-15T04:19:16.273 回答
1

一些提示:

  • main()将您的函数包装在一个if __name__ == '__main__'块中。它可以防止导入的模块执行导入时不应运行的代码。我通常完全放弃,只在块main()中编写所有主要代码。if
  • object是内置类型。不要命名事物object。另外set,因为那也是一种类型。
  • 不鼓励使用全局变量,因为有一种方法可以将全局变量变成参数(除非你的全局变量是常量,这很好)。

这是我的做法:

测试1.py

import test2

if __name__ == '__main__':
  st = 'a'
  mis = input('puts: ')

  print tes2.rename_me_set(st, mis)

测试2.py

def rename_me_set(st, obj):
  pics = ['''
  %s
  1st
  ''' % st,
  '''
  %s
  2nd
  ''']

  return pics[obj]
于 2012-07-15T04:21:41.750 回答