如何在不同的文件中设置全局变量

时间:2012-07-15 04:07:19

标签: python

  

可能重复:
  Global Variable from a different file Python

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

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

tes1.py

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

tes2.py

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

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

NameError: global name 'st' is not defined

感谢您的回复

2 个答案:

答案 0 :(得分:1)

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

lib.py

var = "woo"

exec.py

import lib
print lib.var

(请注意,仅将lib.py导入exec.py无法让我在exec.py中使用lib.py中的变量,只能反过来。请考虑如何应用根据你的情况。)

答案 1 :(得分:1)

一些提示:

  • main()功能包裹在if __name__ == '__main__'块中。它可以防止导入的模块执行导入时不应运行的代码。我通常完全取消main(),只需在if块中写下我的所有主要代码。
  • object是内置类型。不要为事物object命名。同样是set,因为它也是一种类型。
  • 不鼓励使用全局变量,因为始终是一种将全局变量转换为参数的方法(除非你的全局变量是常量,这很好)。

我将如何做到这一点:

<强> test1.py

import test2

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

  print tes2.rename_me_set(st, mis)

<强> test2.py

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

  return pics[obj]