欢迎回来｡
为了更好地理解模块, 我们必须讨论一个重要的概念, 那就是main的概念｡
或者特别强调下划线main｡
因为当你开始在你的职业生涯中发展的时候, 你会开始看到很多这样的代码｡
这是你在使用Python时, 最常见的一行代码｡
在这段视频中, 我将解释它的作用｡
因为它是最令人困惑的话题之一, 尤其是对初学者来说｡
所以现在我将注释掉并做一些事情｡
我们有主要的PI档案｡
我想做几件事｡
首先, 我将打开我们的购物车, 它就在这里｡
在这里的顶部, 我将打印, 因为现在我们的文件没有做任何事情｡
我会输入print, 下划线, 下划线名称, 就像这样, 我也会对实用程序点py做同样的操作｡
所以在顶部, 是效用派｡
现在, 如果我在此处运行Main, 请单击此处的“run”｡
我把这两样东西打印出来｡
为什么呢？
当我运行一个python文件时, 通常我们只运行一个文件, 对吗？
我们正在处理的主文件｡
在我们的例子中, 我们的主文件恰好叫做main. py｡
所以当我点击运行时, 解释器会一行一行地运行｡
它做的第一件事是导入实用程序模块｡
并导入这两个文件｡
它要做的是进入实用程序文件并运行它, 然后自动运行每个文件或每个模块｡
在我们的案例中给出了一个名称, 它是模块实用程序的名称｡
所以当你用Python导入一些东西时, 它会找到模块, 运行一段代码.
所以它会把这段代码加到内存中, 因为我们要用乘法, 除以max, 然后继续下一行｡
在我们的示例中, 这是我们再次从购物车导入的地方｡
它会说, 嘿, 这个的名字是shopping dot more shopping dot shopping
cart因为这是模块的名字｡
最后, 它将通过这里, 因为到这里为止, 这些文件已经逐行运行,
现在它们在内存中｡
现在, 解释器可以访问除法, 乘法和我们导入的所有这些函数｡
我的问题是
如果我在这里做或者在最后做打印呢？
下划线｡
在此主文件上为名称加下划线｡
如果我跑这里来｡
你看到了吗？
我得到下划线, 下划线, 主｡
这是你所期望的吗？
如果我更改此文件的名称会怎样？
比如说重构｡
并说重命名｡
是的, 没关系｡
我们要重命名它, 我们将它重命名为, 比如说, Test Pi｡
所以这叫做测试pi｡
你觉得这个下划线的名字是什么？
如果我跑这里来｡
我还是会得到下划线｡
所以当你看到代码的时候, 也许这就开始有意义了｡
如果下划线下划线名称等于下划线, 下划线, 表示下划线.
这些是邓达斯
那就做点什么
这个名称马内是专门为我们运行的文件指定的｡
因为记住, 当我们运行一个文件, 当我在python 3中运行,
然后说test, py我运行一个文件, 一个文件导入不同的模块并运行它们.
我们运行的那个文件得到了这个默认的下划线下划线main｡
所以你在Python中看到这样的行的原因是有时候我们想确保我们只运行一个模块, 如果它是模块或者主模块的话｡
所以我可以在这里说, 打印, 请运行这个｡
现在, 我们先删除此打印, 然后单击“Run（运行）”｡
你看, 这我得到请运行这个｡
但是如果我复制这个代码, 比如说把它放到实用程序中｡
就像这样, 我点击运行｡
你看到了吗？
请快跑｡
这不会出现在实用程序中, 只有在我们运行此测试结束时才会出现｡
因为...
为什么？
这个文件的名称不是Main｡
记住, 它的名字是效用｡
因此, 这是一个很好的方法, 让我们只运行主文件的代码｡
所以这是一个随着项目越来越大的常见结构｡
也许我们有代码, 我们不想运行, 除非它是主文件｡
在我们的例子中, 假设我们不想运行其中的任何一个｡
除非这是正在调用的主文件｡
如果我现在运行这个｡
你看到了吗？
哦, 我得到一个错误｡
它说模块中的第一行不能从实用程序中导入名称乘法, 因为我们没有运行这段代码, 所以我们不能导入它｡
让我们把它还原回去｡
你给我回来
我们现在能做的就是把整个东西包起来｡
就像这样｡
这样我们就能确保测试只在运行时才运行｡
它不应该被进口｡
它应该只是我们运行的主文件｡
现在, 还记得我们有一个类的时候, 假设我们有一个主文件, 我们创建了一个类, 假设是student｡
假设这个学生什么都没有, 但是当我们做的时候｡
学生｡
我们在这里打印｡
然后单击“Run（运行）”｡
哦, 让我们实例化学生｡
假设学生1等于学生｡
让我们来看看学生的类型｡
如果我单击“运行”｡
你还记得我们怎么有这个下划线下划线主点学生吗？
它说的是这个类是被创建的｡
在我们运行的主文件中｡
比如说, 我复制了这个, 把它添加到这个工具里.
现在在我的主文件中｡
我导入实用程序｡
假设实用程序点sd为1, do为｡
然后打印｡
到时候会发生什么？
好吧, 我们得到了类实用工具点student｡
所以每当我们看到main时, 它所说的就是, 嘿, 这是一个在main文件中创建的类｡
同样, 这也是你会经常看到的事情之一｡
但说到底, 这意味着我想确保这是正在运行的文件, 因为文件既可以运行,
也可以导入｡
如果这是要运行的文件, 则它是主文件｡
那就做点什么
因此, 这是检查模块使用情况的好方法, 无论是导入的还是运行的｡
希望这是有道理的｡
在下一个视频中, 我们将讨论一些令人兴奋的内容, 称为“内置模块”｡
我会看到你在那个｡
再见, 再见, 再见