码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python中import和from详解区别


            python模块和包的作用是管理python项目的代码,避免命名冲突等问题。同时有利于项目开发,进行模块化编程。

            模块实现之后,可以重复调用。我们只需要使用自己或者别人的模块,像搭积木一样搭建自己的程序。

    目录

    一,基础概念深入理解

    1.1 什么是模块module?

    1.2 什么是包?

    1.3 包的嵌套(子包)

    1.4 包中__init__.py的作用

    二,import的用法

    2.1 import 模块

    2.2 import 包

    2.3 import 包.子包

    2.4 import 包.模块

    三,from……import的用法

    3.1 from 模块 import 模块中的类名,常量,函数

    3.2 from 包 import 子包

    3.3 from 子包 import 子子包

    3.4 from 包.模块 import 函数,类名,常量

    四,其他注意点

    4.1 导入包实质上是执行__init__.py文件

    4.2 使用sys.path查看解释器会去哪里找包

    4.3 绝对导入和相对导入

    4.4 导入模块时形成的链式导入


    一,基础概念深入理解

    1.1 什么是模块module?

            一般常见的.py文件就是一个python模块。另外:.pxd,.pyi,.pxc,.so,.dll,.pyc等都是python的模块。

            模块被import语句引入之后,比如import os,变量os就与os模块进行了绑定。一个module对象拥有__name__,__doc__等属性。通过 __doc__ 可以获得模块的文档字符串的内容;通过特殊变量 __name__ 可以获取模块的名称。在正常情况下,模块名字对应源文件名。 仅有一个例外,就是当一个模块被作为程序入口时(主程序、交互式提示符下),它的__name__ 的值为 __main__ 。

            sys.modules是一个列表,里面记录了python解释器预加载的一些模块,比如os,os.path等。注意:os.path与os的区别就是在os模块的源码里面指定了一个os.path来指向一些处理路径的函数,于是我们可以把os.path当作模块使用。

    1.2 什么是包?

            把一些模块放进一个文件夹,并在这个文件夹中添加一个__init__.py文件,这个文件夹就成了一个python包。

    1.3 包的嵌套(子包)

            一个包中如果还有其他包,则称包中的包为子包。

    1.4 包中__init__.py的作用

             __init__.py 的三个核心作用:1 ,作为包的标识,不能删除。2 ,导入包实质是执行__init__.py 文件,可以在 __init__.py 文件中做这个包的初始化、以及需要统一执行代码、批量导入。

    二,import的用法

    2.1 import 模块

    import os,os.path,time

    2.2 import 包

    import numpy

    2.3 import 包.子包

    1. import numpy.random
    2. import numpy.random as npr
    3. # 多级包这么写:a.bb.ccc.ddd……

    2.4 import 包.模块

    import numpy.f2py.auxfuncs

    三,from……import的用法

    3.1 from 模块 import 模块中的类名,常量,函数

    1. from threading import Thread
    2. from time import sleep
    3. from math import pi

    3.2 from 包 import 子包

    from numpy import random

    3.3 from 子包 import 子子包

    1. from numpy.random import tests
    2. from numpy import random.tests # 这种写法错误,原因就是tests属于random包,而且numpy包下也没有random.tests这个包

    3.4 from 包.模块 import 函数,类名,常量

    from numpy.random import randint,randn

    四,其他注意点

    4.1 导入包实质上是执行__init__.py文件

            只有使用import package这种形式才会执行__init__.py。

    4.2 使用sys.path查看解释器会去哪里找包

    1. import sys
    2. for i in sys.path:
    3. print(i)

    4.3 绝对导入和相对导入

            绝对导入是指从sys.path中的文件夹开始寻找并导入。

            相对导入指的是从当前.py文件所在目录开始向上一级或者下一级目录进行寻找并导入。

    4.4 导入模块时形成的链式导入

            举例:a.py。import math。

            b.py。import a。

            则:在b模块中print(a.pi)将打印出3.1415926……

  • 相关阅读:
    Vue+element 商品分类业务实现
    速通Redis基础(三):掌握Redis的列表类型和命令
    C++多线程
    cocos creater 鸿蒙 音频卡死 播放失败 不回调
    【云原生之Docker实战】使用Docker部署MrDoc个人在线文档系统
    XJY-220/43AC220V静态信号继电器
    队列题目:用栈实现队列
    Qt QCustomPlot 点状网格线实现和曲线坐标点拾取
    微信小程序设计规范
    MQ篇---第二篇
  • 原文地址:https://blog.csdn.net/weixin_44992737/article/details/126138156
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号