在Python 3中打印函数本身
写一个程序,里面有一个叫做 my_func
的函数,这个函数有三个参数,分别是 a
、b
和 c
。
第一个参数是必须要提供的,第二和第三个参数有默认值,分别是 'b was not entered'
和 'c was not entered'
,也就是说如果你不提供这两个参数,它们会自动使用这些默认值。
这个函数需要打印出每个参数的值。
在你的程序中,调用 my_func
三次。第一次只给第一个参数一个值。
第二次,给第一个和第二个参数都提供值。第三次,给三个参数都提供值。
在你的程序里,还要打印出这个函数本身。
输出的结果应该是:
test
b was not entered
c was not entered
test
test
c was not entered
test
test
test
<function my_func at 0x397588>
这是我目前得到的结果:
def my_func(a, b=False, c=False):
"""Prints out the values"""
for i in a:
print(i)
if not b:
print("b was not entered")
else:
for i in b:
print(i)
if not c:
print("C was not entered")
else:
for i in c:
print(i)
my_func(['test'])
my_func(['test'], ['test'])
my_func(['test'], ['test'], ['test'])
2 个回答
1
你似乎只缺少最后一部分:
在你的程序中,打印出这个函数本身。
只需要加上这个:
print(my_func)
这样你就能得到你想要的输出了。
另外,虽然你的代码现在能输出结果,但你用的是 False
作为默认值,而不是题目要求的那样。你还为每个参数使用了列表,但题目并没有要求这样做。你可以这样定义你的函数:
def my_func(a, b="b was not entered", c="C was not entered"):
print(a)
print(b)
print(c)
然后这样调用它:
my_func('test')
my_func('test', 'test')
my_func('test', 'test', 'test')
print(my_func)
这样做简单多了,而且输出结果是一样的。
2
我会给你一些建议,帮助你自己找到正确的答案。
首先,为什么你要用一个字符串列表作为参数来调用你的函数,而不是直接用一个字符串呢?如果只传一个字符串,会让你的函数更简单。
其次,当你为你的 b
和 c
参数设置默认值时,可以使用任何你想要的值,包括字符串。这样也会让你的函数更简单。