一、编写简单的函数,保存一下。

#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.首先为模块创建一个文件夹。

创建了文件夹之后,将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= '',
description= 'A simple printer of nester lists',
)

查看目录内的内容

使用python 实现samba共享 python发布共享代码_使用python 实现samba共享

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)

然后查看目录下:

使用python 实现samba共享 python发布共享代码_使用python 实现samba共享_02

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

我们如果有账号密码,可以在这个网站进行上传,共享你的代码。没有账号和密码注册一个即可。

使用python 实现samba共享 python发布共享代码_使用python 实现samba共享_03

我们随便搜索一个模块

使用python 实现samba共享 python发布共享代码_使用python 实现samba共享_04

执行命令:

python3 setup.py register

使用python 实现samba共享 python发布共享代码_使用python 实现samba共享_05

因为我的密码忘记了,所以就不继续演示了,登陆成功后,执行上传命令即可

python3 setup.py sdist upload

返回200即上传成功。