所以我试图解决一些问题,并使用给定的逻辑。 但是,即使每次使用print获得正确的值后,我尝试返回该值时,输出均为None。
def rt(c):
print "yep",c
cc(c)
def asa():
return 3
def klds(s):
return s+4
def cc(k):
if k!=7:
print k
print 3434
return k
print 2
rt(k+2)
print cc(klds(asa()))
预期输出: 倒数第二个值3434仅用于检查功能是否在打印后执行,而倒数第三个是要返回的值
2
yep 9
9
3434
9
获取输出:
2
yep 9
9
3434
None
答案 0 :(得分:0)
cc
在这里被两次呼叫。
print cc(klds(asa()))
,等同于print cc(7)
,是它第一次被调用。通过以下方式进行跟踪:
if k != 7: # Nope, keep going...
print 2
rt(k+2)
我们已经结束了该功能。没有return语句,因此它返回None
,这是您最后看到的内容。
要解决此问题,请确保返回值。 (即return rt(k+2)
。)
在代码的其他地方也有类似的问题,您还必须先解决它,然后才能按预期运行。
答案 1 :(得分:0)
这是正在发生的事情
print cc(klds(asa()))
从最内层的嵌套函数开始并进行计算:
从本质上讲,当您在if语句中返回值时,返回值会将值返回到首次调用它的执行列表的顶部。您在调用rt()时首先调用此执行路径,因此返回的值在那里返回。如果要返回该值,则应将rt()返回的值分配给一个变量,然后返回该变量