各位大虾好!小虾遇到了一个问题。
假设我有这样的一个脚本,叫one.py,内容如下:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
a = [1, 2, 3, 4, 5, 6, 7]
b = []
c = []
d = []
def JJJ():
global x
x = i + 4
def QQQ():
global y
y = i * 2
def KKK():
global z
z = x - y
if __name__ == "__main__":
for i in a:
JJJ()
b.append(x)
QQQ()
c.append(y)
KKK()
d.append(z)
print("======================")
print (b)
print (c)
print (d)
启动之后,是可以获得正确的结果的:
[root@zabbix opt]# python one.py
======================
[5, 6, 7, 8, 9, 10, 11]
[2, 4, 6, 8, 10, 12, 14]
[3, 2, 1, 0, -1, -2, -3]
[root@zabbix opt]#
现在我打算写一个two.py,在two.py里获取到b、c、d的值,于是乎我就写了一个two.py:
!/usr/bin/env python
# -*- coding: UTF-8 -*-
import one
from one import a,b,c,d,JJJ,QQQ,KKK
for i in a:
JJJ()
b.append(x)
QQQ()
c.append(y)
KKK()
d.append(z)
print ("======================")
print (b)
print (c)
print (d)
结果执行的时候,出现这个错误:
[root@zabbix opt]# python two.py
======================
[]
[]
[]
Traceback (most recent call last):
File "two.py", line 7, in <module>
JJJ()
File "/opt/one.py", line 12, in JJJ
x=i+4
NameError: global name 'i' is not defined
于是我就把i添加到from one import a,b,c,d,JJJ,QQQ,KKK里,结果再启动。成了这样:
[root@zabbix opt]# python two.py
======================
[]
[]
[]
Traceback (most recent call last):
File "two.py", line 4, in <module>
from one import i,a,b,c,d,JJJ,QQQ,KKK
ImportError: cannot import name i
请问我哪里错了?
你的代码很难理解,并且看不出目的何在
在函数里使用循环变量就是很奇怪的事情,应该当作参数传进去,