【问题标题】:Python does not evaluate a function and let me run the code anyway [closed]Python不评估函数,让我无论如何运行代码[关闭]
【发布时间】:2019-08-09 08:59:46
【问题描述】:

我有两个共享公共目录的 Python 文件。一个叫做 aux_functions.py,另一个叫做 app.py。 app.py 使用了 aux_functions.py 的一些功能,我一如既往地执行导入。但是,无论 aux_functions.py 的功能是否拼写错误,app.py 文件都会运行。它没有检测到问题;因此,该功能不会按预期运行。

我已经测试了导入部分并拼错了一个函数的名称,app.py 检测到了错误。但是,当我在 app.py 的另一个函数中拼错了导入函数的名称时,没有注意到该错误。

aux_functions.py 是这样的:

def sign(k, m):
        do something

def format(a):
        do something

app.py 是这样的:

from aux_functions import sign, format

def signature(data):
        mes = data["message"]
        sig = sign(key, mes)
        return format(sig)

预计 app.py 脚本使用来自 aux_functions 的符号和格式函数,但它没有这样做。导入部分已完成,但应用程序未使用这些功能。我通过拼写错误的 sign 函数进行了测试,并将类似 siggggggn 的内容放在 app.py 中,但它没有检测到错误并无论如何都运行了。因此, app.py 脚本没有做我想做的事。

我该如何解决这个问题?是否有与其中一个辅助函数有返回而另一个只是格式化文件相关的东西?我认为调用函数和使用它们没有火箭科学,但我的 app.py 脚本表现得很奇怪。提前非常感谢。

【问题讨论】:

  • 所以即使siggggggn 没有在aux_functions.py 中定义,from aux_functions import siggggggn 也可以运行?
  • 如果我将 from aux_functions import siggggggn 设置为尝试导入,app.py 会显示一个错误,指出找不到它。但是,当我将 siggggn 放在 app.py 中的函数中时,这样的脚本不会告诉我即使在 aux_functions 中也不存在 siggggn 的警告。
  • 我不明白你的意思。您是否期望运行app.py 会引发错误?为什么?

标签: python function import call


【解决方案1】:

Python 没有函数重载。

使用app.py 中的sign 函数:

def sign(data):
    mes = data["message"]
    sig = sign(key, mes)
    return format(sig)

这里你调用函数递归。它调用自己,而不是来自aux_functions 的那个。

要解决这个问题,您可以导入整个模块

import aux_functions

然后拨打aux_functions.sign(key, mes)

或为sign 函数使用别名

from aux_functions import sign as aux_sign, format

并调用aux_sign(key, mes)

【讨论】:

  • 对不起,先生,我的解释有误。该函数没有被递归调用。 app.py 中的函数与 aux_functions 中的函数名称不同,如下所示: def signature(data): mes = data["message"] sig = sign(key, mes) return format(sig) 即使我拼错了 aux 文件中的符号函数(我放了 ssssssssssign)app.py 运行时没有警告,必须说找不到 sssssssssign 或其他东西。我尝试了您的建议,但问题仍然存在。
  • @OmarPhin 编辑您的问题! 如果编辑使现有答案和 cmets 无效,则考虑删除问题并编写新问题(否则现有答案和 cmets 将变为错误)。
猜你喜欢
  • 2011-06-09
  • 2010-12-22
  • 2020-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
  • 2017-10-22
  • 2010-10-02
相关资源
最近更新 更多