python main()在shell中不执行

问题描述:

我想在main中运行我的flatten(li)函数,但是当我运行该模块时它没有运行。但是当我在shell中输入“flatten(li)”时它正在工作。有任何想法吗?谢谢!python main()在shell中不执行

li = [0, 2, [[2, 3], 8, 100, None, [[None]]], -2] 

def flatten(li): 
    i = 0 
    while i < len(li): 
     "only execute if the element is a list" 
     while isinstance(li[i], list): 
      """taking the element at index i and sets it as the 
       i'th part of the list. so if l[i] contains a list 
       it is then unrolled or 'unlisted'""" 
      li[i:i + 1] = li[i] 
     i += 1 

    for element in li: 
     if not element and not isinstance(element, int): 
     li.remove(element) 

    return li 

def main(): 
    flatten(li) 

if __name__ == '__main__': 
    main() 
+1

你什么也看不到,因为你没有打印酷 – Copperfield

你不是做与输出任何东西。我不知道你希望看到什么,但这样的事情是你想要什么:

li = [0, 2, [[2, 3], 8, 100, None, [[None]]], -2] 


def flatten(li): 
    i = 0 
    while i < len(li): 
     while isinstance(li[i], list): 
      li[i:i + 1] = li[i] 
     i += 1 

    for element in li: 
     if not element and not isinstance(element, int): 
      li.remove(element) 

    return li 


def main(): 
    flat = flatten(li) 
    print(flat) 


if __name__ == '__main__': 
    main() 
+0

非常感谢!我怎么不打印,如果我只是在壳上输入flatten(li)?另外,我的文档是否正确? –

+0

当你输入'flatten(li)'时,你会调用'flatten'函数,它返回'li'。默认情况下,你的shell正在打印返回的值。当你调用'main'调用'flatten',它将'li'返回'main',但'main'函数对该对象没有任何作用。 'main'然后返回'None'到shell。 – Batman

+0

非常有帮助! –

它的工作,当然 - 你只是不打印任何东西,所以你什么都看不到。尝试添加print电话:

if __name__ == '__main__': 
    main() 
    print(li) 
+0

感谢这么多!我怎么不打印,如果我只是在壳上输入flatten(li)?另外,我的文档是否正确? –

+0

如果你从python shell运行东西,它会自动打印出所谓的函数返回 - 为了您的方便。 – avysk

+0

不,你记录代码的方式是不正确的。改为使用评论(''这里有一些评论')。您尝试记录文档(docstrings)的方式仅用于函数,类和模块。 – avysk