Python中的模块用法

模块

什么是模块:

   对于一个复杂的功能,为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。
    在Python中,一个.py文件就称之为一个模块(Module)。即一个文件被看作一个独立的模块,一个模块也可以被看做是一个文件
    使用模块可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。

模块分为三种:

1.内置模块:如sys, os, subprocess, time, json 等等
2.自定义模块:自定义模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。
3.开源模块:公开的第三方模块, 如 https://pypi.python.org/pypi 。可以使用pip install 安装,类似于yum 安装软件

一.导入模块

import 用来导入模块,即在当前python源文件中可以使用导入的模块中的所有东西

 test01:
    title = 123
    def demo():
      print 'hello world!'
    class Cat():
      pass
 test02:
    title = 123
    def demo():
      print 'hello world!'
    class Dog():
      pass

import test01  # 导入test01模块
import test02  # 导入test02模块

dog = test02.Dog()  # 调用模块test02中的Dog类创建对象
print dog
cat = test01.Cat()
print cat

print test01.title  # 调用模块test01中的全局变量title
print test02.title
test01.demo()       # 调用test01中的函数demo()
test02.demo()

二.重命名导入的模块

在当前文件中可以使用新的名字来调用模块中的东西
import 模块名 as 新名 ——————指定模块的别名

import test01 as CatModule  # 给test01模块重命名为Catmodule
import test02 as DogModule  # 给test02模块重命名为Dogmodule

print CatModule.title       # 用新的模块名调用全局变量title
print DogModule.title
dog = DogModule.Dog()       # 用新的模块名调用类Dog
print dog
cat = CatModule.Cat()
print cat
CatModule.demo()             # 用新的模块名调用函数demo()
DogModule.demo()

三.选择性导入

1.from test01 import Cat test01是模块名,Cat是模块中的东西,如果想要在新的文件中直接使用Cat,则可以使用这种方式,直接导入需要的东西。
2.如果两个模块中含有同名的东西,则有效的是后来导入的模块,因为后边导入的覆盖了前边导入的

   from test01 import demo  # 只导入test01中的demo()函数
   from test01 import Cat   # 只导入test01中的Cat类
   from test02 import demo  # 导入test02中的demo函数,与已经导入的test01中的demo重名,后者有效
   demo()
   cat = Cat()
   print cat

四.寻找模块的过程

python的解释器在导入模块的时候,会:
1.搜索当前目录指定的模块文件,如果有就直接导入
2.如果没有,再搜索系统目录
注意:在开发时,给文件起名,不要和系统模块文件重名

五.name的用法

name的用法

__name__属性可以做到,测试模块的代码只在测试情况下被运行
__name__是python的一个内置属性,记录一个字符串
(1)如果是被其他文件导入时,输出__name__就是导入的模块名
(2)如果是当前执行的程序,__name__输出就是就是__main__
# 全局变量,函数,类,直接可以执行的代码不是向外界提供的工具
def demo():
    print 'hello world!'
# 如果直接在模块中输入__name__,得到的是__main__
if __name__ == '__main__':   # 判断是在源文件中还是在导入模块中
    print __name__
    demo()
    print 'have a nice day!'
在另外一个源文件中导入该.py源文件,直接运行不会输出结果

猜你喜欢

转载自blog.csdn.net/jay_youth/article/details/81199726
今日推荐