id and deleted
有人可以解释other_func和other_func2有什么区别吗? 我在一个代码中看到了这一点,但不确定这两个函数之间有什么区别。
答案 0 :(得分:2)
此功能
def other_func():
return print_func()
返回print_func()
这个
def other_func2():
print_func()
总是返回None
,因为其定义不包含return语句。
不幸的是,此示例不相关。由于print_func()
也没有return语句,因此它总是返回None
。因此,other_func()
将始终返回None
...
请考虑以下示例,以更好地理解函数定义和返回值:
def funcNoReturn():
print("funcNoReturn() always return None!")
def funcA():
# Returns an int value
return 42 + 100
def funcB():
return "a string value..."
print(funcNoReturn())
print(funcA())
print(funcB())
执行后,输出为:
funcNoReturn() always return None!
None
142
a string value...
答案 1 :(得分:0)
也许这个例子可以为您提供帮助:
def print_func():
print("Hello, how you doin'?")
return "printed"
def other_func():
return print_func()
def other_func2():
print_func()
if __name__ == "__main__":
s1 = other_func()
s2 = other_func2()
print(s1)
print(s2)
问题是other_func返回的值可以存储在s1中。而other_func2不返回任何内容。为了向您展示我在print_func()中添加了return语句。
答案 2 :(得分:0)
other_func 返回print_func()
返回的值。由于return
中没有明确的print_func()
指令,因此它将返回默认值None
。因此,other_func在执行None
之后返回print_func()
。
other_func2 返回None
(默认返回值)。
因此,两者最终都在做同样的事情。但是,由于指令return print_func()
知道print_func()没有返回指令,因此 other_func 可能会使读者感到困惑。
答案 3 :(得分:0)
在此设置中配置的所有功能均返回None
。
这是函数的默认返回值,如果未指定return
,则返回该值。
您的other_func()
返回print_func()
的返回值。假设您没有为print_func()
指定任何返回值,它将返回None
并使other_func()
也返回None
。
如果您为print_func()
指定了任何返回值,则返回值将由other_func()
拾取,而不会由other_func2()
拾取。
答案 4 :(得分:0)
python 必须中的函数必须返回某些内容(除非它们引发异常)。因此,所有python函数都有一个隐式return None
及其代码的结尾
def fun():
#<your code>
return None
如此
def f():
pass
v = f() # v is None
您的函数实际上对python解释器来说是这样的
def print_func():
print("Hello, how you doin'?")
return None
def other_func():
return print_func() # === return None
return None # never encountered
def other_func2():
print_func()
return None
因此,只要print_func
返回None
,两者都会做完全相同的事情。如果将print_func
定义为
def print_func():
print("Hello, how you doin'?")
return 0
然后other_func
现在将返回0
,而other_func2
仍将返回None
。