Python函数定义时打印提示信息

2 投票
1 回答
3150 浏览
提问于 2025-04-18 18:56

我正在使用 Python 3.41。

如果我理解下面这个讨论串,为什么这个 def 函数在 Python 中没有被执行?,是正确的,那么在 Python 中定义一个函数其实是把这个函数存起来,只有在调用它的时候才会执行。我的理解对吗?

我想找出一个数字的所有因数,把它们存到一个元组里,然后打印出来。

最开始我写了,

if x < 0:
    print ('not positive')
else:
    div = ()
    for i in range(1, x):
        if x%i == 0:
            div = div + (i,)
    print (div)

这个是可以工作的。

现在我想把它做成一个函数,以便在更大的代码中使用。以下是我尝试过的代码。

def find_dt(x = int(input('enter a positive number '))):
    if x < 0:
        print ('not positive')
    else:
        div = ()
        for i in range(1, x):
            if x%i == 0:
                div = div + (i,)
        print (div)

当我执行这个代码时,程序窗口里打印出了函数的提示信息,但并没有调用这个函数。而且如果我输入一个数字,它也没有返回任何结果。我原本以为在程序窗口里不会有明显的反应。

你能详细解释一下发生了什么,并教我怎么正确地写这个函数吗?我希望我的问题足够清楚。

谢谢,

1 个回答

6

你看到这个提示是因为你把 input() 的调用放在了函数定义的 参数 中——具体来说,是作为一个默认值,这个默认值是在定义的时候就被计算出来的。

听起来你真正想要的是一个不需要任何参数的函数,并且只有在运行的时候才调用 input()

def find_dt():
    x = int(input('enter a positive number: '))

    if x < 0:
        print ('not positive')
    ...

撰写回答