网站首页 > 教程分享 正文
python中可以import的有module和package:
1、module 模块
通常模块为一个文件,直接使用 import 文件名 就可以导入。可以作为module的文件类型有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。
2、package 包
通常包总是一个目录,包目录下需要有一个名为 __init__.py的文件。可以使用import导入包,或者from + import来导入包中的部分模块。包中可以有模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。
3、导入模块的原理
假设有一个文件 people.py,
# file : people.py a = 37 # 一个变量 def name: # 一个函数 print("I'm Tom") class Speak: # 一个类 def wisper(self): print("I'm wisper speak") b = speak() # 创建一个实例
3.1 我们可以使用import people 把people.py作为模块导入。python 解释器在执行到这一行时会做如下事情:
1)、为people.py中定义的对象创建一个命名空间,通过这个命名空间可以方位代码中的函数和变量
2)、在命名空间中执行代码。即导入的过程也是执行的过程。
3)、创建一个名为源代码文件的对象,该对象引用模块的名字空间,这样就可以通过这个对象访问模块中的函数及变量。如:
import people # 导入并运行模块 people print people.a # 访问模块 people 的属性 people.name() c = people.Speak()
3.2 我们还可以使用 from people import Speak的方式导入,from语句不创建一个到模块名字空间的引用对象,而是把被导入模块的一个或多个对象直接放入当前的名字空间。
from socket import gethostname # 将gethostname放如当前名字空间 print gethostname() # 直接调用 socket.gethostname() # 引发异常NameError: socket
3.3 用逗号分割模块名称就可以同时导入多个模块:
import socket, os, regex
3.4 模块导入时可以使用 as 关键字来改变模块的引用对象名字:
import os as system import socket as net, thread as threads system.chdir("..") net.gethostname()
3.5 可以在模块中定义__all__,使用from module import * 语句导入__all__列表中存在的对象
from语句支持使用星号(*)代表模块中除下划线开头的所有对象:
from socket import gethostname, socket from socket import * # 载入所有对象到当前名字空间 # module: foo.py __all__ = [ 'bar', 'spam' ] # 定义使用 `*` 可以导入的对象
3.6 内置方法
导入模块时,解释器会搜索sys.path列表,sys.path包含了module的查找路径;
sys.modules包含了当前所load的所有的modules的dict(其中包含了builtin的modules)
每个模块都拥有 __name__ 属性,它是一个内容为模块名字的字符串。
import sys print(sys.path) print(sys.modules)
猜你喜欢
- 2024-09-09 彻底告别python第三方包import问题!只需要7行代码(码住)
- 2024-09-09 python每日一练之如何copy(python copy)
- 2024-09-09 你知道import Vue from 'vue' 吗?
- 2024-09-09 spring中的@import/@ImportResource注解
- 2024-09-09 Spring中@Import注解详解(spring import注解原理)
- 2024-09-09 python首行代码import *,from * import * 解析
- 2024-09-09 Import注解的理解(java @import注解)
- 2024-09-09 link与@import的区别和分别对应的例子
- 2024-09-09 ES6模块化一缕(export、import)(es6模块化引入)
- 2024-09-09 写Python时不用import,你会遭遇什么
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)