Python模块和包:sys模块、os模块和变量函数的使用

模块module

模块化指将一个完整的程序分解为一个一个小的模块通过将模块组合来搭建出一个完整的程序。模块化具有方便开发、维护和复用的优点。在Python中每个py文件就是一个模块。

引入外部模块

在一个模块中引入外部模块有两种方式import 模块名import 模块名 as 模块别名。后者可以引入同一模块多次但实例只会创建一个。import语句可以在程序的任何位置调用但一般情况下应该统一写在程序开头。在每个模块内部都会有一个__name__属性通过这个属性可以获取到模块的名字。__name__值为__main__的模块是主模块也是我们直接通过python执行的模块。

引入部分内容

也可以只引入模块中的部分内容语法为from 模块名 import 变量,变量....。可以为引入的变量使用别名语法为from 模块名 import 变量 as 别名

包 (package)

包是由多个模块组成的一个文件夹。当一个模块的代码过多时或需要将一个模块分解为多个模块时就需要使用到包。在包中需要一个__init__.py文件这个文件可以包含有包中的主要内容。

示例代码

以下是一些示例代码

# 引入test_module模块并指定别名test
import test_module as test

# 访问模块中的变量
print(test.a, test.b)

# 创建Person的实例p
p = test.Person()
print(p.name)

# 只引入模块中的特定部分
from m import Person,test

# 引入到模块中所有内容不推荐使用
from m import *

# 为引入的变量使用别名
from m import test2 as new_test2

# 引入包hello中的模块
from hello import a,b

print(a.c)
print(b.d)

注意__pycache__是模块的缓存文件可以用来提高程序运行的性能。

# 模块缓存文件
__pycache__ 是模块的缓存文件。在Python中代码在执行前需要被解析器转换为机器码然后再执行。为了提高程序的运行性能Python会在第一次编译后将代码保存到一个缓存文件中。下次加载该模块时就可以直接加载缓存中编译好的代码而不需要重新编译。

例子
# 引入math模块
import math

# 调用math模块中的函数
print(math.sqrt(16))

# 输出结果4.0

注意在实际编写代码时应该根据实际情况选择引入模块的方式避免引入不必要的内容以减少内存占用和提高代码的可读性。

以上是关于模块和包的相关内容。使用模块化可以使代码更加清晰、易于维护和复用。同时包的使用可以将大型程序分解为更小的模块便于管理和组织代码。编写模块和包的时候要注意命名规范并合理选择引入模块的方式。

当一个模块被导入时Python会执行该模块中的所有顶级代码即不在任何函数、类或条件语句中的代码。这通常用于初始化模块中的变量、定义函数和类等操作。

示例代码

# module.py
print("This is a module.")

def greet(name):
    print(f"Hello, {name}!")

class Person:
    def __init__(self, name):
        self.name = name

# main.py
import module

print("This is the main module.")

module.greet("Alice")

p = module.Person("Bob")
print(p.name)

运行 main.py 输出

This is a module.
This is the main module.
Hello, Alice!
Bob

可以看到当 main.py 导入 module 模块时先执行了 module.py 中的顶级代码然后才继续执行 main.py 中的代码。

此外可以使用 if __name__ == "__main__": 来判断当前模块是否被直接执行。这样可以使模块既可以作为独立的程序执行又可以被其他模块导入和使用。

示例代码

# module.py
def square(x):
    return x * x

if __name__ == "__main__":
    # 当前模块被直接执行
    # 执行一些测试代码
    print(square(5))
    print(square(10))

可以单独执行 module.py也可以在其他模块中导入并使用 square 函数。当作为独立程序执行时测试代码会被执行当作为模块导入时测试代码不会被执行。

好的我将按照要求整理这篇文章格式为Markdown格式。请稍等片刻。

开箱即用

为了实现开箱即用的思想Python中为我们提供了一个模块的标准库。在这个标准库中有很多很强大的模块我们可以直接使用并且标准库会随Python的安装一同安装。

sys模块

sys模块提供了一些变量和函数使我们可以获取到Python解析器的信息或者通过函数来操作Python解析器。我们可以引入sys模块

import sys

sys.argv

sys.argv用于获取执行代码时命令行中所包含的参数。该属性是一个列表列表中保存了当前命令的所有参数。例如

print(sys.argv)

sys.modules

sys.modules用于获取当前程序中引入的所有模块。modules是一个字典字典的key是模块的名字字典的value是模块对象。我们可以使用pprint模块对其进行格式化输出。例如

import pprint
pprint.pprint(sys.modules)

sys.path

sys.path是一个列表列表中保存的是模块的搜索路径。例如

pprint.pprint(sys.path)

sys.platform

sys.platform表示当前Python运行的平台。例如

print(sys.platform)

sys.exit()

