TypeError:“ int”对象不可调用。嵌套功能

时间:2018-12-12 19:54:22

标签: python closures

我正在尝试运行这个小的python脚本,但是在尝试打印时出现错误。

为什么会这样? 我该如何解决? 代码是:

os.path.exists

但是我得到这个错误:

   # Define echo
   def echo(n):
       """Return the inner_echo function."""

       # Define inner_echo
       def inner_echo(word1):
           """Concatenate n copies of word1."""
          echo_word = word1 * n
          return echo_word

       # Return inner_echo
       return inner_echo

# Call echo: twice
twice = echo(2)

# Call echo: thrice
thrice = echo(3)

# Call twice() and thrice() then print
print(twice('hello '), thrice('hello '))

但是,如果我这样做:

Traceback (most recent call last):
  File "<stdin>", line 22, in <module>
  print(twice('hello '), thrice('hello '))
TypeError: 'int' object is not callable

我打电话

copy2=twice('Haha ')

我得到:

copy2

但是,如果我尝试打印它,则会再次出现错误:

In [106]: copy2
Out[106]: 'Haha Haha '

我不知道这是怎么回事,以及如何解决它。

1 个答案:

答案 0 :(得分:0)

修复该函数的缩进后,代码可以在我的IDE中工作。您代码中的函数是离右侧太远的一个标签。下面的代码按预期工作

# Define echo
def echo(n):
    """Return the inner_echo function."""

    # Define inner_echo
    def inner_echo(word1):
        """Concatenate n copies of word1."""
        echo_word = word1 * n
        return echo_word

    # Return inner_echo
    return inner_echo


# Call echo: twice
twice = echo(2)

# Call echo: thrice
thrice = echo(3)

# Call twice() and thrice() then print
print(twice('hello '), thrice('hello '))

enter image description here