【问题标题】:I'm having a problem calling a function from a different file我在从其他文件调用函数时遇到问题
【发布时间】:2022-01-11 01:57:33
【问题描述】:

'''蟒蛇
从 T123_P2_func 导入 add_books def print_menu(commandmenu:dict)-> 列表:
菜单选项 = { 1: '命令行 L) 加载文件', 2: '命令行 A) 添加书籍', 3: '命令行 R) 删除书', 4: '命令行 F) 按标题查找书籍', 5: '命令行 NC) 类别中的书籍数量', 6: 'Command Line CA) 作者的类别', 7: '命令行 CB) 书名的类别', 8:'命令行 G)et book''\n' 'R)ate A)author P)ubliosher C)ategory',

}

对于 menu_options.keys() 中的键: 打印(键,'-',菜单选项[键]) print_menu(menu_options)

文件 = 无

当真时: userinput = (input('请输入命令:'))

userinput = userinput.upper()
if userinput == 'L':
    print('Book has been Loaded.')
    file = books_to_list('')
    
elif userinput == 'A':
    print('Book has been Added.')
    
elif userinput == 'R':
    print('Book has been Removed.') 

elif userinput == 'F':
    print('Book has been Found.')         
print(userinput)

word1 = (input('Press Q to Quit: '))
if word1 == 'Q':
    break        

'''
当我从另一个文件调用该函数时,该文件中的每个函数都会运行,请问可能是什么问题,如果我想通过按字母调用此函数该怎么办?

【问题讨论】:

  • 请注意,第一次在程序中导入模块总是会运行导入模块中的代码。
  • 那么有什么办法呢?
  • 你的模块的主体应该只define函数和类,但它不应该有一个对任何函数的实际调用。这些属于if __name__ == "__main__":, 块,如下面@ljdyer 的回答所示。

标签: python function file command python-import


【解决方案1】:

您的意思是practicing.py 中的每个函数都运行,还是practicing.py 的主要部分中的代码在您导入模块时运行?

如果外部模块中的所有内容都包含在函数定义中,那么导入模块应该不会对您在主程序中所做的事情产生任何影响。

如果您仍然希望外部模块的主要部分中的代码可以通过运行该文件来执行,则要做的是将模块的主要部分包装在函数 def main(): 中,并将以下内容放入模块的主要部分(如果模块被导入,则不会运行,只有在直接运行时才会运行):

if __name__ == "__main__":
    main()

【讨论】:

  • 我的意思是从模块 practice.py 运行的所有功能
  • 啊,是的,谢谢你的指出——我已经相应地编辑了答案。
  • 我试过但没用
  • 我注意到您在问题中添加了一些代码,但它似乎不包括导致问题的外部模块T123_P2_func?正如其他人所评论的那样,如果不能确切地看到您在做什么或您正在经历什么不良行为,就很难诊断或建议解决您的问题。
【解决方案2】:

我看不到整个代码。

但是,我认为你必须知道如何利用函数的参数。

【讨论】:

  • 当我这样做时仍然是相同的结果,如果你愿意,我可以发布整个代码
  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 我已经发布了完整的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 2020-05-19
  • 2011-08-16
相关资源
最近更新 更多