python 模块与包

#模块与包

Python概念

1、模块:module,其实一个python file文件,以.py结尾的文件 就是模块。

  • 包含Python语句,函数 ,方法 类等
  • 模块Python文件的高级叫法。
    2、包 :package,代码包,包含多个py文件 【包包含多模块】,创建python package默认加一个init.py
  • 用来代码模块归类管理 == 框架的代码分层里用上。
  • 里面的模块【py文件】可以直接进行导入 给别的模块使用。 --import
  • 和普通文件夹区别: 包会有init.py , 包可以可以导入的。
  • 包含了Python文件目录的高级叫法;
    3、库:综合概念,由很多的包和模块组成。分为两种:
  • 标准库: Python的自带的一个库,不需要额外的安装,所以直接导入只用。【pathlib】
  • 外部库【第三方库】:别人写好的 我们自己可以使用。这种不是Python自带的,需要自己先安装。【requests】

给模块和包取名字,参考变量的命名方式。

  • 只有符合命名规则的模块和包 才可以被识别和导入成功。否则会失败。

模块和包的导入: 导入模块只在当前的py文件生效的。
1、不同的模块相互之间调用函数 和变量,需要进行导入操作。
– import 模块 包名字 : 导入模块,使用模块里的函数或者变量,需要加上模块的前缀。【模块.函数】
– from 模块 import 函数,变量:部分导入,调用函数和变量时候,不需要加模块的前缀了。多个函数变量用逗号隔开 ==更多 推荐

导入模块之后,运行,发现fun1运行了两次 有两个结果?— ??
原因:导入之后,运行代码,也会同时把原文件里的代码也会同时执行一次。

  • 这种现象不是我们需要的,
    -不希望被导入之后在其他模块允许,加到main里运行。
  • 效果: 在main里面的代码只会在当前的py文件里运行,导入到其他模块里就不会运行。

导包目录:

  • 导入包从项目的根目录【rootdir】下面的第一个文件夹开始导入。可以一级一级的取目录。
  • 目前项目结构里: python65根目录
  • 根目录下的第一个文件夹 -day07
  • 也可以手动设置跟目录-- 在后面框架搭建会用。 --右键 set rootdir
    – 注意: 不可以有多个跟目录。 只能设置一个。
# 1、import 模块:包名字: 导入模块,使用模块里的函数或者变量,需要加上模块的前缀。【模块.函数】

# # import d5_module1
# d5_module1.fun1()
# print(d5_module1.name)

# 2、 from 模块 import 函数,变量:调用函数和变量时候,不需要加模块的前缀了。
# from day07_文件处理和模块包.d5_module1 import fun1,name
#
# fun1()
# print(name)

# 3、导入不是同级目录下模块 --datas下面 module3
# from day07_文件处理和模块包.datas.d7_module3 import fun3  # 规范的导包目录
# from datas.d7_module3 import fun3  # 手动设置了根目录之后可简化 导包
# fun3()

# 4、标准库 -- 部分导入
# from pathlib import Path

def fun1():
    print("这是一个module1里的函数fun1")

name = "手放开"
# 这种调试代码 检查代码效果和正确性。-- 不希望被导入之后在其他模块允许,加到main里运行。

if __name__ == '__main__':
    fun1()
    print(name)

第三方导入

非自己写的模块导入

  • 标准库 [built-in] : pathlib , time,random
    import pathlib
    from pathlib import Path

  • 第三方库: 外部库【第三方库】:别人写好的 我们自己可以使用。这种不是Python自带的,需要自己先安装

    • python有非常丰富第三方使用。–站在巨人肩膀上编程。
    • requests,pytest
      • 安装: pip install requests | pip show requests 查看库,也可以pycharm安装
        – 遇到问题: 切换源 + 用户权限–user
        • D:\Python39\Lib\site-packages
      • 导入: import ,from xx import

# pathlib
import pathlib
from pathlib import Path

# time
# import time
# print(time.time())
#
# from time import time
# print(time())
#
# # random
# import random
# print(random.random())

# requests:
import requests
res = requests.get("https://www.baidu.com")
print(res.text)

别名

场景1 : 导入包的名字跟我自己名字重复的:
我的模块里有自己的函数 导入的模块里也有同名的函数,优先使用我自己的函数。

  • 如果使用导入的函数呢?
  • 方法1: 改函数的名字 = 不可取,可能被其他的模块调用了 改名字很麻烦
  • 方法2: 导入后取别名 as 别名,就可以使用这个别名进行调用。 原来名字在当前模块里不能用了。

场景2: 导入的包或者模块名字太长了 取短一点的名字 方便后续调用。


# 我的模块里有自己的函数 导入的模块里也有同名的函数
from d5_module1 import fun1 as mo1_fun1
def fun1():
    print("这是module2里的函数fun1")

fun1()
mo1_fun1()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值