Python基础语法(十三)

1. 模块

1. 概念

一个Python文件,以.py结尾,包含了Python对象和Python语句。模块能定义函数,类和变量,模块里也能包含可执行的代码。

2. 导入模块

1. 导入模块的方式

* import 模块名
* from 模块名 import 功能名
* from 模块名 import *
* import 模块名 as 别名
* from 模块名 import 功能名 as 别名

2. 导入方式

  1. import
    # 语法
    # 1. 导入模块
    import 模块名
    import 模块名1, 模块名2…… # 不推荐
    
    # 2. 调用功能
    模块名.功能名()
    
    # 示例
    import math
    
    print(math.pow(2, 4))
    
    # 输出结果
    16.0
    
  2. form …… import ……
    # 语法
    from 模块名 import 功能1, 功能2, 功能3……
    
    # 示例
    from math import pow
    
    print(pow(2, 4))
    
    # 输出结果
    16.0
    
  3. from …… import *
    # 语法
    from 模块名 import *
    
    # 示例
    from math import *
    
    print(pow(2, 4))
    
    # 输出结果
    16.0
    
  4. as定义别名
    # 语法
    # 模块定义别名
    import 模块名 as 别名
    
    # 功能定义别名
    from 模块名 import 功能 as 别名
    
    # 示例
    import math as mt
    from math import pow as pw
    
    print(mt.pow(2, 4))
    print(pw(2, 4))
    
    # 输出结果
    16.0
    16.0
    

3. 制作模块

每个Python文件都可以作为一个模块,模块的名字就是文件的名字。也就是说自定义模块名必须要符合标识符命名规则。

1. 定义模块

def test(ia, ib):
    print(ia + ib)

2. 测试模块

def test(ia, ib):
    print(ia + ib)


# 只在当前文件中调用该函数, 其他导入的文件内不符合该条件,不执行test函数调用
# __name__是系统变量,是模块的标识符,如果是自身模块,值是__main__,否则是当前模块的名字
if __name__ == '__main__':
    test(1, 2)

# 输出结果
3

4. 模块定位顺序

  1. 当导入一个模块,Python解释器对模块位置的搜索顺序:
    1. 当前目录
    2. 如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录。
    3. 如果找不到,Python会查看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/
  2. 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认路径。
    • 注意
      • 自己的文件名不要和已有模块名重复,否则导致模块功能无法使用
      • 使用from 模块名 import 功能的时候,如果功能名字重复,调用到的是最后定义或导入的功能。

5. __all__

如果一个模块文件中有__all__变量,当使用from …… import *导入时,只能导入这个列表中的元素。

# Module1.py模块代码
__all__ = ['test1']


def test1():
    print("test1")


def test2():
    print("test2")
# 导入模块的代码
from Module1 import *

test1()
# test2()无法导入

# 输出结果
test1

2. 包

包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,那么这个文件夹就称之为包。

1. 制作包

1. 示例

  1. 新建包mypy
  2. mypy内新建模块Module1.pyModule2.py
    # Module1.py
    def get_module():
        print(__name__)
    
    # Module2.py
    def get_module():
        print(__name__)
    

2. 导入包

  1. 方法1
    # 语法
    import 包名.模块名
    
    包名.模块名.目标
    
    # 示例
    import mypy.Module1
    
    mypy.Module1.get_module()
    
    # 输出结果
    mypy.Module1
    
  2. 方法2
    # 语法
    # 注意:必须在__init__.py文件中添加__all__ = [],控制允许导入的模块列表。
    from 包名 import *
    模块名.目标
    
    # 示例 - __init__.py
    __all__ = ["Module2"]
    
    # 示例 - 执行文件
    from mypy import *
    
    Module2.get_module()
    # 输出结果
    mypy.Module2
    

3. __dict__

class People(object):
    name = "cb"

    def __init__(self):
        self.age = 18

    def get_info(self):
        print(self.name)


pl = People()
# 返回类内部所有属性和方法对应的字典
print(People.__dict__)
# 返回实例属性和值组成的字典
print(pl.__dict__)

# 输出结果
{'__module__': '__main__', 'name': 'cb', '__init__': <function People.__init__ at 0x000001DF75D66AF0>, 'get_info': <function People.get_info at 0x000001DF75D66DC0>, '__dict__': <attribute '__dict__' of 'People' objects>, '__weakref__': <attribute '__weakref__' of 'People' objects>, '__doc__': None}
{'age': 18}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值