调用异常函数需要变量赋值



Python新手,请耐心听我说…

想知道通过Terminal (Mac OSX)在Python解释器中调用以下两个函数的区别:

功能#1:

def printthis(x):
    if x == "hello":
        print "hello"
    else:
        print "Goodbye"
x = "hello"
printthis(x)

当我在printthis(x)后面按回车键时,它返回打印语句:

hello 

功能#2:

def string_checker(action):
    try:
        check = isinstance(action, basestring)
        if check == True:
            return True
    except ValueError:
        print "We need a string here!"
        return None

然而,对于这个函数,简单地执行此操作然后按enter键不会返回任何内容:

action = 987
string_checker(action)

我必须把这个函数赋值给一个变量,然后打印这个变量,让函数返回一个值,就像这样:

>>>strcheck = string_checker(action)
>>>print strcheck
None

或者像这样:

>>>action = "oiuy"
>>>strcheck = string_checker(action)
>>>print strcheck
True

我在这里错过了什么?为什么有些函数似乎需要分配给一个变量来调用它们,而其他函数可以简单地通过写出函数名和传递参数来调用?

我认为让你困惑的问题是python repl有用地显示你输入的表达式的值,除非该值是None,假设你对这些不感兴趣,而print语句总是呈现你给它的任何东西。这基本上与函数返回或赋值无关,而与print语句有关(对于简单表达式,也可以不这样做)

>>> def return_this(this):
...     return this
... 
>>> return_this(5)
5
>>> return_this(None)
>>> print return_this(5)
5
>>> print return_this(None)
None
>>> 5
5
>>> None
>>> 

最新更新