zoukankan      html  css  js  c++  java
  • Python之浅谈模块

    模块的四种形式

    什么是模块

    ​ 模块就是一个py文件, 这个py文件有一大堆函数

    1. 自定义模块,common.py就叫做common模块
    2. 第三方模块: 需要自己安装 13万个第三方库 ,无所不能,写库(弄得更简单)
    3. 内置模块: python解释器自带的,不需要安装
    4. 包--> 含有__inti__.py的文件夹,一种特殊的模块(解决了一个问题)

    import和from......import

    import首次导入模块发生了3件事:

    1. 以模块为准创造一个模块的名称空间

    2. 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间

    3. 在当前执行文件中拿到一个模块名

    from...import...首次导入模块发生了3件事:

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

    循环导入

    # m1.py
    print('from m1.py')
    from m2 import x
    
    y = 'm1'
    #在运行m1时会去m2中找x但在第二行时又会去m1中找y,这样就会造成死循环,并报错
    
    # m2.py
    print('from m2.py')
    from m1 import y
    
    x = 'm2'
    #在运行m2时会去m1中找y但在第二行时又会去m2中找x,这样就会造成死循环,并报错
    
    
    #解决方法
    
    # m1.py
    print('from m1.py')
    
    
    def func1():
        from m2 import x
        print(x)
    
    
    y = 'm1'
    
    # m2.py
    print('from m2.py')
    
    def func1():
        from m1 import y
        print(y)
    
    
    x = 'm2'
    
    

    模块的搜索路径

    模块其实就是一个文件,如果要执行文件,首先就需要找到模块的路径(某个文件夹)。如果模块的文件路径和执行文件不在同一个文件目录下,我们就需要指定模块的路径。

    模块的搜索路径指的就是在导入模块时需要检索的文件夹。

    导入模块时查找模块的顺序是:

    1. 先从内存中已经导入的模块中寻找
    2. 内置的模块
    3. 环境变量sys.path中找

    Python文件的两种用途

    python文件总共有两种用途,一种是执行文件;另一种是被当做模块导入。

    执行文件: 当前运行的文件就叫做执行文件

    模块文件: 运行05 Python文件的两种用途.py文件, m1就是模块文件

    执行文件和模块文件是相对的.

    random模块

    import random
    
    # 最常用的方法
    print(random.random())  # 0-1的随机数
    
    print(random.randint(0,100))  # 0-100的整数
    
    lt = [1,2,3,4,5,]
    random.shuffle(lt)  # 打乱容器类元素  --> 列表和字典
    print(lt)
    
    # 了解
    
    print(random.randrange(1,10))  # 1,9之内的整数
    
    print(random.uniform(1,3))  # 1-3的小数
    
    print(random.choice([1,2,3,'a','b']))  # 选一个
    
    print(random.sample([1,2,3,'a','b'],2))  # 选2个
    
    
  • 相关阅读:
    LinkedList的实现源码分析
    ArrayList实现源码分析
    探索HashMap实现原理及其在jdk8数据结构的改进
    Maven的安装使用以及 Maven+Spring hello world example
    RedisHelper帮助类
    Stream 和 byte[] 之间的转换
    WCF For Silverlight跨域策略
    Linq Query常见错误
    Linq to Sharepoint--如何获取Linq Query 生成的CALM
    如何使用代码备份SQL Server数据库
  • 原文地址:https://www.cnblogs.com/MrYang161/p/11359832.html
Copyright © 2011-2022 走看看