精华内容
下载资源
问答
  • 把一些同类型的功能收集起来,封装成功能块通过导入引用,提高协作开发效率,避免重复造轮子。 导入模块的几种方式 import 模块名 from 模块名 import 功能名 from 模块名 import * ...
    1. 模块的概念
      把一些同类型的功能收集起来,封装成功能块通过导入引用,提高协作开发效率,避免重复造轮子。

    2. 导入模块的几种方式

      1. import 模块名
        image.png

      2. from 模块名 import 功能名
        image.png

      3. from 模块名 import *
        image.png

      4. from 模块名 import 功能名,功能名
        image.png

      5. as为导入的模块起别名
        image.png

    3. 常用的模块
      time:时间模块
      os:系统功能操作模块
      hashlib:哈希加密模块

    4. 自定义模块
      新建py文件“myModel”
      image.png
      image.png
      调用此模块
      image.png
      直接导入功能
      image.png
      为模块/功能起别名
      image.png

    展开全文
  • python模块查找中,sys.modules起到缓存作用,避免模块重复加载。 程序在导入某个模块时,会首先查找sys.modules中是否包含此模块名,若存在,则只需将模块的名字加入到当前模块的Local名字空间中;若不存在...

    python中的sys.modules是一个全局字典,从python程序启动就加载到了内存,用于保存当前已导入(加载)的所有模块名和模块对象。在python的模块查找中,sys.modules起到缓存作用,避免了模块的重复加载。

    程序在导入某个模块时,会首先查找sys.modules中是否包含此模块名,若存在,则只需将模块的名字加入到当前模块的Local名字空间中;若不存在,则需要从sys.path目录中按照模块名称查找模块文件,模块文件可以是py、pyc、pyd,找到后将模块加载到内存,并加入到sys.modules字典,最后将模块的名字加入当前模块的Local名字空间中。

    下面代码演示了导入模块后,sys.modulels中的键值变化

    import sys
    
    modules1 = sys.modules.copy()
    for key, value in modules1.items():
        print('"{}": "{}"'.format(key, value))
    
    import logging
    modules2 = sys.modules.copy()
    print('首次导入logging模块后在sys.modules中加入的模块名:', modules2.keys() - modules1.keys())
    
    import logging
    modules3 = sys.modules
    print('再次导入logging模块后在sys.modules中加入的模块名:', modules3.keys() - modules2.keys())
    
    "sys": "<module 'sys' (built-in)>"
    "builtins": "<module 'builtins' (built-in)>"
    "_frozen_importlib": "<module 'importlib._bootstrap' (frozen)>"
    "_imp": "<module '_imp' (built-in)>"
    "_thread": "<module '_thread' (built-in)>"
    "_warnings": "<module '_warnings' (built-in)>"
    "_weakref": "<module '_weakref' (built-in)>"
    "zipimport": "<module 'zipimport' (built-in)>"
    "_frozen_importlib_external": "<module 'importlib._bootstrap_external' (frozen)>"
    "_io": "<module 'io' (built-in)>"
    "marshal": "<module 'marshal' (built-in)>"
    "nt": "<module 'nt' (built-in)>"
    "winreg": "<module 'winreg' (built-in)>"
    "encodings": "<module 'encodings' from 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\lib\\encodings\\__init__.py'>"
    ....................................
    "codecs": "<module 'codecs' from 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\lib\\codecs.py'>"
    "_codecs": "<module '_codecs' (built-in)>"
    
    首次导入logging模块后在sys.modules中加入的模块名: {'token', 'collections.abc', 'sre_compile', 'weakref', 'copyreg', 're', 'traceback', 'atexit', 'sre_parse', 'string', 'linecache', '_weakrefset', '_string', 'tokenize', 'sre_constants', 'threading', '_sre', 'time', 'logging', 'enum'}
    再次导入logging模块后在sys.modules中加入的模块名: set()
    

    在flask源码中就利用了sys.modules来帮助获取应用的根目录,涉及代码如下

    def get_root_path(import_name):
        """Returns the path to a package or cwd if that cannot be found.  This
        returns the path of a package or the folder that contains a module.
    
        Not to be confused with the package path returned by :func:`find_package`.
        """
        # Module already imported and has a file attribute.  Use that first.
        mod = sys.modules.get(import_name) # 根据模块名获取到模块对象
        if mod is not None and hasattr(mod, '__file__'): # C写的模块没有__file__属性
            return os.path.dirname(os.path.abspath(mod.__file__))
        ......
    
    展开全文
  • 其实就是引入某些成熟的函数库和成熟的方法,避免重复造轮子,提高开发速度。 python的import方法可以引入系统的模块,也可以引入我们自己写好的共用模块,这点和PHP非常相似,但是它们的具体细节还不是很一样。因为...
  • 一个模块就是一个包含python代码的文件,后缀名是.py即可 why 使用模块 程序太大,编写维护不方便,需要拆分 可以增加代码重复利用的方式 当做命名空间使用,避免命名冲突 how to define 模块 最好在模块中编写...

    模块

    • 一个模块就是一个包含python代码的文件,后缀名是.py即可
    • why 使用模块
      • 程序太大,编写维护不方便,需要拆分
      • 可以增加代码重复利用的方式
      • 当做命名空间使用,避免命名冲突
    • how to define 模块
      • 最好在模块中编写以下内容:
        • 函数(单一功能)
        • 类(相似功能的组合,或者类似业务模块)
        • 测试代码
    • how to 使用模块

    模块直接导入

    import module_name
    module_name.function.name
    module_name.class_name
    
    	- 若模块名称直接以数字开头,需要借助importlib
    
     import importlib
       #导入了一个叫01的模块并把导入模块赋值给了tuling
       tuling = importlib.import_module("01")   
    

    import 模块 as 别名
    - from module_name import func_name,class_name
    #有选择性地导入,导入后可直接使用(不需要加上模块名,即没有前缀)
    - from module_name import*
    #全部导入,也可以直接使用不需要前缀(但会出现命名污染的问题,不推荐使用)

    避免模块代码被导入时自动使用
    if name == “main”,建议以次作为所有程序的入口

    模块的搜索路径和存储

    • what is 模块的搜索路径:加载模块时,系统会在哪些地方寻找此模块
    • 系统默认的模块搜索路径
    import sys  
    sys.path
    
    • 添加搜索路径
      sys.path.append(dir)
    • 模块的加载顺序
      1.先搜索内存中已经加载好的模块
      2.搜索python的内置模块
      3.搜索sys.path路径

    • 包是一种组织管理代码的方式,包里面存放的是模块
    • 用于将模块组织在一起的文件夹就是包
    • 自定义包的结构
      /—包
      /—/---init.py 包的标志文件
      /—/---模块1
      /—/---模块2
      /—/---子包(子文件夹)
      /—/---/—init.py
      /—/---/—子包模块1
      /—/---/—子包模块2
    • 包的导入操作
      • import package_name:直接导入一个包,可以使用__init__.py中的内容
    package_name.func_name
    package_name.class_name.func_name()
    
    • import package_name as 别名
    • import package.module as 别名
    • from package import module1,module2,… 此种导入方法不执行__init__的内容
    • from package import*
      • 导入当前包的’init.py’文件中所有的函数和类
      • 使用方法
     func_name()
        class_name.func_name()
        class_name.var
    
    • from package.module import*
      - 导入包中指定模块的所有内容
      - 使用方法
      func_name()
      class_name.func_name()

    __all__的用法

    • 在使用from package import* 时,*可以导入的内容
    • init.py中如果文件为空,或者没有__all__,那么只可以把__init__中的内容导入
    • init.py中如果设置了__all__的值,则按照__all__指定的子包或者模块进行导入,就不会再载入__init__中的内容
    • all = [‘module1’, ‘module2’,‘package1’,…]

    命名空间

    • 用于区分不同位置不同功能但名称相同的函数/变量的一个特定前缀,作用是防止命名冲突
    setName()
    Student.setName()
    Dog.setName()
    
    展开全文
  • 详解Python import方法引入模块的实例在Python用import或者from…import或者from…import…as…来导入相应的模块,作用和使用方法与C语言的include头文件类似。其实就是引入某些成熟的函数库和成熟的方法,避免重复...

    详解Python import方法引入模块的实例

    在Python用import或者from…import或者from…import…as…来导入相应的模块,作用和使用方法与C语言的include头文件类似。其实就是引入某些成熟的函数库和成熟的方法,避免重复造轮子,提高开发速度。

    python的import方法可以引入系统的模块,也可以引入我们自己写好的共用模块,这点和PHP非常相似,但是它们的具体细节还不是很一样。因为php是在引入的时候指明引入文件的具体路径,而python中不能够写文件路径进行引入。

    下面总结一下import的几种情况:

    python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。

    下面将具体介绍几种常用情况:

    (1)主程序与模块程序在同一目录下:

    如下面程序结构:

    -- src

    |-- mod1.py

    �C test1.py

    若在程序test1.py中导入模块mod1, 则直接使用import mod1或from mod1 import *;

    (2)主程序所在目录是模块所在目录的父(或祖辈)目录

    如下面程序结构:

    -- src

    |-- mod1.py

    |-- mod2

    |�C mod2.py

    `�C test1.py

    若在程序test1.py中导入模块mod2, 需要在mod2文件夹中建立空文件init.py文件(也可以在该文件中自定义输出模块接口); 然后使用 from mod2.mod2 import * 或import mod2.mod2.

    (3)主程序导入上层目录中模块或其他目录(平级)下的模块

    如下面程序结构:

    -- src

    |-- mod1.py

    |-- mod2

    |�C mod2.py

    |�C sub

    | -- test2.py

    �C test1.py

    若在程序test2.py中导入模块mod1和mod2。首先需要在mod2下建立init.py文件(同(2)),src下不必建立该文件。然后调用方式如下:

    下面程序执行方式均在程序文件所在目录下执行,如test2.py是在cd sub;之后执行python test2.py

    而test1.py是在cd src;之后执行python test1.py; 不保证在src目录下执行python sub/test2.py成功。

    import sys

    sys.path.append(“..”)

    import mod1

    import mod2.mod2

    以上就是Python import方法引入模块的实例的详解,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • 模块和包 所谓模块就是Python中的一个py文件 ...导入模块 #方法一: import test2 #使用的时候 test2.login() #方法二:导入单个函数 from test2 import login login() #方法二:导入单个函数,导入
  • python中使用的是import,from...import和form import as 进行导入模块。其实就是导入已经写好的函数,成熟的方法,避免代码重复,提高开发速度。 作用和使用方法类似于java。就像程序结构是下面这种: |-- src  ...
  • 模块加载 模块加载时,主要完成以下动作: 在当前模块中加载由import yy或者from xx import yy导入的未被其他模块导入过的模块...避免模块重复加载; 多次运行程序,若模块未变化,将不再做语法检查,也不创建模块
  • python 模块

    2019-08-11 16:32:50
    模块(module) 一个文件里,代码太长不易维护。所以要对不同功能的代码分组,保存在不同的文件。 在python中一个.py文件就可以称为一个模块。 包含相应功能的函数以及变量。...避免变量名重复(作用域) 导...
  • 第五章 模块 1.自定义模块: 模块分类: 内置模块(标准库)-- python解释器自带的.py文件(模块) ...避免重复代码 可以多次利用 拿来主义 导入模块发生的事情: 当前的名称空间中开辟一个新空间...
  • 程序模块化后在后面的程序开发中就可以通过组合模块来搭建完整程序,避免重复造轮子的现象。 模块化的优点: 1.方便开发 2.方便维护 3.提高代码复用率 一、导入模块Python中利用import函数导入模块。 语...
  • python-模块和包

    2018-07-30 14:49:39
    导入方式:import 模块名 或 借助于importlib 包使用importlib.import_module("模块名称") 模块文件名遵循python命名规范 import 模块名 as 别名 from 模块名 import 方法名,类名 # 若单独执行...
  • Python 模块与包

    2021-04-09 15:41:16
    一个模块就是一个包含python代码的文件,后缀名称是.py就可以,模块就是个python文件 为什么我们用模块 程序太大,编写维护非常不方便,需要拆分 模块可以增加代码重复利用的方法 当作命名空间使用,避免命名...
  • python 14 模块和包

    2021-04-11 14:46:05
    一、模块 一个 .py 文件称之为一个模块(module) 使用模块的好处: 提高代码的可维护性;...模块导入方法 import 语句 from ... import 语句 from ... import * 语句 运行本质 & sys...
  • python 模块概述

    2019-01-17 20:07:10
    1.1 概述:一个py文件就是一个模块,想在别的py文件中再次使用另一个模块定义过的函数就需要先导入模块才可以。 1.2 优点: 1) 提高代码的复用性,当一个模块的代码写完之后可以被多个地方重复利用。 2) 易于...
  • 简而言之,模块就是一些常用功能的集合,我们把一些常用的函数、变量或者方法写到一个python文件中,那么这个python文件就是模块,使用模块可以避免我们重复造轮子 模块的分类 内置模块 内置模块也称为标准库,它...
  • python详解(6)--模块

    2019-07-24 23:15:31
    python中,一个.py文件就称为一个模块,一般把实现某一特定功能的代码防止在一个文件中,可以...一、python导入模块 导入模块:①import module as a,其中module为模块名,a为自定义名,可以同时导入多个模块(但...
  • python用import或者from…...其实就是引入某些成熟的函数库和成熟的方法,避免重复造轮子,提高开发速度。 python的import方法可以引入系统的模块,也可以引入我们自己写好的共用模块,这点和php非常相似,但是...
  • python ---- 自定义模块

    2019-07-25 20:21:36
    自定义模块: 1.自定义一个模块 import ---- 导入 2.模块分类: ​ 1.内置模块(标准库) ---- python解释器自带的.py文件(模块) ​ 2.第三方模块(各种大神写的)---- ...避免重复代码 ​ 2.可以多次利用 ​ ...
  • 自定义模块 ...拿来就用(避免重复造轮子),python中类库比较多,提升开发效率 import导入时会做三件事: # import test # 只能将整个工具箱拿来 # a = test.t1 # b = test.t2 # # a() # b() ...
  •  •提高代码的可维护性,一个module编写完成,就可以被其它地方引用,不必重复编写,注意模块名应避免python内置库重名  module分三种:  •python标准库  •第三方模块  •应用程序自定义模块 导入...
  • 1. 自定义模块 1.1 模块分类 模块的分类: 1.内置模块(标准库)——python解释器自带的.py文件(模块); 2.第三方模块-- 需要额外下载的 (pypi) ...# 使用别名可使文件名更短,也可给多个导入模块起一个名字,做兼容
  • 文章目录1、模块(1)简介:(2)使用模块的好处:...避免函数名和变量名冲突(一个模块内变量名不能重复) 提高代码可维护性、可重用性 分为多模块开发,有利于团队协作 (3)使用自带的模块: import 模块 as 别名
  • 2.可以多次利用,我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块导入到其他的模块中,实现了功能的重复利用 3.拿来主义,提升开发效率 同样的原理,我们也可以下载别人写好的模块然后导入到...
  • 一个模块就是一个包含python代码的文件, 后缀名成是.py就可以,模块就是个python文件 为什么我们要用模块 程序太大,编写维护非常不方便,需要拆分 模块可以增加代码重复利用的方式 当做命名空间使用,避免命名...
  • 重点内容: 首先需要注意的是导入os模块时,避免使用from os import *,因为python内建的方法里有open(),会和os.open()重复. 强调内容: 本文使用的是ubuntu18.04版本,编辑器是sublime text3.尽量选择linux去进行开发. ...

空空如也

空空如也

1 2 3 4
收藏数 79
精华内容 31
关键字:

python避免重复导入模块

python 订阅