python练习题6(模块、包)
#1.以⾃⼰的理解总结为什么会出现循环导⼊,并⽤代码举例说明
#m1.py
import m2
x = 10
print(m2.y)
#m2.py
import m1
y = 20
# 当执⾏m1.py时, 先执⾏import m2语句指向m2.py的名称空间,
# 在m2.py中执⾏ import m1 指向m1的名称空间,再执⾏x = 10,
# 在执⾏print(m2.y)时m2的名称空间并没有y = 20这个申明,所以报错。
#2.如何来解决循环导⼊,并解决第1题中的循环导⼊问题
# 将模块导⼊在对象申明之后即可
# m1.py
x = 10
import m2
print(m2.y)
# m2.py
y = 20
import m1
print(m1.x)
#3.完成housework.py⽂件,拥有三个功能:sweep、wash、cook,⾃定义功能实现(函数体),从⽂件⾃执⾏和作为模块使⽤两⽅⾯,#验证三个功能,且两⽅⾯使⽤⽅式可以共存
#run.py
import sys
import os
sys.path.append(os.path.dirname(__file__))
print(sys.path)
import housework
housework.sweep()
housework.wash()
#housework.py
def sweep():
print("sweep")
def wash():
print('wash')
def cook():import语句
print('cook')
if __name__ == '__main__':
sweep()
#4.导⼊模块的搜索路径有哪些?它们的优先级是?
#内存 > 内置 > sys.path的路径顺序遍历⾃定义模块(⾃⼰写的,系统写的第三⽅,别⼈写的第三⽅)
#5.现有⼀个run.py运⾏⽂件,与run⽂件同级⽬录下有⼀个pgk⽂件夹,⽂件夹下有两个模块m1、m2,m1模块内有功能f1,
#可以打印字符串"我是m1模块",m2模块内有功能f2,可以打印字符串"我是m2模块",在run⽂件中,通过绝对路径⽅式导⼊m1模块,#验证功能,在模块m1中通过相对路径导⼊m2模块,验证功能
# run.py
import sys
sys.path.clear()
sys.path.append(r'C:\Users\jeff\Desktop\projects\day6\pkg')
from m1 import f1
f1()
# m2.py
import m2
def f1():
print("我是m1模块")
m2.f2()
#6.建⽴如下包结构,完成包的使⽤
# 结构:
# 1)包名为pkg
# 2)⼀级⽬录pkg下:
# – 模块 有函数m_fn
# – sub1 ⼦包
# – sub2 ⼦包
# 3)⼆级⽬录sub1下:
# – 模块 有函数 m1_fn
# 4)⼆级⽬录sub2下:
# – 模块 有函数 m2_fn
# 要求:
# 1)在执⾏⽂件run.py只导⼊pkg包,不做其他导⼊操作# 2)在执⾏⽂件run.py中访问三个函数的⽅式分别是
# pgk.m_fn()
# pgk.m1_fn()
# pgk.sub2.m2_fn()
# 如何来设计包
#pkg下 __init__.py
import sys
import os
sys.path.append(os.path.dirname(__file__))
from .m import m_fn
from .sub1.m1 import m1_fn
from .sub2.m2 import m2_fn
#run.py
import pkg
pkg.m_fn()
pkg.m1_fn()
pkg.sub2.m2.m2_fn()
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论