python type help copyright_Python关于import的实验(8)__init__.py文件内部代码的执行以及内部的导入和内部的变量...
Python官方文档参考链接: 常规包
Python 定义了两种类型的包,常规包 和 命名空间包。 常规包是传统的包类型,它们在 Python 3.2 及之前就已存在。 常规包通常以一个包含 __init__.py 文件的目录形式实现。 当一个常规包被导入时,这个 __init__.py 文件会隐式地被执行,它所定义的对象会被绑定到该包命名空间中的名称。__init__.py 文件可以包含与任何其他模块中所包含的 Python 代码相似的代码,Python 将在模块被导入时为其添加额外的属性。 例如,以下文件系统布局定义了一个最高层级的 parent 包和三个子包. 导入 parent.one 将隐式地执行 parent/__init__.py 和 parent/one/__init__.py。 后续导入 parent.two 或 parent.three 则将分别执行 parent/two/__init__.py 和 parent/three/__init__.py。
parent\__init__.py:
print("导入parent包...内部已经导入random库")
str_parent = r"我是parent\__init__.py里的字符串..."
import random
parent\two\__init__.py:
print("导入parent/two包...内部已经导入time库")
str_parent_two = r"我是parent\two\__init__.py里的字符串..."
import time
parent\three\__init__.py:
print("导入parent/three包...内部已经导入jieba库")
str_parent_three = r"我是parent\three\__init__.py里的字符串..."
import jieba
parent\one\__init__.py:
print("导入parent/one包...内部已经导入hashlib库")
str_parent_one = r"我是parent\one\__init__.py里的字符串..."
import hashlib
cmd控制台下的操作:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS C:\Users\chenxuqi\Desktop\新建文件夹\测试包> python
Type "help", "copyright", "credits" or "license" for more information.
>>> import parent
导入parent包...内部已经导入random库
>>> parent.str_parent
'我是parent\\__init__.py里的字符串...'
>>> random
Traceback (most recent call last):
File "", line 1, in
NameError: name 'random' is not defined
>>> parent.random
>>> parent.random.randint(2,7)
7
>>> parent.random.randint(2,7)
7
>>> parent.random.randint(2,7)
7
>>> parent.random.randint(2,7)
7
>>> parent.random.randint(2,7)
7
>>> parent.random.randint(2,9)
5
>>> parent.random.randint(2,9)
2
>>> parent.random.randint(2,9)
3
>>> parent.random.randint(2,9)
8
>>> parent.random.randint(2,7)
5
>>> parent.random.randint(2,7)
2
>>> parent.random.randint(2,7)
5
>>> parent.random.randint(2,7)
6
>>> import parent.two
导入parent/two包...内部已经导入time库
>>> parent.two.str_parent_two
'我是parent\\two\\__init__.py里的字符串...'
>>> parent.two.time
>>> parent.two.time.time()
1605883430.647523
>>> time
Traceback (most recent call last):
File "", line 1, in
NameError: name 'time' is not defined
>>> from parent.two import time
>>> time
>>> now = time.time()
>>> print(time.ctime(now))
Fri Nov 20 22:46:45 2020
>>> import parent.three
导入parent/three包...内部已经导入jieba库
>>> import parent.three as three
>>> three.str_parent_three
'我是parent\\three\\__init__.py里的字符串...'
>>> three.jieba
>>> jieba.lcut("全国计算机等级考试Python科目")
Traceback (most recent call last):
File "", line 1, in
NameError: name 'jieba' is not defined
>>> three.jieba.lcut("全国计算机等级考试Python科目")
Building prefix dict from the default dictionary ...
Dumping model to file cache C:\Users\chenxuqi\AppData\Local\Temp\jieba.cache
Loading model cost 0.857 seconds.
Prefix dict has been built successfully.
['全国', '计算机', '等级', '考试', 'Python', '科目']
>>> from parent.one import str_parent_one
导入parent/one包...内部已经导入hashlib库
>>> str_parent_one
'我是parent\\one\\__init__.py里的字符串...'
>>> from parent.one import hashlib as hsb
>>> hsb
>>> hsb.md5("尹增宝爱听古风音乐".encode("utf8")).hexdigest()
'075649873523f1e621d4b33f69b60ebb'
>>>
>>> hsb.md5("林祖泉".encode("utf8")).hexdigest()
'738974139c96e7c1b174e1f886ffb641'
>>>
>>>
导入一个包之后,无法访问其子包,除非其子包有__init__.py文件,而且该文件已经被执行过一次,那么该包就会有其该子包的属性,否则会报错,比如:AttributeError: module 'parent' has no attribute 'three'
修改./__init__.py文件:
print("导入parent包...内部已经导入random库")
str_parent = r"我是parent\__init__.py里的字符串..."
import random
import parent.one as yi
from parent import two
# import parent.three
cmd控制台下的操作如下:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS C:\Users\chenxuqi\Desktop\新建文件夹\测试包> python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> parent
Traceback (most recent call last):
File "", line 1, in
NameError: name 'parent' is not defined
>>> import parent
导入parent包...内部已经导入random库
导入parent/one包...内部已经导入hashlib库
导入parent/two包...内部已经导入time库
>>> parent
>>> parent.one
>>> parent.yi
>>> parent.two
>>> yi
Traceback (most recent call last):
File "", line 1, in
NameError: name 'yi' is not defined
>>> two
Traceback (most recent call last):
File "", line 1, in
NameError: name 'two' is not defined
>>> one
Traceback (most recent call last):
File "", line 1, in
NameError: name 'one' is not defined
>>> three
Traceback (most recent call last):
File "", line 1, in
NameError: name 'three' is not defined
>>> parent.three
Traceback (most recent call last):
File "", line 1, in
AttributeError: module 'parent' has no attribute 'three'
>>> import parent.three
导入parent/three包...内部已经导入jieba库
>>> parent.three
>>> three
Traceback (most recent call last):
File "", line 1, in
NameError: name 'three' is not defined
>>> import parent.three as three
>>> three
>>>
>>>
实验源代码获取: 源代码下载链接
本文分享 CSDN - 敲代码的小风。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
python type help copyright_Python关于import的实验(8)__init__.py文件内部代码的执行以及内部的导入和内部的变量...相关推荐
- Python包中__init__.py文件的作用和用法
在Python工程中,我们经常可以看到带有"__init__.py"文件的目录,在PyCharm中,带有这个文件的目录被认为是Python的包目录,与目录的图标有不一样的显示.如下 ...
- Python的__init__.py文件作用
今天在运行pytest命令的时候遇到报错,试过很多种方法,也没解决.后来才发现原来是无意中删除了__init__.py文件,python虚拟机觉得不是合法的包,导致不能识别而报错.添加之后再运行,果然 ...
- Python模块包中__init__.py文件的作用
2019独角兽企业重金招聘Python工程师标准>>> 在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自 ...
- python模块 init py_Python模块包中__init__.py文件的作用
在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很 ...
- Python模块包中__init__.py文件的作用(转载)
用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的意义,偶然看到对它的介绍吓一大跳,这个文件太重要了 模块包: 包通常总是一个目录,目录下为首的一个文 ...
- python中__init__文件的运用_python中__init__.py文件的作用
1.很多地方的文件夹都有__init__.py.网上一般都说,有了这个东西会把它当作一个包,否则import这个文件夹会出错. 但这就好像和说python文件中如果有中文就要在开头写 # coding ...
- python包的init文件_Python模块包中__init__.py文件功能分析
本文实例讲述了Python模块包中__init__.py文件功能.分享给大家供大家参考,具体如下: 用django做开发已经一年多的时间,但基本没注意python模块中__init__.py文件存在的 ...
- python打不开py文件查看代码,用python打开py文件
.py文件无法用python打开 刚刚把python更新到python3.7.2 但是发现之前写的.py的文件双击没有任何我去,你的情况和我一模一样,我也是环境变量和注册表按照网上的方法设置了,却还是 ...
- python文件中的代码调用以及“__init__.py“ 文件说明
python文件中的代码调用以及"__init__.py" 文件说明 如何调用另一个python文件中的代码 同一文件目录下 不同文件目录下 "__init__.py&q ...
最新文章
- 想学科大讯飞成为下一个业界黑马?这些项目了解一下
- IBM之alphablox 数据源定义问题解决
- win服务器系统程序原因分析
- 转载 1-EasyNetQ介绍(黄亮翻译) https://www.cnblogs.com/HuangLiang/p/7105659.html
- C# Socket系列一 简单的创建socket的监听
- Enumerable#zip特性
- sql java驱动程序_Microsoft SQL Server JDBC 驱动程序支持矩阵
- 前端学习(570):margin负值下的等高布局
- 40 WM配置-作业-确认(转储单TO确认)
- django-shell操作模型类
- php.exe占用资源过大,记录一次php占用系统资源过高的问题
- 躺着收钱月入过万,怎样才能做到?
- Android Wi-Fi 2.4G及5G信道一览表
- 视频解析接口公众号对接教程
- DAX:RELATED 和 RELATEDTABLE
- STM32F407 FSMC驱动MT29F4G08A NAND FLASH源代码分享
- 51单片机实验——模拟三台机器故障检测与指示系统
- C语言:0, '0', '\0', NULL 区别
- python动力学建模与仿真_发动机悬置python仿真计算
- 华东理工计算机类在哪个校区,华东理工大学有几个校区及校区地址 哪个校区最好...