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
>>>