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

# coding=utf-8

"""
这是“nester.py”模块,提供了一个名为print_lol的函数,这个函数的作用是打印列表,其中有可能包含(也有可能不包含)嵌套列表。
""" def print_lol(the_list,level = 0):
"""
这个函数取一个位置参数,名为"the_list",这个可以是任何python列表(也可以是包含嵌套列表的列表)。所指定的列表中的每个数据项(递归的)输出到屏幕上,各数据项各占一行。
第二个参数(名为"level")用来在遇到嵌套列表时插入制表符。
"""
for each_item in the_list:
if isinstance(each_item,list):
print_lol(each_item,level) #递归调用
else:
for tab_stop in range(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\
mkdir nester
mv nester.py E:\vscodeProject\python\nester\

2.在新文件夹中创建一个名为setup.py的文件

这个文件包含有关发布的元数据。编辑这个文件,增加下面的代码。

from distutils.core import setup

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 not exist (using default file list) warning: sdist: standard file not found: should have one of README, README.txt writing manifest file 'MANIFEST'
creating nester-1.4.0
making hard links in 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: <module 'nester' from 'd:\\python36\\lib\\site-packages\\nester.py'>
File: d:\python36\lib\site-packages\nester.py
Docstring: 这是“nester.py”模块,提供了一个名为print_lol的函数,这个函数的作用是打印列表,其中有可能包含(也有可能不包含)嵌套列表。 In [3]: nester?? #使用nester??显示详细信息,包括源码
Type: module
String form: <module 'nester' from 'd:\\python36\\lib\\site-packages\\nester.py'>
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 in the_list:
if isinstance(each_item,list):
print_lol(each_item,indent,level+1) #递归调用
else:
if indent:
for tab_stop in range(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 import print_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即上传成功。

Python_Day2_共享你的代码的更多相关文章

  1. Linux编译Windows共享目录下代码

    Linux编译Windows共享目录下代码(金庆的专栏)万神服务器代码是跨平台的.平时策划在Windows上开自己的服务器测试,测试和发布服务器为Linux.开发时,先在Windows上编译测试,再到 ...

  2. VS Code项目中共享自定义的代码片段方案

    VS Code项目中共享自定义的代码片段方案 一.问题背景 项目中注释风格不统一,如何统一注释风格 一些第三方组件库名称太长,每次使用都需要找文档,然后复制粘贴 部分组件库有自己的Snippets插件 ...

  3. 【head first python】2.共享你的代码 函数模块

    #coding:utf-8 #注释代码! #添加两个注释,一个描述模块,一个描述函数 '''这是nester.py模块,提供了一个名为print_lol()的函数, 这个函数的作用是打印列表,其中可能 ...

  4. Ubuntu上挂载源代码,docker容器中共享这个原代码,实现自动部署

    https://www.jianshu.com/p/23465dc86d3e   地址 5.3. 挂载源代码 为了在宿主机上创建.NET Core 项目,这个时候我们就需要在Linux宿主机上安装.N ...

  5. 安卓 unit 测试与 instrument 测试的代码共享

    假如你有一款安卓应用,其包含一系列测试类,其中一部分是unit 测试(位于 src/test),其余为instrument 测试(位于 src/androidTest). 那么问题来了:你有一些想在所 ...

  6. VS Code项目中通过npm包的方式共享代码片段的方案实现

    VS Code项目中通过npm包的方式共享代码片段的方案实现 上周在 "VS Code项目中共享自定义的代码片段方案" 的文章中提到过一个共享代码片段的方案,上周经过调研后并没有发 ...

  7. Windows/Linux 代码共享,开发者称此举使Linux有了更差的结局

    英特尔近期披露了 Linux 图形驱动程序相关的一些细节并指出,英特尔的图形驱动程序现在已在 Windows/Linux 之间共享约 60% 的代码库,90~100% 的性能. 针对此事,红帽公司的高 ...

  8. Linux学习笔记(14)-进程通信|共享内存

    在Linux中,共享内存是允许两个不相关的进程访问同一个逻辑内存的进程间通信方法,是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式. 不同进程之间共享的内存通常安排为同一段物理内存.进程可 ...

  9. .NET重构—单元测试的代码重构

    阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: ...

随机推荐

  1. 接口测试01- Jmeter-线程进程-环境变量

    1.1 概念 JMeter 是 Apache 组织使用 Java 开发的一款测试工具 ,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资源,例如静态文件.Java ...

  2. Microsoft OLE DB Provider for Oracle 在哪个安装包中

    http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-098155.html oracle odbc downlo ...

  3. 最新 物易云通java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.物易云通等10家互联网公司的校招Offer,因为某些自身原因最终选择了物易云通.6.7月主要是做系统复习.项目复盘.Leet ...

  4. docker下安装nginx并实现https访问

    一.启动容器 docker run --detach --name wx-nginx -p 443:443 -p 80:80 -v /home/nginx/data:/usr/share/nginx/ ...

  5. win7蓝屏死机0x0000003B错误蓝屏故障解决

    win7蓝屏死机0x0000003B错误蓝屏故障解决 刚才一个朋友问我:电脑蓝屏了怎么办. 我问他要了电脑的截图,自己看了错误代码:0x0000003B 搜索资料,查询了一番.都是说电脑中病毒或者是系 ...

  6. java静态代理和JDK动态代理

    静态代理 编译阶段就生产了对应的代理类 public interface IBussiness { void execute(); } public class BussinessImpl imple ...

  7. eclipse下载SpringBoot插件及创建SpringBoot项目

    一.eclipse在线下载SpringBoot插件 1.help->eclipse marketplace->popular-选择spring tool suite(STS)进行下载 ​ ...

  8. Java开发笔记(一百三十五)Swing的文件对话框

    除了常规的提示对话框,还有一种对话框也很常见,它叫做文件对话框.文件对话框又分为两小类:打开文件的对话框.保存文件的对话框,但在Swing中它们都用类型JFileChooser来表达.下面是JFile ...

  9. python大道——博客目录

      python基础 第一章 计算机基础 计算机基础 第二章 python基础语法 python入门 第三章 基础数据类型和文件操作 整型.布尔.字符串 列表.字典.集合 公共功能.小数据池 hash ...

  10. MediaPlayer的prepareAsync不回调onPrepared问题

    一.问题排查 debug调试的framework日志信息: 根据日志,进入MediaPlayer的framework层看源码 STEP 1 先从 V/MediaPlayerNative: constr ...