1.自定义包
python中模块是一个文件,而包就是一个文件夹
有这个_init_.py就是python包,没有就是简单的文件夹
包的作用:当我们的模块越来越多时,包可以帮助我们管理这些模块,包的作用就是包含多个模块,但包的本质依然是模块。
注意:新建包后,包内部会自动创建'_init_.py'文件,这个文件控制着包的导入行为
__init__.py的作用是通过这个文件来代表一个文件夹是python的包,而非普通的文件夹
方式一:
方法1:
import 包名.模块名
包名.模块名.目标
方法2:
from 包名 import 模块名
模块名.目标
方法3:
from 包名.模块名 import 目标
目标
方式二:
__all__针对的是'from ... import*'这种含有*的方式
当输入了这一段话之后
显示my_module2报错,是因为我们定义了*只包含my_module1,*只能导入my_module1
2.安装第三方包
这些第三方的包,极大的丰富了python的编程生态,提高了我们的开发效率
但是由于是第三方,所以python没有内置,所以我们需要安装它们才可以导入使用哦
命令提示符程序就是cmd
可以看到这个下载是比较慢的,是因为这个网站是属于国外的,我们在国内去连接它,速度就比较慢
ctrl c 让下载停下来
当你使用了这一串网址后,你会发现网速瞬间提升
可以自己输入python切换到python环境中,然后import numpy 验证一下是否下载成功
点击右下角的python解释器
点击+
选中想要的包直接下载安装就好
如果国家下载较慢也可以使用刚才使用过的路径加速
3.python异常、模块、包:综合案例
#字符串相关的工具模块 def str_reverse(s):"""功能是将字符串完成反转:param s:将被反转的字符串:return:反转后的字符串"""return s[::-1]#1正着排序,-1反着排序 def substr(s,x,y):"""功能是按照给定的下标完成给定字符串的切片:param s:即将被切片的字符串:param x:切片的开始下标:param y:切片的结束下标:return:切片完成后的字符串"""return s[x:y] if __name__ == '__main__':print(str_reverse("黑马程序员"))print(substr("黑马程序员",1,3))
#文件处理相关工具模块 def print_file_info(file_name):"""功能是:将给定路径的文件内容输出到控制台中:param file_name:即将读取的文件路径:return:None"""f = Nonetry:f = open(file_name,"r",encoding="UTF-8")content = f.read()print("文件的全部内容如下:")print(content)except Exception as e:print(f"程序出现异常了,原因是{e}")finally:if f: #如果变量是None,表示False,如果有任何内容,就是Truef.close()def append_to_file(file_name,date):"""功能:将指定的数据追加到指定的文件中:param file_name:指定的文件的路劲:param date:指定的数据:return:None"""f = open(file_name,"a",encoding="UTF-8")f.write(date)f.write("\n")f.close()
import my_utils.str_util from my_utils import file_utilprint(my_utils.str_util.str_reverse("黑马程序员")) print(my_utils.str_util.substr("itheima",0,4))file_util.append_to_file("D:/test_append.txt","itheima") file_util.print_file_info("D:/test_append.txt")
这个综合案例较难,大家一起加油!