Python基础 - 11.模块

模块

任何Python可以独立运行,也可以做为模块被其它文件导入并使用其中的对象。这是实现代码复用的重要形式。为了组织大规模软件开发,需要把一些独立功能的代码分开存放到各个文件中,模块中每个子文件夹中包含一个__init__.py文件。

比如,习惯上,一个文件中只写一个类(Java的编程思想)

# 类的创建者
class Dog(object):
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def __str__(self):
        return "name:%s,age:%d" % (self.__name, self.__age)
    
    # property装饰器
    @property # name = property(name)
    def name(self):
        return self.__name

    @name.setter
    def name(self, name):
        self.__name = name

然后,在主流程的文件(main.py)中,需要导入dog模块,并使用其中的类或函数等标识符。

导入的方法:

方法一:使用import 模块名

此时,需要通过“模块名.类名”或“模块名.函数名”访问对应的标识符

比如:

import dog

dog1 = dog.Dog('旺财', 13)
attrs = vars(dog1) 
print(attrs) # {'_Dog__name': '旺财', '_Dog__age': 13}
print(attrs['_Dog__age']) # 13    
print(vars())

方法二:使用from 模块名 import 标识符

其中,标识符包括类名、函数名、变量名等等。

from dog import Dog

dog1 = Dog('旺财', 13)
attrs = vars(dog1) 
print(attrs) # {'_Dog__name': '旺财', '_Dog__age': 13}
print(attrs['_Dog__age']) # 13    
print(vars())

如果要导入模块中的多个标识符,可以通过逗号进行分割

 from dog import Dog, HabaDog

如果要导入模块中的全部标识符,可以通过星号代码具体的标识符

 from dog import * 

如果再创建一个文件test.py写:

from main import * 

这样main.py中的所有内容都被导入,这样会存在着极大的风险,为了避免该风险,需要在main.py中添加

# 其它模块或文件导入该模块时,__name__值一般是模块名,不会执行main()
# 仅 main.py运行时,__name__值是__main__
if __name__ == '__main__':
    main()

init.py

_init_.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个子模块(子文件夹),都有__init__.py 文件。主要作用是设置__all__变量以及执行初始化模块所需的代码。其中__all__变量中定义的对象可以在使用
from … import * 全部导入。

在这里插入图片描述

其中的__init__.py

# -*- coding: utf-8 -*-
from __future__ import absolute_import

from . import fields, reqparse, apidoc, inputs, cors
from .api import Api  # noqa
from .marshalling import marshal, marshal_with, marshal_with_field  # noqa
from .mask import Mask
from .model import Model, OrderedModel, SchemaModel  # noqa
from .namespace import Namespace  # noqa
from .resource import Resource  # noqa
from .errors import abort, RestError, SpecsError, ValidationError
from .swagger import Swagger
from .__about__ import __version__, __description__

__all__ = (
    '__version__',
    '__description__',
    'Api',
    'Resource',
    'apidoc',
    'marshal',
    'marshal_with',
    'marshal_with_field',
    'Mask',
    'Model',
    'OrderedModel',
    'SchemaModel',
    'abort',
    'cors',
    'fields',
    'inputs',
    'reqparse',
    'RestError',
    'SpecsError',
    'Swagger',
    'ValidationError',
)

项目实战

项目需求(三)

app应用中包含:

在这里插入图片描述

  • www应用中包含:

在这里插入图片描述

  • app和www应用中设置__version__及__description__

  • python manage.py baoai显示版本信息

本章项目源码

URL:https://gitee.com/yuanbaonet/master_python/tree/baoai_python_v11/

对应版本:baoai_python_v11

对应文件:sample/python/p11.py

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值