zoukankan      html  css  js  c++  java
  • 模块

    模块

    '''
    什么是模块:
        模块就是一系列功能的结合体
    
    模块的三种来源:
        1.内置
        2.第三方(就是别人写的模块)
        3.自带以(自己写的)
    
    模块的四种表现形式:
        1.使用python编写的py文件(可以说一个py文件就是一个模块)
        2.已被编译为共享库或DLL的C或C++扩展(了解)
        3.把一系列模块放入一个文件夹下(这个文件夹就是一个包,文件夹下必须有__init__文件)
            包就是一系列模块的结合体
        4.使用C编写并连接到python解释器的内置模块
    
    为什么要用模块?
        1.用别人写好的模块,极大的提高开发效率
        2.用自己写的模块
            在开发项目的时候,不可能把所有的代码写在一个py文件中,需要写入多个文件中
            可以将核心的写法写在一个文件中,其他文件可以使用模块进行导入
    
    在使用模块时,需要区分好什么是被执行文件,
                           什么是导入文件,就是什么是模块
    
    '''

    import方法

    '''
    
    '''
    import md1
    '''
    右键执行run1文件
        1.首先会在执行文件中创建一个属于run1的名称空间
        2.首次导入模块(md1.py)
            1.会执行md1文件
            2.运行md1.py文件中的代码,再创建属于md1的的名称空间,再将执行代码产生的名字和值得放入mckj
            3.在执行文件中产生一个可以指向md1名称空间的名字
            
            
    多次导入模块不会反复执行模块中的代码,只有第一次会执行模块中的代码
    再次导入就直接指向第一导入的成果(就是第一次导入的时候,已经产生名称空间,所有东西都在内存中了,再次导入直接指向名称空间在内存中的地址)
    
    
    '''
    
    # 访问模块中名字指向的值
    money = 99
    md1.read1()  # md 1000
    
    
    '''
    只要你能拿到函数名 无论在哪都能通过函数名加括号进行调用(调用的时候会回到函数定义阶段,依次执行代码)
    函数在定义阶段,名字查找顺序就已经固定好了,不会因为调用位置的改变而改变
    
    
    
    使用import调用模块后,想在模块名称空间中使用名字,统一句式:模块名.名字
        1.模块名.名字访问模块中的名字,永远不会与执行文件中的名字相冲突
        2.想访问模块中的名字,必须使用 模块名.名字
        
        
        
    同时导入多个模块,最好像一下方式
    import time
    import os 
    import sys
    不推荐
    import sys,os,time
    
    
    模块名比较复杂是可以给模块起别名
    import md1 as m
    '''

    from...import...使用方法

    ''''''
    '''
    可以一次性导入md文件中多个名字
    from md import money,read1,read2
    
    
    '''
    from md import money,read1,read2
    '''
    在运行run文件时
        首先会创建run的名称空间,再导入md模块
        第一次导入md模块
            会执行md模块中的代码
            创建md模块的名称空间
            直接拿到md名称空间中某个值的名字
    '''
    '''
    使用from...import...的特点
        访问模块中的名字是不需要加模块名的前缀
        访问模块中的名字会与执行文件名称空间中的名字冲突
    '''
    
    from md import *
    # 可以将模块中所有名字全部取出  不推荐使用 你可能根本不知道哪些值可用
    print(money)
    print(read1)
    print(read2)
    
    
    # 使用__all__时,可以指定py文件当做模块被导入时,
    # 限制导入者能拿到名字的个数
  • 相关阅读:
    正则表达式 (记录中...)
    css 坑记
    WebApi 中使用 Token
    WebApi 中使用 Session
    微信小程序 入门
    .net EF监控 MiniProfiler
    css布局
    移动端1像素边框问题
    移动端页面自适应解决方案:rem 布局篇
    js重点知识总结
  • 原文地址:https://www.cnblogs.com/asdaa/p/11196949.html
Copyright © 2011-2022 走看看