虽然循环在初始请求后没有重新打开导入文档

时间:2016-11-04 02:42:55

标签: python python-3.x import while-loop

def add():
    import add_coffee_record

def show():
    import show_coffee_records

def search():
    import search_coffee_records

def modify():
    import modify_coffee_records

def delete():
    import delete_coffee_record

def main():
    num=input('\nEnter the number on the menu: ')
    while num != '6':
        if num == '1':
            print()
            add()
        if num == '2':
            print()
            show()
        if num == '3':
            print()
            search()
        if num == '4':
            print()
            modify()
        if num == '5':
            print()
            delete()
        num=input('\nEnter the number on the menu: ')

main()

当我运行FIRST输入时,它会调用函数和导入文件。但是当我提出另一个请求时,它只是再次要求我输入。它只是永远循环。我想要它,如果我要求它显示我的咖啡10次,它会在输出中显示10次。不是这个"有一次,它关闭"废话。任何帮助的人都将非常感激。这是一个混乱的输出示例:

Enter the number on the menu: 2

Description: Thanksgiving Blend
Quantity: 300.0
Description: Christmas Blend
Quantity: 100.0
Description: French Blend
Quantity: 200.0
Description: Espresso
Quantity: 600.0

Enter the number on the menu: 2


Enter the number on the menu: 2


Enter the number on the menu: 

1 个答案:

答案 0 :(得分:2)

你在滥用import;它并不意味着以这种方式使用。而是取add_coffee_record.py的内容并将它们放在函数定义中:

def add():
    # contents of add_coffee_record.py go here

为您的其他功能做同样的事情。或者,在其他模块中定义函数,并在脚本顶部导入一次。

在高级别,当您编写import mymodule时,Python执行模块并将所有新对象(变量,函数,类等)存储在类似字典的内容中。重新导入模块时,Python不需要重新执行模块,因为它已经包含了它在模块字典中定义的所有内容。这就是你所看到的:第二次,Python只使用缓存模块。

您可以通过创建一个模块来测试:

# hello.py
print("Hello! I'm in a module!")

并从另一个导入两次:

# test.py
print('First import:')
import hello

print('Second import:')
import hello

你会看到:

First import:
Hello! I'm in a module!
Second import: