Python入门-模块

发布时间:2024年01月16日

1.什么是模块?

  • 在Python中一个后缀名为 .py 的Python文件就是一个模块
  • 模块中可以定义函数、类等
  • 模块也可以避免函数、类、变量等名称相冲突的问题
  • 模块不仅提高了代码的可维护性,同时还提高了代码的可重用性
  • 在给模块命名的时候要求全部使用小写字母,多个单次之间使用下划线进行分隔
  • 如果自定义模块名称的与系统内置模块名称相同,那么在导入时会优先导入自定义的模块

(就和Java中导入一个类是一个概念)
在这里插入图片描述

1.1 自定义模块

新建 python 文件 my.info.py

name='Jarvis'
def info():
    print(f'大家好我叫{name}')

这样一个自定义模块就定义好了

1.2 模块的导入

在这里插入图片描述

import my_info

print(my_info.name)
my_info.info()

模块起别名

import my_info as a

print(a.name)
a.info()

from…import 方式

from my_info import name  # 导入的事一个具体的变量的名称

print(name)

from my_info import info  # 导入的事一个具体的函数的名称

info()

通配符

from my_info import *

print(name)
info()

同时导入多个模块

import math,time,random

如果两个模块,具有相同的函数和变量?

那么后导入的模块会覆盖先导入的模块!!

我们来看测试:

再新建一个模块: introduce.py

name='zhangsan'
age=18

def info():
    print(f'姓名:{name},年龄:{age}')

这里面的方法 info 、属性name 和 之前的 my_info 一样

from my_info import *
from introduce import *

#导入模块中具有同名的变量和函数,后导入的会将之间导入的进行覆盖
info()

运行结果:

D:\Python_Home\venv\Scripts\python.exe D:\Python_Home\chap10\示例10-4模块的导入.py 
姓名:zhangsan,年龄:18

后导入的那个模块的内容,就覆盖掉了先导入的

如果不想覆盖,解决方案,可以使用 import

使用模块中的函数或变量时,模块名打点调用

import my_info
import introduce

# 使用模块中的函数或变量时,模块名打点调用
my_info.info()
introduce.info()

运行结果:

大家好我叫Jarvis
姓名:zhangsan,年龄:18

2.Python中的 包

在这里插入图片描述

悬停在目录,鼠标右键-—new----Python Package

新建一个 admin 的包,就会出现一个 初始化文件

在这里插入图片描述
可以在 这个初始化文件写东西,也可以不写。

但我写了点儿,可以把这个包的版权内容写在里面

print('版权:Jarivs')
print('Java Senior Development Engineer')

在这个 admin 包里新建文件 my_admin.py

def info():
    print('大家好,我叫Jarvis,今年25岁')

name='zhangsan'

2.1 包的导入

包名.模块名

import admin.my_admin as a  # 包名.模块名  admin是包名, my_admin 是模块名
a.info()

运行结果:

D:\Python_Home\venv\Scripts\python.exe D:\Python_Home\chap10\示例10-7包的导入.py 
版权:Jarivs
Java Senior Development Engineer
大家好,我叫Jarvis,今年25

可以看到 初始化文件里面的内容 也打印输出了,
所以包被导入的时候, init.py 文件里面的代码会被自动被调用执行

from 包名 import模块 as 别名

from admin import my_admin as b  # from 包名 import模块 as 别名
b.info()   # __init__里面的方法就不会再执行了,只会执行一次

运行结果:

D:\Python_Home\venv\Scripts\python.exe D:\Python_Home\chap10\示例10-7包的导入.py 
版权:Jarivs
Java Senior Development Engineer
大家好,我叫Jarvis,今年25--------------------------------------------------------------------------------
大家好,我叫Jarvis,今年25

可以看到 init.py 文件里面的代码只会输出一次

from 包名.模块名 import 函数/变量

from admin.my_admin import info   #from 包名.模块名 import 函数/变量 等
info()

运行结果:

大家好,我叫Jarvis,今年25

2.2 主程序运行

新建两个模块:

module_a:

print('welcome to Beijing')
name='Jarvis'
print(name)

新建 module_b,导入 module_a

# 导入的代码
import module_a

运行 module_b,可以看到直接就输出了 导入 module_a的内容

D:\Python_Home\venv\Scripts\python.exe D:\Python_Home\chap10\module_b.py 
welcome to Beijing
Jarvis

如果不希望module_a 里面的内容不随着导入输出呢??

我们修改 module_a 里面的代码:

if __name__ == '__main__':
    print('welcome to Beijing')
    name = 'Jarvis'
    print(name)

这个时候就发现 module_a 里面的代码不会随着 导入被运行

主程序运行的作用:能阻止全局变量的数据被输出执行

3.Python中常用的内置模块

在这里插入图片描述
这些模块在哪儿呢?我们可以找一下

去到我们Python解释器的安装位置的 目录:
在这里插入图片描述
右键打开文件位置
在这里插入图片描述
再鼠标悬停这个,再右键打开文件位置:
在这里插入图片描述
可以看到Lib目录

在这里插入图片描述
可以看到之前我们用到过的 random 模块

3.1 random模块

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_43582499/article/details/135618681
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。