#coding:utf-8
#注释代码!
#添加两个注释,一个描述模块,一个描述函数 '''这是nester.py模块,提供了一个名为print_lol()的函数,
这个函数的作用是打印列表,其中可能包含
(也可能不包含)嵌套列表。'''
def print_lol(the_list):
'''这个函数取一个位置参数,名为the_list,这可以是任何python列表
(也可以是包含嵌套列表的列表),所指定列表的每个数据项
回(递归地)输出到屏幕上,每个数据项各占一行。'''
for item in the_list:
if isinstance(item,list):
print_lol(item)
else:
print item
print_lol(movies)

模块就是一个包含python代码的文本文件,以.py结尾。

#试着使用
movies = movies = ['The Holy Grail', 1975, 'The Life of Brain', 1979,
["Graham Chapman",["Michael Palin","John Cleese","Terry Gilliam","Eric Idle"]]]
print_lol(movies)

【准备发布】

1.为模块创建一个文件夹nester

2.在文件夹中创造一个setup.py文件

#coding:utf-8
from distutils.core import setup
#从python发布工具中导入setup函数 #这些是setup函数的参数
setup(
name ='nester',
version ='1.0.0',
py_moudles =['nester'],
author ='HETAO',
author_email ='13111300003@163.com',
url ='https://home.cnblogs.com/u/Archimedes/',
description ='A simple printer of nested lists',
)

构建发布

1.构建一个发布文件

2.将发布安装到python本地副本中

这时nester文件夹中会出现两个新的文件夹,他们是由发布工具创建的

【导入模块并使用】

Python 2.7 (r27:82525, Jul 4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import nester
>>>

可以看到导入成功了,接下来试着使用它

Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import nester
>>> movies = movies = ['The Holy Grail', 1975, 'The Life of Brain', 1979,
["Graham Chapman",["Michael Palin","John Cleese","Terry Gilliam","Eric Idle"]]] >>> print_lol(movies) Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
print_lol(movies)
NameError: name 'print_lol' is not defined  #python没有找到你的函数!!!
>>>

这是我们就要认识到一个东西叫做【模块的命名空间】

命名空间i就像是姓氏,正确的使用方式是nester.print_lo(movies)

>>> nester.print_lol(movies)
The Holy Grail
1975
The Life of Brain
1979
Graham Chapman
Michael Palin
John Cleese
Terry Gilliam
Eric Idle
>>>

这样就好了

注:如果使用from nester import print_lol 就可以把指定函数增加到当前命名空间,也就是说不用使用nester这个命名空间限定了。

但这种做法并不被提倡,因为在这时候要注意如果当前命名空间中已经定义了一个同名的函数print_lol,那么之前这个函数就会被引入的函数所覆盖而带来麻烦。

【注册PYPI网站】

要在PYPI上发布,就要先注册一个账号(https://pypi.python.org)

截止 【【P49】】

【head first python】2.共享你的代码 函数模块的更多相关文章

  1. python小数据池,代码块知识

    一.什么是代码块? 根据官网提示我们可以获知: A Python program is constructed from code blocks. A block is a piece of Pyth ...

  2. Python_Day2_共享你的代码

    一.编写简单的函数,保存一下. # coding=utf-8 """ 这是“nester.py”模块,提供了一个名为print_lol的函数,这个函数的作用是打印列表,其 ...

  3. 使用Python编程语言连接MySQL数据库代码

    使用Python编程语言连接MySQL数据库代码,跟大家分享一下: 前几天我用python操作了mysql的数据库,发现非常的有趣,而且python操作mysql的方法非常的简单和快速,所以我把代码分 ...

  4. Python入门之ATM+购物车代码版思维导图

    该项目结合了ATM模版和购物车需求,整个思维导图用Python代码实现,使用思维导图可以清晰明了的看清整个框架: 过程中,用到了Python的知识有Python常用模块,Python常用内置包,log ...

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

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

  6. Python:如何用一行代码获取上个月是几月

    现在转一篇志军100发于公众号 Python之禅的文章: Python:如何用一行代码获取上个月是几月 抱歉我用了个有点标题党的标题,因为担心你错过了本文,但内容绝对干货,本文介绍的关于Python时 ...

  7. python集合使用范例的代码

    在代码过程中中,将代码过程中比较好的代码段珍藏起来,如下的代码是关于python集合使用范例的代码,希望能对大伙有用. # sets are unordered collections of uniq ...

  8. Python有趣时刻,这些代码让你大呼"卧槽,怎么会这样"

    分享一个实用问题,用python读取Excel并保存字典,如何做? 下面是该同学问题截图和代码 image.png 代码截图是下面这样的 image.png 不知道大家第一眼看了这个代码,什么感受?我 ...

  9. Python小数据池,代码块

    今日内容一些小的干货 一. id is == 二. 代码块 三. 小数据池 四. 总结 python小数据池,代码块的最详细.深入剖析   一. id is == 二. 代码块 三. 小数据池 四. ...

随机推荐

  1. MySQL访问控制实现原理

    MySQL访问控制实现原理 MySQL 访问控制实际上由两个功能模块共同组成,从第一篇的第二章架构组成中可以看到,一个是负责 “看守 MySQL 大门”的用户管理模块,另一个就是负责监控来访者每一个动 ...

  2. C/C++中的volatile究竟是什么鬼?

    将变量或对象声明为volatile类型后,每次对变量的访问都是从其内存直接读取.那什么时候对变量的访问不是从其内存读取的呢?一种常见的情况就是编译器开启了优化选项,这时候对变量的访问有可能就是从寄存器 ...

  3. jq-animate

    jq-animate: <!doctype html> <html> <head> <meta charset="utf-8"> & ...

  4. 使用 sitemesh/decorator装饰器装饰jsp页面(原理及详细配置)

    摘要:首先这个Decorator解释一下这个单词:“装饰器”,我觉得其实可以这样理解,他就像我们用到的Frame,他把每个页面共有的东西提炼了出来,也可能我们也会用各种各样的include标签,将我们 ...

  5. ng-cordova(插件库)

    ng-cordova 环境配置 1.执行以下命令 bower install ngCordova 2.引用文件(在引用cordova.js之前引用) <script src="lib/ ...

  6. ReactiveCocoa源码解析(五) SignalProtocol的observe()、Map、Filter延展实现

    上篇博客我们对Signal的基本实现以及Signal的面向协议扩展进行了介绍, 详细内容请移步于<Signal中的静态属性静态方法以及面向协议扩展>.并且聊了Signal的所有的g功能扩展 ...

  7. JavaScript 的注释和快捷键

    添加必要的注释,对一个有责任心.有道德模范的前端必须具备的好习惯, 可以大大提高代码的可维护性.可读性. java代码注释快捷键:ctrl+shift+/首先熟悉一下html.css.js的注释的写法 ...

  8. JVM入门——运行时数据区

    这张图我相信基本上对JVM有点接触的都应该很熟悉,可以说这是JVM入门的第一课.其中的“堆”和“虚拟机栈(栈)”更是耳熟能详.下面将围绕这张图对JVM的运行时数据区做一个简单介绍. 程序计数器(Pro ...

  9. Java8 in action(1) 通过行为参数化传递代码--lambda代替策略模式

    [TOC] 猪脚:以下内容参考<Java 8 in Action> 需求 果农需要筛选苹果,可能想要绿色的,也可能想要红色的,可能想要大苹果(>150g),也可能需要红的大苹果.基于 ...

  10. AndroidDemo - FloatWindowDemo

    安卓悬浮窗Demo 在桌面上创建一个小的悬浮窗.点击小悬浮窗后会弹出一个大的窗口.大窗口上有2个按键,分别为返回与关闭.点击大窗口外的部分能返回小窗口. 小窗口可以自由拖动.小窗口上显示的是当前内存使 ...