python学习笔记之基础操作(八)模块和包-1-基本概念

模块

通常来说,一个.py文件就叫做一个模块,可以直接利用不带.py的方式将一个py文件当做模块引入,之后,引入的模块就以变量的形式存在于当前文件下,可以通过.的方式直接引用其中的方法等。例如:

#main.py
import test
print(test.add(1,2))

#test.py
def add(x,y):
	return x+y

引入方法

import test
print(test.add(1,2))

from test import add
print(add(1,2))

from test import *
print(add(1,2))
print(sub(1,2))

上面三种引入方法均可以使用,不同的是,第一个引用下本地变量只有test,其余的变量都需要使用test来间接引用,第二个可以直接使用add,第三个可以直接使用test中的所有变量

引入原理

引入的过程中,会先执行test.py,在执行当前脚本,例如如下程序:

#test.py
def add(x,y):
	return x+y
print("test")

#main.py
import test
print(test.add(1,2))

#输出打印
test
3

引入时在sys.path变量中的路径下寻找对应的模块,找不到则会报错,而sys.path变量通常只会将当前的工作文件夹加入其中,不支持递归查找,因此为了避免将所有的模块统统放入主代码所在的文件夹下,引入包的概念

包和文件夹不同的地方就在于包下有一个文件叫做 init.py,当引入一个包的时候,会先执行 init.py文件。同时,可以直接通过包的方式引入包中的模块,例如:

#包test1
#包下init.py文件
print("this is test1 packet")
#包下test.py
def add(x,y):
	return x+y
#main.py  和test1在同级目录,此时sys.path里面只有main.py的路径,因此只能找到同级的
#包test1,此时可以通过包间接引用test
import test1.test
print(test.add(1,2))

from test1.test import add
print(add(1,2))

#输出
this is test1
3
3 

__name__变量

__name__变量是一个系统保留变量,在当前直接执行的脚本下,
变量值为main,在其余被调用脚本下,值为其相对路径加脚本名字,
因为脚本在被别人引用的时候会执行脚本,因此需要将自己在脚本中写的执行代码
用 if __name__ == main封装起来,防止别人在引用自己脚本时执行不想要的代码,例如
#test.py
def add(x,y):
	return x+y
if __name__=='__main__':
	print(this is test main )
print(__name__)

#main.py
import test
print(test.add(1,2))
print(__name__ + " this is main")

#输出
test.py
3
main this is main
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值