‫欢迎回来｡
‫我们刚刚学习了模块, 但假设我们的项目变得更大｡
‫我们有这个主文件, 我们有一些实用程序｡
‫但是, 假设我们现在为微软工作, 我们有一个新的, 比如说, 购物功能, 一个完整的, 比如说,
‫购物区, 你可以在那里购买微软的t恤衫｡
‫现在, 我们可以创建一个文件夹, 以便将文件夹添加到项目中｡
‫在这个文件夹中, 假设我们有一个新文件, 我们称之为购物｡
‫大车, 打点馅饼｡
‫所以现在这个购物车派｡
‫是我们项目中的一个文件夹｡
‫你会看到我们的项目越来越大,
‫假设这里我们只有一个函数, 由调用, 我们给予它一个项目, 假设这里我们有一个cart变量.
‫让我们说, 补充说, 这不是一个非常复杂的购买系统, 但对于我们的例子, 它应该是好的｡
‫然后我们就把车还回去｡
‫在这里我们有一个buy函数, 比如说在我们的主文件中｡
‫因此, 在这里, 我们还希望按功能导入购物车｡
‫我们如何才能做到这一点？
‫好吧, 如果我们试着购物｡
‫推车就像这样｡
‫记得吗？
‫就是这个名字｡
‫我们的档案｡
‫你看到了吗？
‫我得到了一个下划线｡
‫上面写着进口但未使用｡
‫好吧, 我会的
‫那是不是意味着我可以用它？
‫让我想想｡
‫我将输入shopping cart, 如果单击“Run（运行）.”
‫找不到模块错误｡
‫没有名为shopping cart的模块｡
‫你看, 我们在这里创建的就是我们所说的包｡
‫包就是一个文件夹｡
‫我们学习了模块, 也就是这些文件, 这些python文件｡
‫一个包就是一个等级的提升｡
‫包是包含模块的文件夹｡
‫所以你可以有一个包里面有多个模块｡
‫所以这个购物车是一个模块, 但是这个购物是一个包｡
‫所以当我们从一个包导入时, 它的工作方式是我们说包名｡
‫包裹叫什么名字？
‫购物, 然后我们做点｡
‫所以打点购物车｡
‫所以包名, 然后是模块名｡
‫现在, 如果我们这样做, 让我们看看这是否工作｡
‫比如说我购物｡
‫现在购物车小点｡
‫如果我打印这个, 让我们把它缩小一点｡
‫好吧, 我会的
‫现在, 我可以通过导入package shopping（即文件夹）和shopping cart（购物车）来访问shopping cart模块｡
‫您会再次注意到, 我们创建了一个饼图缓存｡
‫为｡
‫购物车｡
‫让我们看看是否可以使用buy函数｡
‫所以我会先说buy, 然后是item.
‫我就说我只买了一个苹果｡
‫如果我单击“运行”｡
‫你去那里｡
‫我得到了我的苹果列表, 我能够从一个包中导入它｡
‫事情是这样的｡
‫我想试着把我们刚刚做的复制到一个真实的的场景中｡
‫不要使用此网站, 请将其替换｡
‫让我们创建自己的项目｡
‫我将使用饼图, 我建议您在接下来的几个视频中也使用饼图魅力｡
‫让我们打开pitcher, 在这里创建一个新项目｡
‫现在我们想怎么叫都行｡
‫我们就称之为模块吧｡
‫现在, 对于我们的项目, 您可以看到它被保存在哪里｡
‫记住, 我们可以选择我们想要的翻译｡
‫我们稍后会在视频中讨论这个虚拟EMF｡
‫但关键是要确保我们的基础解释器使用的是Python 3｡
‫在我的例子中, 我们在用户本地bin中下载了Python 3｡
‫如果你在mac或Linux上, 如果你在Windows上, 这个路径可能会不同｡
‫现在, 我们可以创建一个项目｡
‫我们可以看到这里有我们的模块｡
‫项目｡
‫现在, 我们将暂时忽略所有这些文件夹｡
‫我们稍后再谈｡
‫这里的关键是我们要创建一个新文件｡
‫我在这里按一下鼠标器右击｡
‫又说是新的｡
‫Python文件｡
‫我们可以称之为缅因州点馅饼｡
‫请注意, 我在一个名为V､ E和V的文件夹中创建了｡
‫我们稍后再谈｡
‫现在, 让我们把它放大一点, 这样我们就可以看到了, 我们将复制我们刚才做的｡
‫所以我要复制｡
‫像这样的主文件没有复制｡
‫我们再来一次｡
‫就像这样
‫然后, 我们还要创建一些其他文件｡
‫因此, 我们将创建一个文件夹｡
‫在这里, 我只需要按一下鼠标器右击, 然后输入“新增”｡
‫您马上就会看到它写着Python包
‫我将单击Python包, 如果需要, 我也可以创建一个目录｡
‫当我单击此处时, 我们将包命名为shopping, 就像我们在这里所做的那样｡
‫好了, 我们拿到购物文件夹｡
‫在这里, 我们右键单击, 比如说, 新建新文件, 我们称之为购物车饼图｡
‫所以购物｡
‫大车点点驶过｡
‫最后, 我们将添加实用程序文件｡
‫我知道我们做了很多, 但是嘿, 我想证明一点｡
‫相信我, 这很重要｡
‫所以实用性｡
‫点馅饼｡
‫我们走吧｡
‫我们的设置和这里一样｡
‫我把这个也抄一份｡
‫好吧, 我会的
‫我们收到了｡
‫让我们把这个弄大点｡
‫好了, 我们有了和涟漪里一样的文件｡
‫只不过这次我们用的是身份证｡
‫现在, 我想传输到ID的原因是, 这里有一个额外的文件, 我们在涟漪中没有看到｡
‫而涟漪实际上把这些隐藏起来了｡
‫你可以在py文件中看到这个下划线, 它是空的｡
‫这里什么都没有｡
‫python包的一个包的规则是在这个包的根上, 你必须有一个下划线, 下划线init下划线,
‫下划线py.
‫现在就去
‫为什么会这样呢？
‫因为解释器会读到这个, 然后说, 哦, 这是一个Python包｡
‫还记得当我右击这里时, 我说新建, 然后我有一个目录或python包的选项｡
‫通过点击python包, 它自动为我们添加了这个｡
‫因此, 虽然这里的一切工作没有一个初始化, 这只是一些里波尔隐藏在引擎盖下｡
‫任何时候你想创建一个包, 你会看到我们需要一个init文件, 它可以是完全空的｡
‫饼图的妙处在于它能帮你完成, 这真的很棒｡
‫好的, 让我们运行这段代码, 确保它仍然有效｡
‫这是我们的主派｡
‫我可以简单地运行这里的代码, 方法是转到run, 然后选择run｡
‫让我们运行主文件｡
‫哦, 我们得到一个错误｡
‫让我们放大这里｡
‫我们可以看到模块购物｡
‫购物车没有属性buy, 这是因为我们没有在这里导入buy函数｡
‫那就这么办吧｡
‫让我们去购物车买, 确保我复制｡
‫贴进去｡
‫我们把它放大｡
‫顺便说一句, 我正在触摸板上放大｡
‫我可以用两个手指放大这里｡
‫如果我再次单击运行, 这一次, 一旦你运行了一次, 你就可以再次单击运行｡
‫这就是了｡
‫我们这里有苹果作为输出, 它说进程结束, 退出代码为0｡
‫当代码为0的程序退出时, 表示没有错误｡
‫如果你得到一个, 嗯, 这通常是一个错误｡
‫好了, 一切都正常了, 这就是我们的布置｡
‫我们有我们的主文件｡
‫我们还有其他模块, 如实用程序｡
‫然后我们还有我们的包和他们的包, 因为它们有这个init文件, 我们在它们里面有不同的模块｡
‫随着项目变得越来越大, 我们使用像Pi charm这样的ID,
‫我们组织我们的功能, 我们将其分组到这些包和模块中, 非常,
‫非常好的开发人员能够将代码组织到非常好的有意义的包中, 非常好的有意义的模块中｡
‫这是一个很难教的技能｡
‫它只是通过观察其他人的项目, 通过从事项目来练习｡
‫但关键是你想做有意义的事情｡
‫当我们开始做一些最后的项目时, 我们有超过十个项目要做｡
‫现在, 有了这些, 你将开始学习组织代码的不同方法沿着
‫所以别担心
‫让我们休息一下, 在下一个视频中进一步了解模型｡