赞
踩
一、編寫簡單的函數,保存一下。
#coding=utf-8
"""這是“nester.py”模塊,提供了一個名為print_lol的函數,這個函數的作用是打印列表,其中有可能包含(也有可能不包含)嵌套列表。"""
def print_lol(the_list,level =0):"""這個函數取一個位置參數,名為"the_list",這個可以是任何python列表(也可以是包含嵌套列表的列表)。所指定的列表中的每個數據項(遞歸的)輸出到屏幕上,各數據項各占一行。
第二個參數(名為"level")用來在遇到嵌套列表時插入制表符。"""
for each_item inthe_list:ifisinstance(each_item,list):
print_lol(each_item,level)#遞歸調用
else:for tab_stop inrange(level):print("\t",end="")print(each_item)
二、測試自己的代碼
In [1]: num = [1,2,3,[4,5,6,[7,8,9]]]
In [1]: def print_lol(the_list, indent=False, level=0):
...: for each_item in the_list:
...: if isinstance(each_item,list):
...: print_lol(each_item,indent,level+1)^I#遞歸調用
...: else:
...: if indent:
...: for tab_stop in range(level):
...: print("\t",end="")
...: print(each_item)
...:In [16]: print_lol(num,True,0)
1
2
3
4
5
6
7
8
9
三、准備發布
1.首先為模塊創建一個文件夾。
創建了文件夾之后,將nester.py模塊文件復制到這個文件夾中。為了簡單起見,下面把這文件夾命名為nester
cd E:\vscodeProject\python\mkdirnestermv nester.py E:\vscodeProject\python\nester\
2.在新文件夾中創建一個名為setup.py的文件
這個文件包含有關發布的元數據。編輯這個文件,增加下面的代碼。
from distutils.core importsetup
setup(
name= 'nester',
version= '1.0.0',
py_modules= ['nester'],
author= 'anchun',
author_email= '15631196139@163.com',
url= 'http://www.cnblogs.com/quail2333',
description= 'A simple printer of nester lists',
)
查看目錄內的內容
3.構建一個發布文件
>python3 .\setup.py sdist
running sdist
running check
warning: sdist: manifest template'MANIFEST.in' does notexist (using default file list)
warning: sdist: standard filenotfound: should have one of README, README.txt
writing manifest file'MANIFEST'creating nester-1.4.0
making hard linksin nester-1.4.0...
hard linking nester.py-> nester-1.4.0
hard linking setup.py-> nester-1.4.0
Creating tar archive
removing'nester-1.4.0' (and everything under it)
然后查看目錄下:
4.將發布安裝到你的python本地副本中
>python3 .\setup.py install
running install
running build
running build_py
creating build
creating build\lib
copying nester.py->build\lib
running install_lib
running install_egg_info
Removing D:\python36\Lib\site-packages\nester-1.4.0-py3.6.egg-info
Writing D:\python36\Lib\site-packages\nester-1.4.0-py3.6.egg-info
四、發布速覽
利用python的發布工具,你的模塊已經轉換為一個發布,並且安裝在你的python本地副本上。
開始時只有一個函數,這個函數輸入到一個名為nester.py的文件中,這就創建了一個模塊。然后創建一個名為nester的文件夾存放這個模塊。通過在這個文件夾中增加一個名為setup.py的文件夾,從而能夠構建和安裝你的發布,這回生成一組額外的文件,並在nester文件夾中出現兩個新的文件夾,這些文件和文件夾都是由發布工具為你創建的。
PS E:\vscodeProject\python\nester> tree /a /F
卷 文件 的文件夾 PATH 列表
卷序列號為 B248-FA6C
E:.| MANIFEST #這個文件包含發布的文件列表
| nester.py #代碼在這個文件中
| setup.py #元數據在這個文件中
|
+---build #這是新增的文件夾
| \---lib #這是新增的文件夾
| nester.py #代碼在這個文件中
|\---dist
nester-1.4.0.tar.gz #這是發布包
1.導入模塊
In [1]: import nester #使用import關鍵字導入模塊
In [2]: nester? #使用nester?顯示模塊信息
Type: module
String form:File: d:\python36\lib\site-packages\nester.py
Docstring: 這是“nester.py”模塊,提供了一個名為print_lol的函數,這個函數的作用是打印列表,其中有可能包含(也有可能不包含)嵌套列表。
In [3]: nester?? #使用nester??顯示詳細信息,包括源碼
Type: module
String form:File: d:\python36\lib\site-packages\nester.py
Source:#coding=utf-8
"""這是“nester.py”模塊,提供了一個名為print_lol的函數,這個函數的作用是打印列表 ,其中有可能包含(也有可能不包含)嵌套列表。"""
def print_lol(the_list, indent=False, level=0):"""這個函數取一個位置參數,名為"the_list",這個可以是任何python列表(也可 以是包含嵌套列表的列表)。所指定的列表中的每個數據項(遞歸的)輸出到屏幕上,各 數據項各占一行。
第三個參數(名為"level")用來在遇到嵌套列表時插入制表符。"""
for each_item inthe_list:ifisinstance(each_item,list):
print_lol(each_item,indent,level+1) #遞歸調用
else:ifindent:for tab_stop inrange(level):print("\t",end="")print(each_item)
2.導入完成后,我們使用print_lol()打印嵌套數組
In [5]:nester.print_lol(num)#這里涉及到命名空間。
#簡單來說:王寡婦找老六抬水,寫成命名空間:老六.抬水(王寡婦)nester.print_lol(num)1
2
3
4
5
6
7
8
9
In [6]: from nester importprint_lol as pl
In [7]: pl(num)1
2
3
4
5
6
7
8
9
五、發布到PYPI
我們如果有賬號密碼,可以在這個網站進行上傳,共享你的代碼。沒有賬號和密碼注冊一個即可。
我們隨便搜索一個模塊
執行命令:
python3 setup.py register
因為我的密碼忘記了,所以就不繼續演示了,登陸成功后,執行上傳命令即可
python3 setup.py sdist upload
返回200即上傳成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。