Python编码(调用函数/返回值)

时间:2014-09-28 22:04:15

标签: python function return call

我在编写此问题的代码时遇到问题。我在几个地方看到过这个问题,但我仍然无法从他们提供的提示中找到答案。

问题是:编写一个具有两个函数的程序:first()和second()。函数first()应该打印字符串"在函数first()"然后调用函数second()。函数second()应该打印字符串"在函数second()中。在全局范围内,您应该首先调用函数()。

这是我的代码..

def first():
    first = "In function first"


def second():
    second = "In function second"

print first(), second()

这看起来更接近吗?它仍然无法正常工作,但我将打印功能重新放入..

1 个答案:

答案 0 :(得分:0)

first = "In function first"不会使该函数返回"In function first"

我能理解为什么你会这么想。在某些语言中,返回值的方法是将其分配给函数。在其他语言中,赋值是一个表达式,在函数内部计算的最后一个表达式是返回值。所以,有很多语言你正在做的事情会起作用。

但是Python并不是其中之一。在Python中,返回值的唯一方法是使用return语句。如果您不使用return语句,则来电者只会获得None

因此,您的代码只是创建一个局部变量,其中包含(容易混淆)与函数相同的名称,为其赋值,然后忽略该变量,因此最终无效。

你想要的是:

def first():
    return "In function first"

def second():
    return "In function section"

print first(), second()

然而,虽然这会给你想要的输出,但它实际上并没有按你所说的去做:

  

函数first()应该打印字符串"在函数first()"

在这种情况下,它应该包含print,而不是return其他人必须打印的值。

  

...然后调用函数second()。

然后,您需要将second()的调用放在first的定义内,而不是在print之外。

  

函数second()应该打印字符串"在函数second()中。

同样,它应该return,而不是def first(): print "In function first" second() def second(): print "In function second" first()

所以,这比你想要做的更好:

print

话虽这么说,你编写的代码(使用此修复程序)实际上似乎是更好的代码而不是你想编写的代码。从内部函数返回值并在最高级别处理输出通常比在整个地方{{1}}更灵活。