在python中,只有在赋值中使用函数时才返回值

fff*_*red -1 python

我想做这样的事情:

def f():
    if assignment_requested: return "Return something"
    else: print "Return nothing"
Run Code Online (Sandbox Code Playgroud)

哪个应该给:

>>> f()
Return nothing
>>> a = f()
>>> print a
Return something
Run Code Online (Sandbox Code Playgroud)

我找不到任何方法来检查函数是单独调用f()还是用于分配变量a=f().有没有办法做到这一点 ?

例如,在Matlab中,可以使用if nargout>0.

Mar*_*ers 6

你不能也不应该担心这一点.如果这是一个问题,请使用不同的函数或让您的函数采用控制返回内容的参数.

分配范围广泛且多种多样,可包括再次明确丢弃的分配.例如,如果您的函数用于比较表达式:

if f() == 'Return something':
Run Code Online (Sandbox Code Playgroud)

没有任务,但返回值很重要.

使用不同的功能:

def f_with_return():
    return 'something'

def f_without_return():
    f_with_return()  # ignores the return value!
    print "I won't return something"
Run Code Online (Sandbox Code Playgroud)

或参数:

def f(return_something=True):
    if return_something:
        return 'something'
    print "I won't return something"
Run Code Online (Sandbox Code Playgroud)

让您控制返回的内容.

但是,如果您没有显式返回任何内容,Python 仍会返回一个值:None.