Python如何共享代码?
通过函数模块。
http://blog.csdn.net/michaeljy1991/article/details/50325407
从上一节,get到Python的重复代码可以定义在函数里,下面会涉及到如何共享你的函数代码
构建发布
构建一个发布文件
将函数写在一个后缀为py的文件里,如下:
一组"""之间的内容为注释。
关于这个函数的说明文件setup.py:
通过py_modules进行关联
通过Python setup.py sdist,构建一个发布文件
将发布安装到本地
使用python setup.py install,将发布安装到本地
发布后结构图
导入模块并使用
构建发布过后,可以通过import print_list导入模块
神马情况?导入了模块还报错?!
别急下面会解决it
Python的模块实现命名空间
OK,这里引入命名空间的概念
其实可以把命名空间看做Java的包
Python内置的模块都在__main__这个命名空间下
所以,当使用第三方模块时,需要带上命名空间名
注册pypl网站
pypl是什么?
简单地说就类似maven样的东东吧。
https://pypi.python.org/pypi?%3Aaction=register_form
向pypl上传代码
两步走:
python setup.py register
python setup.py sdist upload
向pypl注册你的模块,如果出现如下错误,请考虑换一个模块名称
向pypl上传你的发布
pypl社区
和其他语言的社区一样。
BIF
对,前面介绍过BIF,内置函数。
所以,在写任何自定义函数前,先考虑BIF是否已经实现了,Python一共有70多个BIF。
range()
range(4) : 从0迭代到4,是一个BIF
使用range改造自定义函数
效果如上。
步骤如下,每次改了都要重新发布,后面upload操作可以忽略。
F:\Improve\Python\pypl>python setup.py sdist
running sdist
running check
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default fi
le list)
warning: sdist: standard file not found: should have one of README, README.txt
writing manifest file 'MANIFEST'
creating michaeljy_print_list-1.0.1
making hard links in michaeljy_print_list-1.0.1...
hard linking michaeljy_print_list.py -> michaeljy_print_list-1.0.1
hard linking setup.py -> michaeljy_print_list-1.0.1
creating 'dist\michaeljy_print_list-1.0.1.zip' and adding 'michaeljy_print_list-
1.0.1' to it
adding 'michaeljy_print_list-1.0.1\michaeljy_print_list.py'
adding 'michaeljy_print_list-1.0.1\PKG-INFO'
adding 'michaeljy_print_list-1.0.1\setup.py'
removing 'michaeljy_print_list-1.0.1' (and everything under it)
F:\Improve\Python\pypl>python setup.py install
running install
running build
running build_py
running install_lib
running install_egg_info
Writing D:\Python35\Lib\site-packages\michaeljy_print_list-1.0.1-py3.5.egg-info
F:\Improve\Python\pypl>python setup.py upload
running upload
error: No dist file created in earlier command
F:\Improve\Python\pypl>python setup.py sdist upload
running sdist
running check
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default fi
le list)
warning: sdist: standard file not found: should have one of README, README.txt
writing manifest file 'MANIFEST'
creating michaeljy_print_list-1.0.1
making hard links in michaeljy_print_list-1.0.1...
hard linking michaeljy_print_list.py -> michaeljy_print_list-1.0.1
hard linking setup.py -> michaeljy_print_list-1.0.1
creating 'dist\michaeljy_print_list-1.0.1.zip' and adding 'michaeljy_print_list-
1.0.1' to it
adding 'michaeljy_print_list-1.0.1\michaeljy_print_list.py'
adding 'michaeljy_print_list-1.0.1\PKG-INFO'
adding 'michaeljy_print_list-1.0.1\setup.py'
removing 'michaeljy_print_list-1.0.1' (and everything under it)
running upload
Submitting dist\michaeljy_print_list-1.0.1.zip to https://pypi.python.org/pypi
Server response (200): OK
F:\Improve\Python\pypl>
在pypl上面就可以看到你的模块了。
使用可选参数
相信很多时候,函数的参数都不必须是必填的。
通过为参数设置默认值,将参数变为可选。
效果见上图。
总结
三重引号字符串(""")添加注释
pypl就是Python package index的缩写
Python的主命名空间名称__main__
import可以导入自定义模块
BIF是build-in-functions的缩写