特别强调
首先一句话:
import 进来了简单来说就是跟在本程序里写的一样(跟在自己家一样)
from 文件夹📁 import 某个模块📃
from 文件夹📁 import *所有东东📑
这里要注意需要使用__ all __才可完全引入
Import讲解
格式 | 代码 |
---|---|
py全引入(一切皆可直接用) | from dictionarySeg.hi import * |
py名引入(需要 文件名.内容) | from dictionarySeg import hi |
py全引入 - 一切皆可直接用
hi.py(模块)
print('\nhi! 我是直出')
p = print('\nhi! 我来自P变量输出')
def out():
back = '\nhi! 我是负责返回的小可爱'
print('\nhi! 我来自out方法')
return back
t1.py
from dictionarySeg.hi import *
p # 变量
print('\n-------')
out() # 方法
print('\n-------')
back = out() # 返回值
print('\n-------')
print(back)
结果展示
💡
需要注意
import 让它提供某个变量或给出某个方法时,它会完整跑hi.py这个模块,那自然这个模块原有的print输出也会被输出。
py名引入
1 - 提供某个变量或给出某个方法时 需要 文件名.内容
hi.py(模块)
print('\nhi! 我是直出')
p = print('\nhi! 我来自P变量输出')
def out():
back = '\nhi! 我是负责返回的小可爱'
print('\nhi! 我来自out方法')
return back
t1.py
from dictionarySeg import hi
hi.p # 变量
print('\n-------')
hi.out() # 方法
print('\n-------')
back = hi.out() # 返回值
print('\n-------')
print(back)
💡
1 需要注意
import * 时可以直接用里面的东西,简单来说就是跟在本程序里写的一样(跟在自己家一样)
import 模块名 时 需要 模块名.变量/方法才可使用
💡
2 需要注意
import 让它提供某个变量或给出某个方法时,它会完整跑hi.py这个模块,那自然这个模块原有的print输出也会被输出。
2 - import模块名 可命令程序 跑这个模块
hi.py(模块)
print('\nhi! 我是直出')
# p = print('\nhi! 我来自P变量输出')
#
#
# def out():
#
# back = '\nhi! 我是负责返回的小可爱'
# print('\nhi! 我来自out方法')
#
# return back
t1.py
from dictionarySeg import hi
hi
# hi.p # 变量
#
# print('\n-------')
#
# hi.out() # 方法
#
# print('\n-------')
#
# back = hi.out() # 返回值
#
# print('\n-------')
#
# print(back)
💡
需要注意
import模块名 可命令程序 跑这个模块
import * 其实也可以办到,你需要在__ init __.py 中 写入 __ all __
举个例子
Directory与Python package的区别
python作为一个相对而言轻量级的,易用的脚本语言,我们可将Python代码分为:
- 主程序
- 组织模块
程序的目的是为了运行,而模块的目的是为了其他程序进行引用。
- Dictionary
Dictionary在pycharm中就是一个文件夹,放置资源文件。
- Python package
Python package 文件夹与Dictionary不同之处在于其会自动创建__init.py__文件。
简单的说,python package就是一个目录,其中包括一组模块和一个__init.py__文件。
__init.py__文件
该文件与Python的import机制有关,这关乎到你的哪些.py文件是对外可访问的。
__ init __ .py可以为空,当其为空时,from Image import * 将 Image 包下所有的模块都进行引用,如果想要控制引用的模块,则可以自行定义 __ all __
用 __ all __ 暴露接口
有些时候,如果一个包下有很多模块,在调用import如此多模块是很费事,且不优雅的。
此时可以通过修改__init__.py来完成该任务。
在__init__.py中定义特殊变量__all__ ,将 要包含的模块复制给该变量。
例如在Image/ __ init __.py中定义 __ all __=[‘tiff’,’bmp’,’jpg’]。
这里的all 对应的就是 from … import * 中的*代指的模块,此时在引用方使用如下语
如果一个模块需要暴露的接口改动频繁,all 可以这样定义:
__all__ = [
"foo",
"bar",
"egg",
]