如何使用不同的var导入相同的文件

时间:2019-11-28 00:03:59

标签: python

Y!首先对任何拼写错误感到抱歉...我的英语不是我的主要语言...

程序说明-

所以我刚刚开始编写代码,作为一个初学者,我想用一个简单的登录名,个人信息和一个计算器来创建一个非常简单的程序。 所以流程是这样 Login()> var_list()> main_menu()(在这里您可以编辑var列表,​​打开计算器,注销..等等...)

问题的说明-

因此,正如我所说的,这是一个简单的程序,您登录后,将被提升为输入个人资料信息,然后该信息将显示在主菜单上 在主菜单中,选项之一是通过重新启动var_list函数来更改您的个人资料。 var list函数只会在名为profile.py的文件中创建3个变量,其中包含您的姓名,年龄和地址(请参见代码) 然后菜单导入的“ profile.py”在主菜单中显示内容 但是当我从主菜单再次运行Var_list函数时,它不会在已打印的var上刷新任何内容……它确实在“ profile.py”文件中发生了更改,但仅显示

var_list函数:

def var_list():  # register to the program || cant get it to refresh after program has started... hlp plz
    on = 1
    while on == 1:
        print("This is just to fill out your profile")
        try:
            name = input("Your Name:\t")
            age = int(input("Your Age:\t"))
            address = input("Your address:\t")
            on = 0
            #________file_write__________
            f = open("profile.py", "w")
            f.write("name = ")
            f.write("\"")
            f.write(name)
            f.write("\"")
            f.write("\nage = ")
            f.write("\"")
            f.write(str(age))
            f.write("\"")
            f.write("\naddress = ")
            f.write("\"")
            f.write(address)
            f.write("\"")
            f.close()

        except ValueError:
            print("invalid syntax")

显示菜单功能:

def display_menu():  # Display menu
    on=1
    while on==1:
        from profile import name, age, address
        print("\nHello", name, age, "from", address,
              "\t\t• %s seconds •" % (int(time.time()) - int(start_time)),"\n")
        print("1 • Logout")
        print("2 • Refresh Time")
        print("3 • Edit Profile") (this is the var_list function)
        print("4 • simple calc")
        print("5 • Exit")
        on=0

希望我提供了足够的信息来调试此... 任何帮助都感激不尽!谢谢!

1 个答案:

答案 0 :(得分:0)

默认情况下,重新导入模块实际上不会重新编译它。不过,您可以使用importlib部分修复该问题:

import profile 
... # in the meantime, profile.py is modified
from importlib import reload
reload(profile)

,以便您可以使用限定的变量名(profile.nameprofile.ageprofile.address)。我不确定您的示例中是否可以使用from profile import ...语法来实现该功能,但这似乎是一个小麻烦。