14-模块

2023-04-11  本文已影响0人  飘摇的水草
简介
模块的制作

下面是文件 my_module 里的代码

num = 1

def func():
    print "my_module func"

class Dog(object):

    def show_info(self):
        print "module 1 de show_info"

在另外一个模块里要想使用模块 my_module 里的代码则如下所示:

import  my_module
# 调用 my_module 模块中的变量num
print(my_module.num)
# 调用 my_module 模块中的func 函数
my_module.func()
# 调用 my_module 模块中的类创建对象
dog = my_module.Dog()
dog.show_info()

这种方式有个缺陷,当导入多个模块的时候如果存在同名的方法或变量会出现覆盖的情况
还是使用 my_module 里面的代码,方法二使用如下所示:

from  my_module import  func
from  my_module import  num

func()
print (num)

这种使用和方法二一致,直接使用即可,但这种模块不建议使用

from  my_module import  func
from  my_module import  num

func()
print (num)

起别名

可以使用 as 修改原来模块和函数的名字,但对原来的名字进行重新命名以后,老的名字将不能再使用

方法一将被改成下面这个样子:

import  my_module as mm1

mm1.func()
print(mm1.num)
dog = mm1.Dog()
dog.show_info()

方法二将被改成下面的样子:

from  my_module import  func as my_func
from  my_module import  num  as my_num

my_func()
print (my_num)

模块中的all 变量

all 变量可以在每个代码文件中(模块中)定义,类型是元组,列表,作用是:影响 from 模块名 import * 导入行为

__all__ = ['num','func']

num = 1
def func():
    print "my_module func"

如上面的代码所示,在其他代码里只能使用 numfunc 这两个变量,其他的不能使用

模块的搜索顺序

当前顺序 - 系统目录 - 程序报错

包:功能相近或者相似的模块放在一个目录中,并在目录中定义一个 __init__.py 文件,这个目录就是包,在 Pycharm 中下面的操作即是创建一个包

创建包.png

包的导入也有三个方法:

  1. 方法一 import 包名.模块名

包中的模块的代码如下所示:

num = 100

def func():
    print "my_module1里的func函数"

使用方式如下所示:

import  FirstPackage.my_module1

print FirstPackage.my_module1.num
FirstPackage.my_module1.func()
  1. 方法二: from 包名.模块名 import 功能名

代码和使用方式如下所示:

from FirstPackage.my_module2 import func

func()
  1. 方法三:from 包名 import *

这种方式不太常用,因为这种方式导入的内容太多

上一篇 下一篇

猜你喜欢

热点阅读