Python入门学习笔记————16(模块,包,命名空间)
2019-01-03 11:29
447 查看
模块
- 一个模块就是一个包含Python代码的文件,后缀名为.py。
- 模块 程序太大,编写维护非常不方便,需要拆分
- 模块可以增加模块的复用
- 当做命名空间使用,避免命名冲突
- 模块就是普通文件,任何代码都可以直接写
- 直接导入
[code] import module_name module_name.function_name module_name.class_name
- 导入模块所有内容
- 可以有效地模块代码被导入时被动执行问题
In [7]:
#下列代码假设保存文件名为p01.py
#一个人学生类
class Student():
def __init__(self,name='Noname',age=18):
self.name = name
self.age = age
def say(self):
print('My name is {0},I am {1}'.forrmat(self.name,self.age))
def sayHello():
print('Welcome to Wuzhi !')
print('我是模块')
我是模块
In [13]:
#当模块引用时
'''
import p01 #文件名
stu = p01.Student('goudan',18)
stu.say()
p01.sayHello()
'''
#上述模块引用代码与下述代码意义一致
class Student():
def __init__(self,name='Noname',age=18):
self.name = name
self.age = age
def say(self):
print('My name is {0},I am {1}'.format(self.name,self.age))
def sayHello():
print('Welcome to Wuzhi !')
if __name__ == '__main__':#使得下列输出语句在模块被导入时不运行,模块自身运行时运行
print('我是模块')
stu =Student('goudan',18)
stu.say()
sayHello()
我是模块My name is goudan,I am 18 Welcome to Wuzhi !
In [12]:
'''
#当模块文件命名为数字开头时,模块的引用需要借助importlib包
import importlib
#相当于导入一个叫01的模块,并把他赋值给haha
haha = importlib.import_module('01')
# 在之后引用函数等时 将 01 变为 haha 即可
stu = haha.Student()
stu.say()
'''
Out[12]:
"\n#当模块文件命名为数字开头时,模块的引用需要借助importlib包\nimport importlib\n#相当于导入一个叫01的模块,并把他赋值给haha\nhaha = importlib.import_module('01')\n# 在之后引用函数等时 将 01 变为 haha 即可\nstu = haha.Student()\nstu.say()\n"
模块的搜索路径和存储
- 搜索路径 加载模块时,系统寻找模块的路径
[code] import sys sys.path 属性可以获取路径列表
[code] sys.path.append(dir)
- 1.搜索内存上已经加载好的模块
包
- 包是一种组织管理代码的方式,包里面存放的是模块
- 用于将模块包含在一起的文件夹就是包
- 自定义包结构
[code] |---包 |---|---__init__.py 包的标志文件 |---|---模块1 |---|---模块2 |---|---子包(子文件) |---|---|---__init__.py |---|---|---子包模块1 |---|---|---子包模块2
- 包的导入操作 import package_name 直接导入一个包,可以使用init.py中的内容
- 使用方法是:
[code] package_name:func_name package_name.class_name.func_name()
- import package_name as 别名 具体用法跟作用方式,跟上述简单导入一致
- 注意的是此种方法是默认对init.py内容导入
- 导入包中某一具体的模块
[code] package.module.func_name package.module.class.fun() package.module.class.var
- from package import module1,module2,...
[code] from pkg01 import p01p01.sayHello()
[code] func_name() class_name.func_name() class_name.var
- 导入包中指定模块的所有内容
[code] func_name() class_name.func_name()
- import 完整的包或者模块的路径
- 在使用from package import 的时候, 可以导入的内容
命名空间
- 用于区分不同位置不同功能但是相同名称的函数或者变量的一个特定前缀
- 作用是防止命名冲突
[code] setName() Student.setName() Dog.setName()
相关文章推荐
- python学习笔记——模块和命名空间
- Python学习笔记:作用域和命名空间
- Python入门学习笔记之Python模块
- python学习笔记16-各种模块和开放工具收集整理
- C 学习笔记16—— net中System Security Cryptography 命名空间
- PHP入门学习笔记之—— PHP 命名空间
- --python学习笔记--可以生成命名空间的对象
- Python学习笔记(三):Time、函数、模块、文件I/O、异常处理(快速入门篇)
- Python入门记——模块的命名空间
- Visual C# 技术内幕学习笔记 第二章 C#基础(4) 可访问性、命名空间
- Python 学习入门(16)—— zipfile
- 用Python和Pygame写游戏-从入门到精通(1)学习笔记
- Python 学习笔记 (8)—— sys模块
- 重载与命名空间(学习笔记)
- XML学习笔记(一):XML中的命名空间
- Python学习笔记4-pexpect模块,pxssh
- Python学习入门笔记-基础知识
- 学习笔记----命名空间
- PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
- python 学习笔记 14 -- 常用的时间模块之datetime