函数模块
函数转化为模块:
"""这是"nester.py"模块,提供了一个print_movies的函数,这个函数的作用打印列表,其中有可能包含(也可能不包含)嵌套列表。"""
def print_movies(the_list):
"""这个函数取一个位置参数,名为the_list,这可以是任何Python列表(也可以包含嵌套列表的列表)。所指定的列表中的每个数据项会(递归地)输出到屏幕上,各数据项各占一行"""
for each_item in the_list:
if isinstance(each_item,list):
print_movies(each_item)
else:
print(each_item)
将该文件保存为nester.py,然后按F5,python shell会重启,然后定义movies列表,调用print_movies可以递归输出列表中的所有数据。
准备发布:
1、为模块创建一个文件夹,将nester.py模块文件复制到该文件夹,该文件夹命名为nester。
2、在新文件夹中创建一个setup.py文件,编辑这个文件:
from distutils.core import setup
setup(
name='nester',
version='1.0.0',
py_modules=['nester'],
author='zzy',
author_email='[email protected]',
url='http://www.zzy.com',
description='A simple printer of nested lists',
)
3、构建一个发布,在cmd窗口下执行python setup.py sdist。
4、将发布安装到Python,仍然在cmd窗口中执行python setup.py install。
导入模块
import nester
调用函数
nester.print_movies(movies)
通过额外的参数控制行为,有些人可能需要在输出时加上缩进,另一些人则不需要改变函数。
"""这是"nester.py"模块,提供了一个print_movies的函数,这个函数的作用打印列表,其中有可能包含(也可能不包含)嵌套列表。"""
def print_movies(the_list,indent=False,level=0):
"""这个函数取一个位置参数,名为the_list,这可以是任何Python列表(也可以包含嵌套列表的列表)。所指定的列表中的每个数据项会(递归地)输出到屏幕上,各数据项各占一行"""
for each_item in the_list:
if isinstance(each_item,list):
print_movies(each_item,indent,level+1)
else:
if indent:
for tab_stop in range(level):
print("\t"),
print(each_item)
有缩进的
>>> print_movies(movies,True)
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones
没有缩进的
>>> print_movies(movies,False)
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones
缩进5个tab
>>> print_movies(movies,True,5)
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
Terry Jones