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. **************************************************

python导入模块--案例的更多相关文章

  1. Python导入模块的三种形式

    Python导入模块的3中方式: 1.import module_name 这样在程序里就可以通过module_name.metnod_name()的方式访问模块里的函数了 Example: > ...

  2. python 导入模块 import 理解

    --python 导入模块 import 理解 -----------------------------------2014/03/18 python 导入一个模块的过程要求有一个叫做“路径搜索”的 ...

  3. python导入模块时的执行顺序

    当python导入模块,执行import语句时,到底进行了什么操作?按照python的文档,她执行了如下的操作: 第一步,创建一个新的module对象(它可能包含多个module) 第二步,把这个mo ...

  4. selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点

    在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...

  5. python 导入模块与使用

    学习python之前一定要了解导入模块是怎么导入的,至少在看代码时不知道能很快的了解别人写的东西是哪里来. Python默认仅安装部分基础或核心模块,启动时也仅加载了基础模块,在需要是再显式的加载其他 ...

  6. 第10.3节 Python导入模块能否取消导入?

    模块导入后,是否可以取消导入?实际上当模块导入后,是无法逆向还原到导入前的状态的,但是可以利用"del 模块名"进行导入模块的删除,此时的删除只是删除了导入模块对应的模块变量名,删 ...

  7. python导入模块

    1.模块的定义: 模块定义:用来逻辑上组织python代码(变量.函数.类.逻辑:目的是:实现一个功能),本质就是.py结尾的python文件. 补充: 包的定义:用来从逻辑组织模块的,本质就是一个目 ...

  8. python 导入模块的坑。为什么整个项目能运行,单独运行某个文件模块就报错?多层目录不同文件夹怎么导入?

    一些文章介绍了python不同目录怎么导入问题,但py文件运行起点却从来没有文章说过!这是相当重要的!! 这个连接是网上99%的所讲的导入 https://www.cnblogs.com/luoye0 ...

  9. python导入模块总结与分析

    定义1:python中什么是模块? 答:模块就是一个.py文件,每一个以py作为后缀的文件,都是一个模块. 定义2:Python中什么是包? 答:包是一类特殊的模块,他能包含其他模块,为了更好的组织模 ...

随机推荐

  1. 《SystemVerilog验证-测试平台编写指南》学习 - 第3章 过程语句和子程序

    <SystemVerilog验证-测试平台编写指南>学习 - 第3章 过程语句和子程序 3.1 过程语句 3.2 任务.函数以及void函数 3.3 任务和函数概述 3.4 子程序参数 3 ...

  2. Docker——基本使用及常用命令

    Docker 是一个开源的应用容器引擎,而一个容器其实是一个虚拟化的独立的环境,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. ...

  3. Centos 7 进入单用户模式更改root密码方法

    进入单用户模式的方法 方法一: 1.开机进入grub菜单的时候上下选择,按e编辑. 到linux16所在行的最后面. ro 只读文件系统 biosdevname=0 戴尔的服务器需要设置 net.if ...

  4. easyUI中datagrid展示对象下属性以及显示多个子属性(Day_37)

    easyUI中datagrid展示对象下属性以及显示多个子属性 显示对象单个属性值 添加formatter属性 <th field="decidedzone" width=& ...

  5. Java核心技术卷阅读随笔--第4章【对象与类】

    对 象 与 类 4.1 面向对象程序设计概述 面向对象程序设计(简称 OOP) 是当今主流的程序设计范型, 它已经取代了 20 世纪 70 年代的" 结构化" 过程化程序设计开发技 ...

  6. Hadoop MapReduce 一文详解MapReduce及工作机制

    @ 目录 前言-MR概述 1.Hadoop MapReduce设计思想及优缺点 设计思想 优点: 缺点: 2. Hadoop MapReduce核心思想 3.MapReduce工作机制 剖析MapRe ...

  7. 如何使用TVM Pass红外线

    如何使用TVM Pass红外线 随着Relay / tir中优化遍数的增加,执行并手动维护其依赖关系变得很棘手.引入了一个基础结构来管理优化过程,将其应用于TVM堆栈中IR的不同层. Relay / ...

  8. Pytorch和CNN图像分类

    Pytorch和CNN图像分类 PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序.它主要由Facebookd的人工智能小组开发,不仅能够 实现强大的GPU加速 ...

  9. 功率半导体碳化硅(SiC)技术

    功率半导体碳化硅(SiC)技术 Silicon Carbide Adoption Enters Next Phase 碳化硅(SiC)技术的需求继续增长,这种技术可以最大限度地提高当今电力系统的效率, ...

  10. CEVA引入新的可配置传感器集线器DSP架构

    CEVA引入新的可配置传感器集线器DSP架构 CEVA introduces new configurable sensor hub DSP architecture 在一个将多个传感器设计成几乎所有 ...