包级别还有哪些其他特殊模块(文件)?

时间:2017-02-14 11:47:04

标签: python python-3.x module package naming-conventions

我只知道两个文件名将被有意义地解释:<ItemGroup> <!-- which files to process --> <SRC_GEN_XML_Files Include="$(ProjectDir)\..\*.xml" /> </ItemGroup> <PropertyGroup> <DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> <!-- the output language --> <SRC_GEN_OUTPUT_TYPE>cpp</SRC_GEN_OUTPUT_TYPE> <!-- where to put the generated files --> <SRC_GEN_OUTPUT_DIRECTORY>$(ProjectDir)..</SRC_GEN_OUTPUT_DIRECTORY> </PropertyGroup> <!-- the shared script which generate the source --> <Import Project="$(SolutionDir)/msbuild/src_gen.props" /> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="SrcGenChecks"> <Error Text="No SRC_GEN XML sources" Condition="'@(SRC_GEN_XML_Files)' == ''"/> <Error Text="Incorrect SrcGen output type: '$(SRC_GEN_OUTPUT_TYPE)', valid values are 'cs' or 'cpp'" Condition="'$(SRC_GEN_OUTPUT_TYPE)' != 'cpp' and '$(SRC_GEN_OUTPUT_TYPE)' != 'cs'"/> <Error Text="Incorrect SrcGen output directory: '$(SRC_GEN_OUTPUT_DIRECTORY)'" Condition="!Exists('$(SRC_GEN_OUTPUT_DIRECTORY)')"/> </Target> <Target Name="SrcGenGenerateSources" Inputs="@(SRC_GEN_XML_Files)" Outputs="@(SRC_GEN_XML_Files->'$(SRC_GEN_OUTPUT_DIRECTORY)\%(Filename).$(SRC_GEN_OUTPUT_TYPE)')" BeforeTargets="PrepareForBuild" DependsOnTargets="SrcGenChecks" > <Message Importance="High" Text="Generating '$(SRC_GEN_OUTPUT_DIRECTORY)\%(SRC_GEN_XML_Files.Filename).$(SRC_GEN_OUTPUT_TYPE)' from SrcGen XML file '%(SRC_GEN_XML_Files.FullPath)'"/> <Exec Command='$(SRC_GEN_EXE) -input="%(SRC_GEN_XML_Files.Identity)" -output="$(SRC_GEN_OUTPUT_DIRECTORY)\%(SRC_GEN_XML_Files.Filename).$(SRC_GEN_OUTPUT_TYPE)" -lang=$(SRC_GEN_OUTPUT_TYPE)'/> </Target> <Target Name="CleanCpp" BeforeTargets="Clean" Condition="'$(SRC_GEN_OUTPUT_TYPE)'=='cpp'"> <Message Importance="High" Text="Removing SrcGen generated '$(SRC_GEN_OUTPUT_DIRECTORY)\%(SRC_GEN_XML_Files.Filename).{cpp,h}"/> <Delete Files='$(SRC_GEN_OUTPUT_DIRECTORY)\%(SRC_GEN_XML_Files.Filename).cpp'/> <Delete Files='$(SRC_GEN_OUTPUT_DIRECTORY)\%(SRC_GEN_XML_Files.Filename).h'/> </Target> <Target Name="CleanCs" BeforeTargets="Clean" Condition="'$(SRC_GEN_OUTPUT_TYPE)'=='cs'"> <Message Importance="High" Text="Removing SrcGen generated '$(SRC_GEN_OUTPUT_DIRECTORY)\%(SRC_GEN_XML_Files.Filename).cs"/> <Delete Files='$(SRC_GEN_OUTPUT_DIRECTORY)\%(SRC_GEN_XML_Files.Filename).cs'/> </Target> </Project>

__init__.py:包的init文件。首次导入/导入包时执行。如果这个文件存在,那么该目录被认为是一个包(也存在&#34;名称空间包&#34;没有init模块)

__main__.py:包的主要入口点。从命令行运行包时执行此文件。 (例如:__init__.py

可以存在哪些其他文件以及它们做了​​什么?

1 个答案:

答案 0 :(得分:4)

我不相信有明确的证据证明只有__main____init__是唯一的特殊文件,绝对没有看到任何文档。但是,通过在file finder for the CPython repo.

中搜索dunders,有一种可靠的方式断言那些唯一的概率很高。

只有__init__.py__main__.py的; @ chepner的观点也被唯一的其他dunder强调:__future__.py__*__.py的其他用法确实不应该被使用,因为它可能与未来的某些Python文件冲突。

由于我有源代码,所有文件中的"__.*__.py"的grepping除了前面提到的三重奏之外没有产生任何其他结果。