【Python学习】——模块与包

本文详细介绍了Python中模块的定义、导入方式,包括import、from...import以及自定义模块的使用。此外,还涵盖了包的概念、如何创建和导入包,以及异常处理在处理文件操作中的应用。最后,通过实际案例展示了这些概念的运用。
摘要由CSDN通过智能技术生成

一、模块

模块

是一个python文件,以.py结尾。模块能定义函数、类和变量,模块里也能包含可执行的代码。

模块的导入方式

[from 模块名]import [模块|类|变量|函数|*][as 别名]

常见的有以下几种形式:

import 模块名

import 模块名1,模块名2

模块名.功能名() 

import time  # 导入python内置的time模块
print("hello")
time.sleep(5)  # 通过.就可以使用模块内部的全部功能(类、函数、变量)
print("world")

 from 模块名 import 功能名

功能名()

from time import sleep
print("hello")
sleep(5)
print("world")

from 模块名 import *

功能名() 

from time import *
print("hello")
sleep(5)
print("world")

#模块定义别名

import 模块名 as 别名

#功能定义别名

from 模块名 import 功能 as 别名 

import time as tt
print("hello")
tt.sleep(5)
print("world")
from time import sleep as sl
print("hello")
sl(5)
print("world")

自定义模块

在文件夹下新建一个python文件

命名

定义模块内的变量、函数等 

引用 

 注意:当导入多个模块时 ,且模块内有同名功能,当调用这个同名功能的时候,调用到的是后面导入的模块的功能

 

from my_module_1 import test
from my_module_2 import test
test(1, 2)

# 运行结果:-1
  • 测试模块

内置变量__name__

my_module_1.py

def test(a, b):
    print(a + b)

if __name__=='__main__'
    test(1, 2)

内置变量__name__:在自定义模块文件中等于__main__,if条件为真,执行测试函数。但当模块以from的形式导入时,if条件为假,测试函数不执行。 

内置变量__all__

my_module_1.py

__all__=['test_A']
def test_A():
    print("test A")


def test_B():
    print("test B")

 内置变量__all__:如果一个模块文件中有‘__all__'变量,当使用’from xxx import *‘导入时,只能导入这个列表中的元素

test_B()会报错 

二、包

模块文件(my_module_1,my_module_2...)+__init__.py=包(package)

创建包

在根目录下创建package

命名

包含__init__.py的packag创建好了

注意:只要包含__init__.py的文件就是包(图案和其他文件夹不一样)

package内创建新模块

 命名

创建好了

导入包

  • 方式一

import 包名.模块名

包名.模块名.目标

import my_package.my_module_1
import my_package.my_module_2

my_package.my_module_1.info_print1()
my_package.my_module_2.info_print2()

from 包名 import 模块名 

from my_package import my_module_1
from my_package import my_module_2
my_module_1.info_print1()
my_module_2.info_print2()

from 包名.模块名  import 目标

from my_package.my_module_1 import info_print1
from my_package.my_module_2 import info_print2
info_print1()
info_print2()
  • 方式二

在‘__init.py_’文件中添加‘__all__=[]’,控制允许导入的模块列表

from 包名 import*

模块名.目标

test.py 

from my_package import *

my_module_1.info_print1()

__init__.py

__all__ = ['my_module_1']

 安装第三方包

  • 以pycharm为例

右下角-python环境-Interpreter Settings

点击+号 

搜索第三方包,找到符合要求的,点击右下角Install Package

注:如果安装速度比较慢的话,可以勾选options,然后输入清华大学的镜像网站:

https://pypi.tuna.tsinghua.edu.cn/simple

安装完之后,测试一下是否安装成功

三、异常、模块、包综合案例

cr.黑马程序员

str_util.py

def str_reverse(s):
    """
    功能是将字符串完成反转
    :param s:将被反转的字符串
    :return:反转后的字符串
    """
    return s[::-1]  # 反转字符串


def substr(s, x, y):
    """
    按照给定下标完成给定字符串的切片
    :param s: 即将被切片的字符串
    :param x: 切片的开始下标
    :param y: 切片的结束下标
    :return: 切片完成后的字符串
    """
    return s[x:y]


if __name__ == '__main__':
    print(str_reverse("blackpink"))
    print(substr("blackpink", 2, 5))

file_util.py 

def print_file_info(file_name):
    """
    功能是:将给定路径的文件内容输出到控制台中
    :param file_name:即将读取的文件路径
    :return:None
    """
    f = None
    try:
        f = open(file_name,"r",encoding="UTF-8")
        content = f.read()
        print(content)
    except Exception as e:
        print(f"error!{e}")
    finally:
        if f:   # 如果变量是None,表示False,如果有任何内容,就是True
            f.close()


def append_to_file(file_name,data):
    """
    功能:将指定的数据追加到指定的文件中
    :param file_name:指定的文件的路径
    :param data:指定的数据
    :return:None
    """
    f = open(file_name, "a", encoding="UTF-8")
    f.write(data)
    f.write("\n")
    f.close()


if __name__ == '__main__':
    # print_file_info("D:/abc.txt")
    append_to_file("D:/twice.txt", "TWICE!")

test,py 

import my_utils.str_util
from my_utils import file_util

print(my_utils.str_util.str_reverse("savage"))
print(my_utils.str_util.substr("aespa", 0, 2))

file_util.append_to_file("D:/twice.txt", "Best girl group")
file_util.print_file_info("D:/twice.txt")

 运行结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值