我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。
上篇文章我们讨论了模块的相关知识。今天我们将学习一下包(package)的相关基础知识。
1、引入包的概念
使用模块-module可以避免由函数名和变量名重名引发的冲突。若是模块名重复了要怎么处理呢?可以将模块放到不同的包中即可。包是一个分层次的目录结构。我们一般将一组功能相近的模块组织在一个包下。这样既可以起到规范的作用,又能避免模块名重名引发的冲突。
如下图所示第三方库中都有package。
2、创键包(package)
创建包实际就是创建一个文件夹,
如我们在项目中新建一个包,新建-选择python package-输入包名-确定
如上图所示,在新增package 中同步有__init__.py 的模块生成。
后续使用时导入包会自动执行__init__.py,默认生成是空的。
3、使用包的方法
上一步骤中我们完成了包的创建,创建包以后我们可以在包中创建模块。然后就可以使用包中的模块了。
例如我们在basic_practice 包下面新建了模块calculate,在模块中写了几个函数:加减乘除
1)通过 import导入模块
import packageName.moduleName
例如:
import basic_practice.calculate
if __name__ =="__main__":
x,y = 5,6
result = basic_practice.calculate.add_numbers(x,y)
print("两个数的和为:",result)
注意调用方法的时候需要加上包名.模块名.方法名
输出参考:11
2)通过from+完整包名+import+模块名导入
还是上面的例子改写一下,
from basic_practice import calculate
if __name__ =="__main__":
x,y = 5,6
result = calculate.add_numbers(x,y)
print("两个数的和为:",result)
注意调用方法的时候需要模块名.方法名来使用。
3)通过from+完整包名+模块名+import+定义名导入
如在calculate 模块增加变量:
#定义长方形长、宽
_length = 10
_width = 20
然后在mian.py中使用。
from basic_practice.calculate import _length,_width
if __name__ =="__main__":
#长方形的面积计算
rect_area = _width * _length
print("长方形的面积:",rect_area)
输出参考:
4)通过from+完整包名+模块名+import+方法名导入
还是之前的例子参考:
from basic_practice.calculate import add_numbers
if __name__ =="__main__":
x, y = 5, 6
result = add_numbers(x, y)
print("两个数的和为:", result)
输出结果也是正确的。
注意:此时可以直接使用方法,不需要在方法名之前写模块名字、包名称
4、以主程序方式执行
开始我们在包名basic_practice新建了模块smalltree.py 的模块
模块中写下如下代码:
不但有变量,还有函数和一些测试代码。
pinetree = "我是一棵小松树" #全局变量
def light_tree():
pinetree = "挂上了灯,小树变得明亮了!"
print(pinetree)
#函数体外
light_tree()
pinetree = "我身上"+pinetree
print(pinetree)
我们导入到main函数去执行,发现smalltree.py 全部执行了,如下图
但是,我们大多数时候并不需要全部执行,要怎么解决呢?
加入if条件就可以了,if __name__==”__main__”:
如,改写smalltree 模块为:
pinetree = "我是一棵小松树" #全局变量
def light_tree():
pinetree = "挂上了灯,小树变得明亮了!"
print(pinetree)
#函数体外
if __name__=="main()":
light_tree()
pinetree = "我身上"+pinetree
print(pinetree)
再次在main.py执行原来的语句:
from basic_practice import smalltree
if __name__ =="__main__":
print("全局变量的值:",smalltree.pinetree)
可以发现就只执行了全局变量的值。不再全部执行small tree中所有内容。
5、python 中main函数作用
在Python中,main函数是程序的入口点,负责调用其他函数或执行其他代码,使程序能够按照预期的方式运行。当运行一个Python程序时,解释器会从main函数开始执行。
举例说明:
def main():
print("全局变量的值:", smalltree.pinetree)
x, y = 5, 6
result = add_numbers(x, y)
print("两个数的和为:", result)
# 长方形的面积计算
rect_area = _width * _length
print("长方形的面积:", rect_area)
advertisement_huawei = "华为华为,科技遥遥领先,是宇宙中最优秀的手机!"
replace_chars(advertisement_huawei)
# 计算圆的面积
r = float(input("请输入圆的半径\n"))
area = math.pi * r * r
print("圆的面积为:{:.2f}".format(area))
print(sys.path)
if __name__ =="__main__":
main()
输出结果参考:
在这个例子中,我们定义了一个名为main的函数,然后使用if __name__ == "__main__":来判断当前文件是否是作为主程序运行的。如果是主程序运行,就调用main函数。
使用main函数有以下几个好处:
代码组织:将程序的入口点分离出来,使代码结构更清晰。
易于理解:对于其他程序员来说,看到明确的main函数会立即明白程序的起始点。
重用和维护:将代码封装在函数中,特别是在main函数中,可以更容易地在其他项目中重用代码,同时也使得维护和更新代码变得更加方便。
测试和调试:独立的main函数使得对程序的各个部分进行测试和调试变得更加容易。
今天先写学习到这里了,每天进步一点点。明天也要加油啊!