• 模块的基本使用


    '''
    1、什么是模块
    模块是一系列功能的集合体
    常见的模块形式(自定义模块、第三方模块、内置模块):
    1、一个module.py文件就是一个模块,文件名是module.py,而模块名是module
    2、一个包含有__init__.py文件的文件夹也是模块
    3、已被编译为共享库或DLL的C或C++扩展
    4、使用C编写并链接到python解释器的内置模块


    2、为什么要用模块
    1、用第三方或者内置的模块是一种拿来主义,可以极大地提升开发效率
    2、自定义模块即将我们自己程序中需要用到的公共的功能写入一个python文件
    然后程序的各部分组件可以通过导入的方式来引用/重用自定义模块中的功能



    3、如何用模块
    导入的方式有两种
    import 模块名
    from 模块名 import 具体的功能

    '''

    4.一个py文件就是一个模块,在导入时必须从某一个文件夹下找到该py文件
    模块的搜索路径指的就是在导入模块时需要检索的文件夹们

    导入模块时查找模块的顺序是:
    1、先从内存中已经导入的模块中寻找
    2、内置的模块
    3、环境变量sys.path中找
    强调:sys.path的第一个值是当前执行文件的所在的文件夹

    当前的执行文件
    x=1
    y=2
    首次导入模块发生了3件事:
    1、以模块为准创造一个模块的名称空间
    2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
    3、在当前执行文件中拿到一个模块名
    import spam


    之后的重复导入会直接引用之前创造好的结果,不会重复执行模块的文件
    import spam #spam=spam=模块名称空间的内存地址

    spam.名字
    print(x)
    spam.x
    print(spam.money)
    print(spam.read1)
    print(spam.read2)
    print(spam.change)
    money=11111111111111
    spam.read1()
    def read1():
    print('执行文件的read1')
    spam.read2()

    spam.change()
    print(spam.money)
    print(money)

    import spam as sm
    print(sm.money)

    import time,spam,os,sys
    import spam
    import os
    import sys


    import spam
    spam.money

    from ... import ...首次导入也发生了三件事:
    1、以模块为准创造一个模块的名称空间
    2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
    3、在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用

    x=1
    y=2

    from spam import money,read1
    money=10
    print(money)
    print(read1)

    from .... import ... 对比 import 。。。
    优点:不用加前缀,代码更为精简
    缺点:容易与当前执行文件中名称空间中的名字冲突

    相同点:
    1、都会执行模块对应的文件,都会产生模块的名称空间
    2、调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
    不同点
    1、一种需要加前缀,一种不需要加前缀


    from spam import money,read1,read2,change
    money=111111111111111111
    read1()
    def read1():
    print('当前执行文件的read1',money)

    read1()

    def read1():
    print('当前执行文件的read1',money)

    read2()

    change=1
    change()
    print(money)


    from spam import money
    from spam import read1
    from spam import read2
    from spam import change

    from spam import *
    print(money)
    print(read1)

    print(change)
    print(read2)
  • 相关阅读:
    opencv 遍历Mat对象中数据方法-转
    JVM OutOfMemoryError 分析
    hibernate validation HV000030: No validator could be found for constraint
    通过aop实现rpc统一参数校验&异常捕捉
    java8 lambda groupingby 分组保持原来顺序
    递归判断素组是否有序
    dubbo 直连
    Linux 删除openjdk
    telnet命令调用远程dubbo 接口
    git submodule ssh key
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9188970.html
Copyright © 2020-2023  润新知