首页 > 编程语言 >XX学Python·模块和包

XX学Python·模块和包

时间:2022-10-04 23:12:50浏览次数:45  
标签:__ Python XX 导入 模块 print import os

  • 模块的导入
# 可将别人写好或自己写好的功能直接导入新文件或工程内,导入后可直接调用.
# 我们没有实现模块中的功能,但是我们讲模块导入后就可以使用该功能,类似于继承

# 导入模块的方式
'''
import 模块名
调用: 模块名.功能名

from 模块名 import 功能名
调用: 功能名

from 模块名  import  *
import 模块名  as 别名
from 模块名 import 功能名 as 别名
注:别名只作用于当前文件
'''
# # 导入os模块
# import os
# # 使用os模块
# print(os.listdir())

# # 导入os模块中部分功能
# from os import listdir, mkdir
# # 使用os模块中的功能
# print(listdir())

# # 导入os模块中的所有功能
# from os import *
# # *就是通配符,表示导入os模块中所有允许导入的模块
# # 使用os模块
# print(listdir())

# # 导入os模块,将模块改名为xitong
# import os as xitong
# # 使用os模块
# # NameError: name 'os' is not defined
# # print(os.listdir())
# # 如果给模块起了别名.则原名称不可使用
# print(xitong.listdir())

# from os import listdir as ls
# print(ls())
# NameError: name 'listdir' is not defined
# 给功能名称起别名后,无法使用原名称只能使用新的功能名称
# print(listdir())
  • 自定义模块

    • 模块名要遵循标识符的命名规则才能被导入,导入时模块中所有代码会执行一遍

    • 模块中书写的全局变量,函数,类可导入其他文件

# 文件要符合标识符命名规则,比如这个文件命名为module_01
# 1/以字母数字下划线组成
# 2/不能以数字开头
# 3/不能是关键字
# 4/严格区分大小写

__all__ = ['func', 'Person']  # 配合下方__all__的使用看

age = 18

def func():
    print('我是module01中的函数')


class Person(object):
    def eat(self):
        print('西瓜真好吃呀')

# 书写模块或工具类时常需调试,每次调试完后要将代码删除,否则导包结束后测试代码都会执行1遍
# 所以我们需要想一个办法,将我们写的测试代码在当前模块中执行时,调用、在导入模块时不调用
# __name__就是说明当前文件执行的模块名是什么
# print(__name__)   # __main__如果在当前文件中执行,模块名就是main
# 如果导入其他模块,则__name__的值就是文件名称module_01
# 所以我们根据__name__的值来判断,就可以断定他是当前文件执行,还是导入模块

# 使用该判断,让我们的测试代码只有在当前文件中执行的时候才会被调用
if __name__ == '__main__':
    if age > 10:
        print('今晚不能尿床了')
  • 模块查询顺序
    • sys.path可查询模块调用路径列表,越靠前的路径越优先查询
    • 开发中可添加调用路径 sys.path.append(路径)
# 可使用sys.path查看模块的定位顺序,如果模块名相同,优先从最新的序列查找
import sys
print(sys.path)
# sys.path返回值是一个路径列表,排名越靠前的路径,在调用模块时优先查找,
# 如果这个路径下没有对应模块才去下一个路径中查找.

# 在开发中可以在列表中你添加路径(了解)

__all__的使用

# __all__可以控制模块使用from 模块名 import *所导入的功能列表

from module_02 import *

# 如果__all__控制的类表中没有该功能则不能在文件中使用
# print(age)  # NameError: name 'age' is not defined
# 如果写到__all__中则可以使用
func()
p1 = Person()
p1.eat()

import module_02
# __all__不能控制import的导入效果
print(module_02.age)

from module_02 import age
# 如果针对性导入某个功能,不受__all__影响
print(age)
  • 包的导入
    • import 包名.模块名
    • from 包名 import 模块名
    • 如果想要使用功能 from 包名 import *
      • 要在__init__.py文件中书写__all__添加指定模块名才能导入
# 包:多个有关联的模块在一起,保存在同一个文件夹内,且文件内有一个__init__.py文件
# 创建包的方式: mew >>> package   这种创建方式会自动添加一个__init__.py文件

# # 导入包 : import 包名.模块名
# import my_package.module_02
# # 调用 : 包名.模块名.功能名称
# my_package.module_02.func()

# 导入包: from 包名 import 模块名
# from my_package import module_01
# # 调用: 模块名.功能名称
# print(module_01.age)

# 导入包: from 包名 import *
from my_package import *
# 必须在__init__.py文件中的__all__里添加模块列表,才能使用import* 进行导入

print(module_01.age)
module_02.func()

标签:__,Python,XX,导入,模块,print,import,os
From: https://www.cnblogs.com/portb/p/16754767.html

相关文章

  • XX学Python·进程与线程
    多任务编程-进程多任务执行方式并发:在一段时间内交替去执行任务并行:多核cpu每个cpu执行一个任务。注:任务>cpu时,每个cpu并发执行多个任务进程:计算机中的程......
  • XX学Python·网络
    TCP客服端程序开发(TransmissionControlProtocol)传输控制协议导入socket模块创建TCP套接字‘socket’参数1:‘AF_INET’,表示IPv4地址类型参数2:‘SOCK_STRE......
  • 基于python的物业信息管理系统设计与实现-计算机毕业设计源码+LW文档
    摘 要网络的广泛应用给生活带来了十分的便利。所以把物业信息管理与现在网络相结合,利用Python技术建设物业信息管理系统,实现物业信息的信息化。则对于进一步提高物业信息......
  • XX学Python·字典
    字典以键值对形式存储,方便快速存取,字典的键要见名知意。字典占用空间远大于列表,牺牲空间利用快速存取的特性。字典是无序的,因为不能通过索引进行键值对获取。Python3......
  • 基于python的校园用车管理系统设计与实现-计算机毕业设计源码+LW文档
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm 浏览器:谷歌浏览器数据库:DROPTABLEIFEXISTS......
  • XX学Python·元组
    元组可以储存多个数据,元组里的数据不能被修改(元组定义后只能被查询)元组定义:变量=(数据1,数据2,数据3......);单元素也要有逗号,变量=(数据,)。元组定义时,小括号可省略......
  • XX学Python·集合
    集合集合是一个无序,不重复的数据序列。无序:程序员无法控制其排布顺序,无法使用索引查找或修改数据不重复:没法在集合里放入相同的值,会自动去重,类似于字典的键定......
  • XX学Python·总结和推导式
    公共方法总结+:有{}的都不行,即字典,集合适用所有基础数据类型(intfloatbool),容器类型只有列表,元组,字符串两侧要是同种数据类型加法运算在容器类型中是拼接的意......
  • XX学Python·概述
    Python概述创始人:吉多·范罗苏姆龟叔为什么要学习Python:大势所趋,简单易学,使用范围广我们本次学习使用Python3.x版本Python在大数据生态中应用非常广泛Python解释器......
  • XX学Python·字符串的格式化及输出
    字符串的格式化及输出格式化是字符串所具有的功能与print无关,哪怕不进行输出,也可进行字符串的格式化格式:单占位符:'要书写的内容占位符'%变量名多占位符:'要......