无限期导入.py文件

时间:2019-02-24 17:37:26

标签: python

我是python的新手,我想尝试从一个文件移到另一个文件,例如无限循环地遍历fileA和fileB。但是,当我尝试使用导入功能时,文件仅互相导入一次,然后停止。有没有办法多次导入整个文件?

FileA:

story1 = "You see a statue of a metal man peeking out of a building. A park is just across the street.\n\nPossible exits: north."
map_legend = "\nMap Legend:\nG   you\n.   clear path\n-|  wall\n+   door\n"
map1 = "-.\n |G\n-//\n|.|\n---"

while True:
    print(story1)
    action = input(str())
    while action != 'north':
            print ('there is nothing there.')
            action = input(str())
    ***import story2***
    continue

FileB:

story2 = "You see a map on the bench. Type 'grab' to pick it up.\n\nPossible exits: north and south."
map_legend = "\nMap Legend:\nG   you\n.   clear path\n-|  wall\n+   door\n"
map1 = "-.\n |G\n-//\n|.|\n---"
inventory=list()
action = 'north'

while True:
    print(map_legend,"\n",map1,"\n")
    direction = f"you moved {action}."
    print(direction)
    print(story2)
    action = input(str())
    while action != 'north' and action != 'south' and action != 'grab':
        print ('there is nothing there.')
        action = input(str())
    if action == 'grab':
        inventory.append('1 map')
        print ("Inventory:\n1 map")
        action = input(str())
    while action != 'north' and action != 'south':
        print ('there is nothing there.')
        action = input(str())
    if action == 'south':
        direction = f"you moved {action}."
        print(direction)
        ***import story1***
        continue

因此,从文件A移到文件B没问题,但是从文件B移到文件A后,我再也无法“导入”文件B了。这里的“导入”功能使用不正确吗?

谢谢。

4 个答案:

答案 0 :(得分:2)

解决方案是将要重用的代码放在importlib.reload中,然后可以反复调用函数以执行所需的操作。

例如:

A.py

def do_thing():
    # some code

def do_other_thing():
    # more code

B.py

import A

while True:
    A.do_thing()
    A.do_other_thing()

答案 1 :(得分:0)

每个文件都应该定义一个 function (使用.py关键字),而不是直接在def文件中编写代码。然后,您可以import从这些文件中调用函数,并在一个循环中依次调用它们。

也就是说,如果您真的要重新导入模块(而不是仅重复使用import语句所使用的现有模块对象),则可以使用{{3 }}。

答案 2 :(得分:0)

在fileA和fileB中定义一个函数。使用这些文件及其功能将其导入模块并创建一个相互调用的循环。但是,这不是一个好方法。

答案 3 :(得分:0)

您应该使用def()来执行此操作。因此,对于文件,您的代码将是

#price {
  font-weight: bold;
  border: none;
  font-size: 1.5em;
}

#currency {
  color: #000000;
  font-size: 1.5em;
  font-weight: bold;
  margin-right: .3rem;
}

#price:focus {
  outline: none;
}

#price-info {
  display: flex;
  align-items: center;
}

#size-price{
  margin-left: -5rem;
}


.itens{
  display: inline-block;
  width: fit-content;
}

然后应将文件a和b的函数放在同一python文件中,并使用<div id="price-info"> <p class="itens" id="currency">U$S</p> <input class="itens" id="price" type="text" value={this.state.price} onChange={this.handleChange} /> <p class="itens" id="size-price">$/m2{sizePrice}</p> </div>def fileA(): story1 = "You see a statue of a metal man peeking out of a building. A park is just across the street.\n\nPossible exits: north." map_legend = "\nMap Legend:\nG you\n. clear path\n-| wall\n+ door\n" map1 = "-.\n |G\n-//\n|.|\n---" while True: print(story1) action = input(str()) while action != 'north': print ('there is nothing there.') action = input(str()) ***import story2*** continue 运行。全部放在一个python文件中。

如果要从另一个python文件中调用它,则必须执行fileA(),然后运行fileB()