在Python 3中打印函数本身

-5 投票
2 回答
1443 浏览
提问于 2025-04-16 11:09

写一个程序,里面有一个叫做 my_func 的函数,这个函数有三个参数,分别是 abc

第一个参数是必须要提供的,第二和第三个参数有默认值,分别是 '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

我会给你一些建议,帮助你自己找到正确的答案。

首先,为什么你要用一个字符串列表作为参数来调用你的函数,而不是直接用一个字符串呢?如果只传一个字符串,会让你的函数更简单。

其次,当你为你的 bc 参数设置默认值时,可以使用任何你想要的值,包括字符串。这样也会让你的函数更简单。

撰写回答