除非我手动执行此操作,否则无法调用其中一个函数

时间:2015-07-11 16:43:01

标签: python function python-2.7

我发现在运行程序时正在调用该函数。但是,如果我在同一个缩进上有2个if语句,则第二个if语句不会启动。但是,如果我从控制台运行val q = user.filter(_.id > 1) val future = db.run(q.result) val users = Await.result(future, Duration.Inf) users foreach println ,它就能完美运行。

以下此功能无法在程序中调用。没有错误,只是没有。但是,我可以通过在空闲shell中键入result()来手动调用它。

以下是整个计划:

result()

1 个答案:

答案 0 :(得分:3)

当你在shell中并且调用方法和函数时,如果它不是None,则显示返回的值。所以你的程序实际上是有效的,只是你没有明确print result()的返回值。当你不在shell中运行它时,似乎什么也没发生。当您在shell中调用result()时,shell会自动显示返回的值。

要“修复”此项,只需print返回的值。我强烈建议你在shell之外工作,以了解Python的实际工作方式。

示例

假设执行以下代码时你在shell中:

>>> def a(n):
...     print n * n
...
>>> def b(n):
...     return n * n
...
>>> a(5)
25
>>> b(5)
25
>>> exit()

注意两个函数似乎都是一样的。但是,它们差别很大。 a(n)的返回类型为None,而b(n)的返回类型为int。因此,如果您要运行调用a(5)b(5)的程序(而不是来自shell),您只会看到一个25,而不是两个b(5)。这是因为您不在shell 中,因此main()返回的值不会自动显示

另外,要在shell之外运行您的程序,请修改start()以便调用pass,而不是调用pass({{1}}本质上意味着“什么都不做”)。