Python中的包和模块

python的组织结构:包 模块 类(函数,变量):


包的概念例如文件中的day,模块类似于day1.py


如果有day和day_test,里面都有模块day1,如何区分:


day.day1  day_test.day1


pycharm中新建directory和python软件包有什么区别:


Directory(目录):
当你在PyCharm中新建一个目录时,它只是一个普通的文件系统目录,没有特殊的含义或功能。
这个目录可以用来组织你的项目文件,但PyCharm不会将其视为Python软件包,因此不会将其包含在Python路径中,也不会将其识别为可以导入的Python模块或包。
Python软件包:
Python软件包是一个特殊的目录,它包含一个特定的__init__.py文件,这个文件可以为空。
当你在PyCharm中新建一个Python软件包时,PyCharm会自动在该目录下创建一个__init__.py文件,并且会将这个目录添加到Python路径中。
Python软件包的存在意味着你可以使用Python的import语句来导入该软件包中的模块或子包。这种导入方式通过Python的包管理机制来实现,可以有效组织和管理项目中的代码结构。

而我们认为,带__init__.py才是python组织结构中的包,并且__init__.py就是一个模块
其他模块的名字都是day.day1,而_init_.py的模块名就是包名例如:day

现在开始编写具体问题:

题目结构如下图:

我在c2中写了一个变量,如何在c1中使用:


方法一
import c2
print(c2.a)

方法二
from c2 import a
print(a)

如果在c2中进入_all_,之后可以通过下面方式引用:



from c2 import *(但是用处很少,几乎不这么用)
print(a)
print(b)
print(c)

也可以from c2 import a,b,c


如果想调用不同的包下面的变量,例如testnext包下面的c3


方法一
from testnext import c3
print(c3.b)
方法二
from testnext.c3 import b
print(b)


init文件,只要导入包,就会自动运行(next_level中的init文件举例)



方式一
import next_level
结果为:this is init file
方式二
import next_level.c2
结果为:this is init file

方式三:import c2
失败
 

init具体应用场景


如果c1,c2都需要一个包,例如math,那么可以在init中import这个包,然后,c1中只需要import nextlevel,使用的时候print(nextlevel.math.xxx),这样就可以批量导入,不用一次一次导入

注意:

不可以循环引用
例如,在p1中引入p2,在p2中引入p3,在p3中引入p1
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值