sys.exit()函数用于退出程序。可以在括号中添加字符串作为退出时的提示信息。例如

sys.exit('程序出现异常结束')
print('hello')

os模块

os模块让我们可以对操作系统进行访问。我们可以引入os模块

import os

os.environ

通过os.environ属性可以获取到系统的环境变量。例如

pprint.pprint(os.environ['path'])

os.system()

os.system()函数可以用来执行操作系统的命令。例如可以执行dir命令查看当前目录的文件列表

os.system('dir')

os模块中的变量、函数和类

我们可以在模块中定义变量、函数和类并在其他地方使用。例如

a = 10
b = 20

_c = 30  # 添加了_的变量只能在模块内部访问

def test():
    print('test')

def test2():
    print('test2')

class Person:
    def __init__(self):
        self.name = '孙悟空'

测试代码

我们可以编写一些测试代码来验证模块的功能。这部分代码只有当当前文件作为主模块时才会执行而当模块被其他模块引入时不会执行。我们可以通过__name__属性来检查当前模块是否是主模块。

if __name__ == '__main__':
    test()
    test2()
    p = Person()
    print(p.name)

模块中的变量和函数的使用

在模块中定义的变量和函数可以在其他地方进行使用。例如假设我们将上述代码保存为一个名为example.py的模块文件

# example.py

a = 10
b = 20

_c = 30

def test():
    print('test')

def test2():
    print('test2')

class Person:
    def __init__(self):
        self.name = '孙悟空'

然后在另一个Python脚本中我们可以引入该模块并使用其中定义的变量和函数

# main.py

import example

print(example.a)
print(example.b)

example.test()
example.test2()

p = example.Person()
print(p.name)

运行main.py将会输出以下结果

10
20
test
test2
孙悟空

这样我们就可以在模块中封装一些常用的代码并在其他地方进行复用。

总结

  • 使用sys模块可以获取到Python解析器的信息和操作Python解析器。
  • 使用os模块可以对操作系统进行访问包括获取系统环境变量和执行系统命令。
  • 在模块中定义的变量、函数和类可以在其他地方进行使用。
  • 可以通过if __name__ == '__main__':来编写测试代码只有当模块作为主模块运行时才会执行。

python精品专栏推荐


python基础知识0基础入门

【python基础知识】0.print()函数
【python基础知识】1.数据类型、数据应用、数据转换
【python基础知识】2.if条件判断与条件嵌套
【python基础知识】3.input()函数
【python基础知识】4.列表和字典
【python基础知识】5.for循环和while循环
【python基础知识】6.布尔值和四种语句break、continue、pass、else
【python基础知识】7.实操-用Python实现“文字PK”小游戏一
【python基础知识】7.实操-用Python实现“文字PK”小游戏二
【python基础知识】8.编程思维如何解决问题-思维篇
【python基础知识】9.函数的定义和调用
【python基础知识】10.用函数编写程序 - 实操篇
【python基础知识】10.用Python实现石头剪刀布小游戏-函数实操篇
【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
【python基础知识】12.类与对象一
【python基础知识】12.类与对象二
【python基础知识】13.类与对象三
【python基础知识】13.类与对象四
【python基础知识】14.图书管理系统的搭建类与对象实操
【python基础知识】15.编码基础知识
【python基础知识】16.文件读写基础及操作
【python基础知识】16.“古诗默写题”的python实现文件读写和编码-实操篇
【python基础知识】17.模块的概念以及如何引入
【python基础知识】18.实操-使用python自动群发邮件
【python基础知识】19.产品思维以及流程图的使用 - 思维篇
【python基础知识】20.“午饭吃什么”的python实现产品思维-实操篇
【python基础知识】21.高效偷懒的正确打开方式-毕业篇
【python文件处理】CSV文件的读取、处理、写入
【python文件处理】Excel自动处理使用 openpyxl
【python文件处理】-excel格式处理


python爬虫知识

【python爬虫】1.爬虫基础知识
【python爬虫】2.网页基础知识
【python爬虫】3.爬虫初体验BeautifulSoup解析
【python爬虫】4.爬虫实操菜品爬取
【python爬虫】5.爬虫实操歌词爬取
【python爬虫】6.爬虫实操带参数请求数据
【python爬虫】7.爬到的数据存到哪里
【python爬虫】8.温故而知新
【python爬虫】9.带着小饼干登录cookies
【python爬虫】10.指挥浏览器自动工作selenium
【python爬虫】11.让爬虫按时向你汇报
【python爬虫】12.建立你的爬虫大军
【python爬虫】13.吃什么不会胖爬虫实操练习
【python爬虫】14.Scrapy框架讲解
【python爬虫】15.Scrapy框架实战热门职位爬取
【python爬虫】16.爬虫知识点总结复习

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python