对不起,我只是一个python语言的初学者,我很长时间陷入这个问题。实际上,我想通过创建一个降序的模块来进行用户输入的列表的降序和升序提升。但我无法让它发挥作用。 主python文件是pythonaslab.py,升序和降序的模块是selectionmodule.py ..代码:
这是选择模块:
import pythonaslab
def ascendingselection():
for q in range(len(b)):
w=q+1
for w in range(len(b)):
if b[q]>b[w]:
f=b[q]
b[q]=b[w]
b[w]=f
print b
def descendingselection():
for q in range(len(b)):
w=q+1
for w in range(len(b)):
if b[q]<b[w]:
f=b[q]
b[q]=b[w]
b[w]=f
print b
这是主文件,pythonaslab:
import selectionmodule
a = int(input())
b = [int(input()) for _ in range(a)]
print b
print "1.ascending 2.descending"
c=input()
if c==1:
selectionmodule.ascendingselection()
if c==2:
selectionmodule.descendingselection()
你能指出我所得到的所有错误的原因在哪里吗?
Traceback (most recent call last):
File "E:\Coding\pythonaslab.py", line 1, in <module>
import selectionmodule
File "E:\Coding\selectionmodule.py", line 1, in <module>
import pythonaslab
File "E:\Coding\pythonaslab.py", line 16, in <module>
selectionmodule.descendingselection()
AttributeError: 'module' object has no attribute 'descendingselection'
答案 0 :(得分:1)
您创建了循环导入;您的pythonaslab
模块导入selectionmodule
,导入pythonaslab
模块。你最终会得到不完整的模块,不要这样做。
从import pythonaslab
移除selectionmodule
行;你没有在那个模块中使用pythonaslab
。
另外,另一个模块无法读取你的全局变量;你需要传递那些作为参数:
# this function takes one argument, and locally it is known as b
def ascendingselection(b):
# rest of function ..
然后用:
调用它selectionmodule.ascendingselection(b)
请注意,您不限于单字母变量名称。使用更长的描述性名称可以使您的代码更具可读性。
答案 1 :(得分:0)
如果您不想使用模块名称,例如:
selectionmodule.ascendingselection(b)
你应该导入:
from selectionmodule import *
然后你可以打电话:
ascendingselection(b) # without module name
或者您可以导入模块并指定别名:
import selectionmodule as o
o.ascendingselection(b) # with alias name
有关详细信息,请参阅:import confusaion