<commit_before># **模块、包与分发**
***

## **1. 模块与import语句**
    1) 任何Python源文件都能以模块的形式使用；
    2) 首次使用import加载模块时，将做3件事：
        * 创建新的命名空间，用作在相应源文件中定义的所有对象的容器；在模块中
          定义的函数和方法在使用global语句时将访问该命名空间；
        * 在新创建的命名空间中指定模块中包含的代码；
        * 在调用函数中创建名称来引用模块命名空间；
    3) import执行已加载源文件中的所有语句；
    4) import语句可出现在程序的任何位置，每个模块中的代码仅加载和执行一次，
       无论import语句被使用了多少次；后续的import语句仅将模块名称绑定到前一
       次导入所创建的模块对象；

## **2. 从模块导入选定符号**
    1) from语句用于将模块中的具体定义加载到当前命名空间中；
    2) from相当于import，但不会创建一个名称来引用新创建的模块命名空间，而是
       将对模块中定义的一个或多个对象的引用放到当前命名空间中；
    3) 星号(*)用于加载模块中的所有定义，但以下划线开头的定义除外；
    4) from module import *只能在模块最顶层使用；在函数体中使用这种带入形式
       是不合法的，原因是这种导入语句与函数作用域规则之间具有独特的交互方式
    5) 定义列表__all__，模块可以精确控制from module import *导入的名称集合；<commit_msg>add information about executing program as main program<commit_after># **模块、包与分发**
***

## **1. 模块与import语句**
    1) 任何Python源文件都能以模块的形式使用；
    2) 首次使用import加载模块时，将做3件事：
        * 创建新的命名空间，用作在相应源文件中定义的所有对象的容器；在模块中
          定义的函数和方法在使用global语句时将访问该命名空间；
        * 在新创建的命名空间中指定模块中包含的代码；
        * 在调用函数中创建名称来引用模块命名空间；
    3) import执行已加载源文件中的所有语句；
    4) import语句可出现在程序的任何位置，每个模块中的代码仅加载和执行一次，
       无论import语句被使用了多少次；后续的import语句仅将模块名称绑定到前一
       次导入所创建的模块对象；

## **2. 从模块导入选定符号**
    1) from语句用于将模块中的具体定义加载到当前命名空间中；
    2) from相当于import，但不会创建一个名称来引用新创建的模块命名空间，而是
       将对模块中定义的一个或多个对象的引用放到当前命名空间中；
    3) 星号(*)用于加载模块中的所有定义，但以下划线开头的定义除外；
    4) from module import *只能在模块最顶层使用；在函数体中使用这种带入形式
       是不合法的，原因是这种导入语句与函数作用域规则之间具有独特的交互方式
    5) 定义列表__all__，模块可以精确控制from module import *导入的名称集合；

## **3. 以主程序的形式执行**
    1) import语句在自己的命名空间中以库模块的形式执行代码；
    2) 每个模块定义一个包含模块名称的变量__name__，程序可以检查该变量，以确
       定它们在哪个模块中执行；解释器的顶级模块名称为__main__；
          if __name__ == '__main__':
            statements
          else:
            statements
       将源文件作为库的常见做法是，使用该技术来包含可选的测试或示例代码；
{'fraction_non_alphanumeric': 0.08480176211453745, 'fraction_numerical': 0.01486784140969163, 'mean_word_length': 3.756544502617801, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2207471', 'n_tokens_mistral': 1253, 'n_tokens_neox': 1515, 'n_words': 96}