欢迎回来｡
我们刚刚学习了模块, 但假设我们的项目变得更大｡
我们有这个主文件, 我们有一些实用程序｡
但是, 假设我们现在为微软工作, 我们有一个新的, 比如说, 购物功能, 一个完整的, 比如说,
购物区, 你可以在那里购买微软的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,
我们组织我们的功能, 我们将其分组到这些包和模块中, 非常,
非常好的开发人员能够将代码组织到非常好的有意义的包中, 非常好的有意义的模块中｡
这是一个很难教的技能｡
它只是通过观察其他人的项目, 通过从事项目来练习｡
但关键是你想做有意义的事情｡
当我们开始做一些最后的项目时, 我们有超过十个项目要做｡
现在, 有了这些, 你将开始学习组织代码的不同方法沿着
所以别担心
让我们休息一下, 在下一个视频中进一步了解模型｡