python3 TypeError:' function'对象不可迭代

时间:2014-03-25 11:42:23

标签: python function python-3.x iteration

源代码需要进行哪些更改?


    def Update():
        print('\n')
        print("Update")
        cmd = os.system('xterm -e apt-get update')
        print("Finish update")

    def AptUpdate():
        print('\n')
        print("Update system? {Y/N}")
        print("Y or y")
        print("N or n")
        code = input("Command > ")
        if code == 'y' or code == 'Y':
            for i in Update():
                return Update
            elif code == 'n' or code == 'N': 
                return 
            else: 
                print("Warning!")

    AptUpdate()

    exception:

    Traceback (most recent call last):
      File "pybash.py", line 110, in 
        AptUpdate()
      File "pybash.py", line 102, in AptUpdate
        for i in Update:
    TypeError: 'function' object is not iterable

2 个答案:

答案 0 :(得分:4)

回溯错误指出的是滥用for语句:

for i in Updt():

python 3中的

for如下所示:" Python的for语句按照它们在序列中出现的顺序迭代任何序列(列表或字符串)的项目。&#34 ; (来源:python 3.3文档,第4节:更多控制结构Python 3

由于函数既不是列表也不是字符串,因此您无法使用以下格式:

for [variable] in [function]():

就需要修复的内容而言,它取决于这两个函数应单独完成的内容。

答案 1 :(得分:0)

所以让我们来分解错误。

TypeError:“函数”对象不可迭代

此错误指向该行

for i in Update()

您始终希望in之后的“事物”是可迭代的,意味着可以循环通过的事物。因为您实际上并没有在Update()函数中返回任何内容。 Python尝试遍历不允许类型为NoneType的对象。