码迷,mamicode.com
首页 > 其他好文 > 详细

02 共享你的代码 函数模块

时间:2016-06-08 15:44:15      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

通过 python 模块共享代码, 可以向整个python社区开放你的代码,
如果创建, 安装和发布你的共享模块呢?

 

注释

多行注释, 用3个双引号
""" this is
a comment. """
单行注释 #

 

函数转化为模块

模块就是一个包含python代码的文本文件, 对模块的主要需求就是要求文件名以.py结尾.
例如:
def checkList(the_list):
for each_item in the_list:
if isinstance(each_item, list):
checkList(each_item)
else:
print(each_item)
将上边的代码, 保存成 nester.py
python标准库中已经预加了大量模块, 而且它们已经在你的计算机上了. 网上PYPI (python package index)很多

 

发布

1. 首先为模块创建一个文件夹
例如为文件夹起名为 wester, 将文件 wester.py 复制到这个文件夹中.
2. 在文件夹中创建一个名为 setup.py 文件
这个文件中包含有关发布的元数据. 编辑这个文件, 增加下边代码:
from distutils.core import setup

setup(
name = ‘nester‘,
version = ‘1.0.0‘,
py_modules = [‘nester‘], -- 将模块的元数据与setup函数的参数关联.
author = ‘moveofgod‘,
author_email = ‘leon52china@163.com‘,
url = ‘http://www.cnblogs.com/moveofgod‘,
description = ‘only test‘,
)

现在已经有了一个文件夹, 其中包含两个文件, 模块代码放在 nester.py中, 模块由关的元数据放在setup.py中.
3. 构建一个发布文件.
在 nester文件夹中打开一个终端窗口, 输入命令 python3 setup.py sdist
4. 将发布安装到你的 python 本地副本中
在终端输入命令, sudo python3 setup.py install

 

导入模块并使用

import nester
因为 nester 已经安装到本地了

python的模块实现命名空间
python中的所有代码都与一个命名空间关联.
主python程序中(以及IDLE shell中)的代码与一个名为__main__的命名空间关联. 将代码放在其单独模块中时,
python会自动创建一个与模块同名的命名空间.所以, 你的模块的代码会在一个名为nester的命名空间关联.
所以, 调用函数时, 一般会写, nester.checkList(movies)
如果使用 from nester import checkList, 会把指定的函数名增加到当前的命名空间中, 这样一来, 就不用使用限定词nester,
直接使用函数名就可以了. 这种形式会搅乱你本地的命名空间, 同名时, 本地的函数名字会被覆盖.

上传到 PYPI
首先注册一个 ID
如果按照上边的步骤, 已经把函数中的代码放在一个模块中, 用来创建一个发布, 而且已经安装在你的python本地副本中,
要把这个发布上传到 PYPI, 需要完成以下两个步骤: 通过命令行窗口注册 PYPI, 通过命令行窗口上传.
python3 setup.py register, 按照你刚才申请的user信息, 确认一遍.
python3 setup.py sdist upload 使用这个命令上传.

 

确认 python 的模块路径

python 会在一组特定的位置搜索模块(import sys; sys.path 可以找到这个路径)

 

pyc 文件

发布工具创建的nester.pyc 是一种中间代码, 类似java的jvm中间字节码.

 

迭代固定的次数, range()是BIF(build function)

for num in range(4):
print(num)

02 共享你的代码 函数模块

标签:

原文地址:http://www.cnblogs.com/moveofgod/p/5569851.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!