我在编写此问题的代码时遇到问题。我在几个地方看到过这个问题,但我仍然无法从他们提供的提示中找到答案。
问题是:编写一个具有两个函数的程序:first()和second()。函数first()应该打印字符串"在函数first()"然后调用函数second()。函数second()应该打印字符串"在函数second()中。在全局范围内,您应该首先调用函数()。
这是我的代码..
def first():
first = "In function first"
def second():
second = "In function second"
print first(), second()
这看起来更接近吗?它仍然无法正常工作,但我将打印功能重新放入..
答案 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}}更灵活。