python基础三之模块的使用

1、什么是模块
模块就是一组功能的集合体,模块组织形式有以下几种
1、一个python文件是一个模块,文件名是module.py,模块名则是module(自定义模块的常见格式)
2 已被编译为共享库或DLL的C或C++扩展
3 使用C编写并链接到python解释器的内置模块
   4 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)
 
  
 
 
2、为什么要用模块
1、可以将程序中频繁用来的一些公共的功能组织到一个文件中,从而减少代冗余
2、直接使用内置或者第三方的模块中的功能,这种拿来主义可以提升开发效率
 
 
3、如何用模块
 
===========================================================
导入模块方式:
方式一:
导入模块:import 模块名
1、导入模块:import 模块名
2、首次导入模块都发生了哪些事?
2.1 先产生一个模块的名称空间
2.2 会执行模块文件的代码,将产生的名字放到模块的名称空间中
2.3 会在当前名称空间中拿到一个模块名,该模块名指向模块的名称空间
x=1
y=2
 
import spam
import spam
import spam
 
 
2、如何使用模块
import spam
 
模块名.名字,是在向模块的名称空间中拿名字
money=0
print(spam.money)
print(spam.read1)
print(spam.read2)
print(spam.change)
 
 
但凡来自于spam名称空间中的功能,执行时都是模块自己的名称空间为准的
money=111111111111111111111111
spam.read1()
 
spam.change()
print(money)
spam.read1()
 
 
def read1():
print('02 import 导入模块.py read1')
 
spam.read2()
 
 
import导入模块的方式,在引用模块名称空间中改名字时,必须加上前缀:模块名.
优点:指名道姓地访问模块名称空间中的名字,肯定不会与当前名称空间中名字冲突
import spam
money=11111111111111
print(spam.money)
 
缺点:每次引用模块名称空间中的名字都需要加上前缀,在模块名过长时,前缀会显得非常臃肿
import spam as sm
print(sm.money)
 
模块用逗号分隔一次性导入多个模块
import spam,os,time
推荐多行导入
import spam
import os
import time
 
导入模块方式二:
导入模块:from ... import 导入模块
 
#==============================第一部分
x=1
y=2
from spam import money,read1,read2,change
#1、from。。。import。。。首次导入模块也做三件事:
#1.1 先产生一个模块的名称空间
#1.2 会执行模块文件的代码,将产生的名字放到模块的名称空间中
#1.3 会在当前名称空间中直接拿到一个模块名称空间中的名字
money=1
 
#2、使用:可以不用加前缀直接使用
# print(money)
# print(read1)
# print(read2)
#优点:简洁
#缺点: 容易与当前名称空间中的名字冲突
 
 
# 强调强调强调:来自于模块名称空间中的函数一定是模块的名称空间为准的
# read1()
change()
read1()
# print(money)
 
 
#==============================第二部分
from spam import *
 
# print(money)
# print(read1)
# print(read2)
# print(change)
# 不推荐使用*,除非在我们需要引入模块中很多名字时,可以用*起到一个节省代码的作用
 
 
#==============================第三部分(了解)
from spam import *
 
print(money,read1)
print(read2)
 
#==============================第四部分
# from spam import money as m
# print(m)
 
# 强调:只有被导入的模块才能使用.或者..的语法
posted @   cyh追梦寻  阅读(98)  评论(0编辑  收藏  举报
编辑推荐:
· 聊一聊坑人的 C# MySql.Data SDK
· 使用 .NET Core 实现一个自定义日志记录器
· [杂谈]如何选择:Session 还是 JWT?
· 硬盘空间消失之谜:Linux 服务器存储排查与优化全过程
· JavaScript是按顺序执行的吗?聊聊JavaScript中的变量提升
阅读排行:
· 2000 Star,是时候为我的开源项目更新下功能了
· 好消息,在 Visual Studio 中可以免费使用 GitHub Copilot 了!
· 工作中这样用MQ,很香!
· 使用 .NET Core 实现一个自定义日志记录器
· 没事别想不开去创业!
点击右上角即可分享
微信分享提示