使用另一个文件python中的函数

时间:2019-06-11 14:51:00

标签: python

我有2个文件,其中1个文件包含类,另1个文件包含“接口”

在第一个文件中,我有:

from second_file import *

class Catalog:

    def ListOfBooks(self):

        more_20 = input()
        # If press 1 starts showing from 20 until 40
        if more_20 == '1':
            for item in C[20:41:1]:
                print("ID:",item['ID'],"Title:",item['title'],"  Author: ", item['author'])

        elif more_20 == '2':
            return librarian_option()

test = Catalog()
test.ListOfBooks()

我想要实现的是当用户按下2时,我想回到其他文件中的功能。

第二个文件:

def librarian_option():
.......

我不想使用全局变量,并且我已经阅读到librarian_option()在第二个文件的范围内,这就是为什么我不能直接调用它的原因。我找不到解决方案。

我收到以下错误:

NameError: name 'librarian_option' is not defined

2 个答案:

答案 0 :(得分:0)

您尝试过吗?最好是显式而不是使用*通配符

from second_file import librarian_option

确保second_file在同一目录中。

答案 1 :(得分:0)

注意:这不是答案,而是一个示例,可以帮助您更详细地改善问题。

您需要将问题减少到产生问题所需的最少代码量(和操作)。您还需要提供运行脚本的方式确切,以及使用的版本(Python和操作系统)。

例如,我创建了以下两个脚本(名称完全与显示的一样):

first_file.py

from second_file import *

class Catalog:
    def ListOfBooks(self):
        return librarian_option()

test = Catalog()
a = test.ListOfBooks()
print(a)

second_file.py

def librarian_option():
    return 1

这两个文件位于我的计算机(MacOS)上的同一随机目录中。我按如下方式运行:

python3.7 first_file.py

我的输出是

1

因此,我无法重现您的问题。

查看您是否仍然可以使用这种简化的脚本(即没有额外的函数或类,没有__init__.py文件等)来产生问题。您可能希望在系统其他位置的临时目录中执行此操作。

如果您的问题消失了,请慢慢建立并重新出现。到那时,也许您已经发现了实际的问题。如果您随后不知道为什么(最后一次)更改导致了问题,请随时使用所有新信息来更新您的问题。