我试图获得一个函数调用,但我无法打印它。请帮忙。 这是代码:
def foo():
name = input ('>>').lower().split()
for item in name:
if name == foo:
print ('foo here!')
else:
bar()
def bar():
name = input ('>>').lower().split()
for item in name:
if name == bar:
print ('bar here!')
def start():
print('Welcome Home')
name = input
foo()
start()
答案 0 :(得分:0)
print ('foo here!')
和print ('bar here!')
都未执行,因为在大多数情况下,布尔表达式name == foo
和name == bar
被评估为false。例如,在定义name == foo
下的布尔表达式foo()
中,列表name
的第一个元素与foo
进行比较。 foo
返回对象函数foo()
的友好字符串表示形式(通常用于调试目的)。您实际上可以通过执行foo()
尝试打印print(foo)
,并将返回的值分配到name
中的列表foo()
(在我的情况下为<function foo at 0x7fad58f35d40>
- 它将会可能在你的机器上有所不同)。这会将name == foo
评估为true,从而导致print ('foo here!')
被执行。话虽如此,here is how for loop works:
name
列表中的第一个元素已分配给item
变量。接下来,执行for循环的主体。在执行主体之后,在再次执行for循环体之前,将列表name
中的第二个元素分配给变量item
。此过程将继续,直到name
列表中没有其他元素。现在为了执行说print('foo here!')
,必须将if语句中的布尔表达式求值为true。
以下是用户在运行程序后键入foo时将执行print('foo here!')
的示例。
def foo():
name = input('>>').lower().split()
for item in name:
if item == 'foo':
print('foo here!')
else:
bar()
def bar():
name = input('>>').lower().split()
for item in name:
if item == 'bar':
print('bar here!')
print('Welcome Home')
foo()
在定义foo()
中,列表name
的第一个元素与string foo进行比较,从而满足条件if name == 'foo'
。以下是执行的示例:
[firas@arch Python]$ ./foobar.py
Welcome Home
>>foo
foo here!