zoukankan      html  css  js  c++  java
  • python导入模块--案例

    1 导入模块

    1.1 问题

    本案例要求先编写一个star模块,主要要求如下:

    • 建立工作目录 ~/bin/
    • 创建模块文件 ~/bin/star.py
    • 模块中创建pstar函数,实现打印50个星号的功能

    然后练习导入模块,调用模块中的函数:

    • 在交互解释器中导入模块
    • 调用模块的函数

    1.2 方案

    使用vim当作文本编辑器编写python脚本,使用RHEL6系统中自带的python解释器加载模块。

    注意,模块及函数在后续课程中有详细介绍,这里只是因为经常要用到导入模块,所以需要大致了解一下。

    模块支持从逻辑上组织python代码。当代码量变得相当大的时候,最好把代码分成一些有组织的代码段,前提是保证它们的彼此交互。

    这些代码段是共享的,所以python允许调入一个模块,允许使用其他模块的属性来利用之前的工作成果,实现代码重用。这个把其他模块中属性附加到你的模块中的操作叫做导入(import)。

    给定一个模块名之后,只可能有一个模块被导入到python解释器中,所以在不同模块间不会出现名称交叉现象;每个模块都定义了它自己的唯一的名称空间,访问一个模块的属性可以使用句点表示法,比访问star模块中的pstar函数的写法为:star.pstar()。

    1.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:创建目录结构

    Linux在执行命令时,它会到PATH环境变量定义的路径中去查找,如果查到则执行,如果查不到则提示命令找不到。

    为了使得编写的脚本在任意位置可以直接执行,并支持按TAB键补齐,最好将命令放到PATH环境变量定义的路径中。

    在Linux系统中,每个用户的家目录下的bin目录,默认在PATH环境变量中,但是系统默认并没有创建该目录。

    1. [root@py01 ~]# echo $PATH
    2. /usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin

    2)根据PATH变量内容创建bin目录

     
    1. [root@py01 ~]# mkdir /root/bin

    步骤二:创建模块文件

    1)创建模块文件

    python的模块名就是脚本文件名去掉.py的扩展名,所以star模块的文件名就是star.py。

    在创建文件时,不要使用python已有的模块名。因为在import模块时,如果自己创建的模块文件和python自带的模块重名,那么,用户自己创建的模块将被导入,用户也就无法使用python自身的模块了。

    判断python是否拥有某个模块,最简单的办法就是,进入到python交互解释器中,然后执行import命令,如果提示ImportError则表示python默认没有该模块。

     
    1. [root@py01 ~]# cd bin
    2. [root@py01 ~]# vim star.py

    2)编写pstar函数

    像shell本一样,python脚本文件的第一行也是解释器。

    在python中,使用def定义函数,def后面紧跟函数名,函数名后面是一对圆括号,圆括号包含可选的参数。

    需要注意的是,()并不是函数名的一部分,另外最后不要丢掉冒号。在python中,如果一个关键字后面有子语句块,那么该关键字的行尾都需要加冒号。

    函数体部分(代码组)必须缩进,一般缩进4个空格,而且所有的子语句必须缩进相同的空白。

    函数定义只是说有这样的功能,并不执行。所以该程序文件如果直接以脚本的方式执行,那么它不会产生任何输出。

     
    1. #!/usr/bin/env python
    2. def pstar():
    3. print '*' * 50

    步骤三:导入模块并测试

    在这里需要注意的是,需要在模块文件所在的目录下打开交互解释器。因为python在导入模块时会在固定的几个位置去搜索模块,如果找到则导入,否则将出错。当前的工作目录也是python在搜索模块时会查找的路径。

     
    1. [root@py01 bin]# python
    2. Python 2.6.6 (r266:84292, Oct 12 2012, 14:23:48)
    3. [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
    4. Type "help", "copyright", "credits" or "license" for more information.
    5. >>> import star

    解释器需要知识执行的是哪个模块中的函数,所以写法应该是:“模块.函数”。

    注意,函数名后面的圆括号不要丢掉,python调用函数使用圆括号,表示执行该函数的意思。如果没有圆括号,只是引用,不调用,也就是不会执行该函数。

     
    1. >>> star.pstar()
    2. **************************************************
  • 相关阅读:
    Linux and the Unix Philosophy (Linux/Unix设计思想)
    rails获取json内容
    单元测试调试之传参篇
    部署注意细节之正式测试链接地址不同
    ajax页面排序的序号问题
    【51Nod1239】欧拉函数之和-杜教筛+哈希表
    【51Nod1239】欧拉函数之和-杜教筛+哈希表
    【51Nod1244】莫比乌斯函数之和-杜教筛+哈希表
    【51Nod1244】莫比乌斯函数之和-杜教筛+哈希表
    【BZOJ3112】防守战线(ZJOI2013)-单纯形法+对偶理论
  • 原文地址:https://www.cnblogs.com/fanfanfanlichun/p/8723450.html
Copyright © 2011-2022 走看看