zoukankan      html  css  js  c++  java
  • Python_Day2_共享你的代码

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

    # 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("	",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(" ",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:vscodeProjectpython
    mkdir nester
    mv nester.py E:vscodeProjectpython
    ester

    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 buildlib
    copying nester.py -> buildlib
    running install_lib
    running install_egg_info
    Removing D:python36Libsite-packages
    ester-1.4.0-py3.6.egg-info
    Writing D:python36Libsite-packages
    ester-1.4.0-py3.6.egg-info

    四、发布速览

    利用python的发布工具,你的模块已经转换为一个发布,并且安装在你的python本地副本上。

    开始时只有一个函数,这个函数输入到一个名为nester.py的文件中,这就创建了一个模块。然后创建一个名为nester的文件夹存放这个模块。通过在这个文件夹中增加一个名为setup.py的文件夹,从而能够构建和安装你的发布,这回生成一组额外的文件,并在nester文件夹中出现两个新的文件夹,这些文件和文件夹都是由发布工具为你创建的。

    PS E:vscodeProjectpython
    ester> 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:python36libsite-packages
    ester.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:python36libsite-packages
    ester.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("	",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即上传成功。

  • 相关阅读:
    mysql锁表与解锁
    问题汇总
    安装一台Centos7桌面版的跳板机
    Centos7二进制部署k8s-v1.20.2 ipvs版本(部署mysql、nacos)
    Centos7二进制部署k8s-v1.20.2 ipvs版本(Prometheus监控k8s)
    CV2 安装异常
    PostgreSQL VACUUM 没有效果(无法清理死元组)的原因
    SQL Server 进程运行状态解析
    mysql 几种启动和关闭mysql服务的方法和区别
    MySQL学习(九)小结(转载)
  • 原文地址:https://www.cnblogs.com/quail2333/p/11249696.html
Copyright © 2011-2022 走看看