毕多尼世界的问候。在学习Python的第五天,我和大家都在努力处理调用其他函数的函数。这对有些人来说很简单..。
在此代码中:
def powers_of_x(x):
print ('Powers Function with ', x, ' entered:')
for n in range (-3, 4, 1):
print ('power of ', n, "= ", x**n)
return 'First one ended (using variables with defined range)'
def powers_of_9():
print ("Powers function for 9 is:")
powers_of_x(9)
return 'Second one ended (no passed variable here)'
def combined():
x = int(input('Enter value to start:'))
print ('First, run powers_of_x function for entered value of: ', x)
powers_of_x(x)
print ('Second, run powers_of_9 function for powers of 9:')
powers_of_9()
return 'All now finished.'第一个函数powers_of_x(x)本身工作得很好。第二个也是,powers_of_9()。在这两种情况下,都会出现打印的return消息。
但是当第三个函数combined()调用它们时,来自每个函数的最终return消息(‘第一个结束.’第二次结束.)不是印刷出来的。为什么不行?“一切都结束了”,就像它应该出现的那样。谢谢你的任何更正。
抱歉,我可能说得不太好。我的问题是为什么“第一篇文章结束.”“第二个结束了.”当前两个函数分开运行时出现,而在函数combined()运行时则不会出现。这是return的一个特性吗?如果是这样的话,我将坚持使用print。
发布于 2014-01-02 22:53:46
我的问题是为什么“第一篇文章结束.”“第二个结束了.”当前两个函数单独运行时出现,而在运行函数组合()时则不会出现。
它看起来像是在交互式提示符下运行代码(无论是在空闲中还是在命令行中)。在交互式提示符下,当您运行一个函数而不将其返回值赋给任何东西时,返回值将打印到屏幕上。如果确实将其返回值赋值给变量,或者如果函数不是顶级函数,则返回值不会打印到屏幕上。例如:
>>> def foo():
return 3
>>> def bar():
foo()
>>> foo() # not assigned to anything -> prints return value to output
3
>>> bar() # not top-level -> doesn't print return value to output
>>> x = foo() # assigned to x -> doesn't print return value to output这是交互式提示符的一个怪癖。如果您将行powers_of_9()添加到文件的末尾,然后运行它,则不会得到相同的结果。当您这样做时,您的结果如下所示:
Powers function for 9 is:
Powers Function with 9 entered:
power of -3 = 0.0013717421124828533
power of -2 = 0.012345679012345678
power of -1 = 0.1111111111111111
power of 0 = 1
power of 1 = 9
power of 2 = 81
power of 3 = 729如您所见,没有打印powers_of_9的返回值。
无论如何,使用return语句的方式是不正确的。只有当您想从函数中提取一些信息以便在其他地方使用时,才应该使用return。例如,就像这个愚蠢的例子:
def add(x, y):
return x+y
def print_two_plus_three():
result = add(2, 3)
print(result)当您只想显示一些信息时,应该使用print。
另外,我想对您的代码提供一些评论。为了实现您想要的结果,您的代码应该如下所示:
def powers_of_x(x):
print('Powers function with', x, 'entered:')
for n in range(-3, 4, 1):
print('power of', n, '=', x**n)
print('First one ended (using variables with defined range)')
def powers_of_9():
print('Powers function for 9 is:')
powers_of_x(9)
print('Second one ended (no passed variable here)')
def combined():
x = int(input('Enter value to start: '))
print('First, run powers_of_x function for entered value of:', x)
powers_of_x(x)
print('Second, run powers_of_9 function for powers of 9:')
powers_of_9()
print('All now finished')print('abc', 'def', 'ghi')时,打印的字符串是abc def ghi。也就是说,要打印的每个参数都由一个空格分隔。您可以通过编写例如print('abc', 'def', 'ghi', sep='X')来改变这种行为,其中sep关键字参数指定应该使用哪个字符串来分隔参数。正如你可能猜到的,这个打印abcXdefXghi。return值被认为是糟糕的样式(当然,除非您返回一个元组)。print('foo')而不是print ('foo')。input()留一个空格,这样就可以将输入的值与输入提示符分开。发布于 2014-01-02 21:09:47
您忽略了函数的返回值。如果要打印它们,请添加print()
print(powers_of_x(x))等。
尽管如此,简单地将return语句更改为print()似乎更符合逻辑。
发布于 2014-01-02 21:09:28
因为他们会被退回,而不是印刷。它们返回一个字符串,但在组合式()中,这些字符串没有被分配给任何东西。
你可以说:
my_string = powers_of_x(9)
print(my_string)或者简单地说:
print(powers_of_x(9))https://stackoverflow.com/questions/20891893
复制相似问题