Python def函数在定义时打印提示消息

时间:2014-08-29 03:17:54

标签: python

我正在使用Python 3.41。

如果我理解以下帖子, Why is this def function not being executed in 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 个答案:

答案 0 :(得分:6)

您正在看到提示,因为您在函数定义的参数中调用input() - 具体而言,作为默认值,在定义时进行评估。 / p>

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

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

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