python模块和包

一、模块

1、什么是模块

一个py文件,里面包含函数、方法、变量,可以通过import,form … import导入使用

2、模块的作用

直接调用系统自带,或者别人已经写好的函数,简化书写

3、常见导入方法

常见导入方法解释说明示例
import 模块导入一个模块,并且可以引用其所有方法import time
form 模块 import 方法指定到诶模块下的特定发发import sleep
form 模块 import *导入模块下的所有方法,可以在代码中直接使用方法名form time import *
form 模块 import 功能 as 别名为导入的方法添加别名form time import sleep as wating

实例代码:

import time
print(time.time())
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))

结果:
1731817078.0912356
2024-11-17 12:17:58

注意点:
1)对应的 item 可以自己定义,但是import 语法会首先把 item当作一个包定义的名称。如果没找到,再试图按照一个模块去导入。如果还没找到,抛出一个 :exc:ImportError 异常。
2)如果使用形如 import item.subitem.subsubitem 这种导入形式,除了最后一项,都必须是包,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字
3)在模块导入时,模块会被先执行一遍,所以不希望在主程序调用的 可以加一个 if name == ‘main’: 判断

4、创建自定义模块

实质:就是创建一个py文件
注意点
a、模块命名要求:名称不能以数字开头
b、模块可以引用多次,但是实例、对象只能创建一次

1)定义一个自定义模块

name 是一个python自定义参数,当在主程序中调用是值为main,当在模块中被调用是值为模块名(model),用来判断是否为主程序调用
创建一个model.py文件,文件内容见下方:

def add(x,y):
    return x+y

def subt(x,y):
    return x-y
if __name__ == '__main__':
    print(f"add的函数输出是:{add(1,2)}")
    print(f"subtranction的返回是: {subt(1,2)}")

2)模块调用

from model1 import *

n = add(2,3)
m = subt(3,1)

print(f"add的结果为:{n}\nsubt的结果是:{m}")

结果:
add的结果为:5
subt的结果是:2

5、allname

  1. name:
    是一个python自定义参数,当在主程序中调用是值为main,当在模块中被调用是值为模块名(model),用来判断是否为主程序调用
    2)all :
    使用场景:控制import * 的内容
    只有all中添加的才能通过 import * 导入

示例:在加入all 限制后,subt()函数不能被主程序所调用

__all__ = ['add']
def add(x,y):
    return x+y

def subt(x,y):
    return x-y

if __name__ == '__main__':
    print(f"add的函数输出是:{add(1,2)}")
    print(f"subtranction的返回是: {subt(1,2)}")

主程序:

from model1 import *

n = add(2,3)
m = subt(3,1)

print(f"add的结果为:{n}\nsubt的结果是:{m}")

结果:
Traceback (most recent call last):
  File "E:\python\python project\venv\model.py", line 8, in <module>
    m = subt(3,1)
NameError: name 'subt' is not defined

二、包

1、包是什么:

一个文件夹,里面存放同种种类的模块文件
注意点:包中一定含有一个 init.py文件,与一般文件夹进行区分

2、python自带包

使用:import 包名.模块名

3.创建自定义包

1)pycharm创建一个自定义包
file --> new --> Python Package
2)添加模块文件

def multiplication(x,y):
    return x*y

def divsion(x,y):
    try:
        r = None
        r = x*y
    except zeroDivisionError as e:
        print(f"输入异常,分母不能为0")
    finally:
        if r:
            return x/y
        else:
            return "输入错误"

if __name__ == '__main__':
    print(multiplication(2,3))
    print(divsion(2,0))

3)主程序调用

#import november.nov1
from november import nov1

print(f"mutiplication的返回是:{nov1.multiplication(2,3)}")
print(f"divison的返回是:{nov1.divsion(4,2)}")

结果:
mutiplication的返回是:6
divison的返回是:2.0

4、下载外部包

原因:使用外部已经别人已经开发好的包提供效率
方法:pip install -i 镜像地址/包名
常用镜像站地址:
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
豆瓣:http://pypi.douban.com/simple/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值