zoukankan      html  css  js  c++  java
  • day 16 模块的四种形式、import和from import、循环导入问题、模块的搜索路径、python 文件的两种用途、random模块

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


    import和from import
    python看成一个手机,pip是应用管家,time就是应用管家里的一个应用,要用它,import

    import 发生的3件事情
    1. 在内存中生成一个叫做time的名称空间
    2. 运行time.py文件,然后把time.py文件内的名称空间放入time的名称空间内
    3. 把time的名称空间指向 import和from...impot.py(当前导入time模块的文件) 的名称空间中

    使用import time导入的时候,使用方法只能 time.方法名() ,不能直接方法名


    from time import 发生的3件事情:
    from time import gmtime,time
    from time import * # 所有(等同于import time),不推荐使用,因为很容易造成变量名冲突
    from test import * # __all__限制了 from test import *
    from test import f3 # __all__不会限制
    import test # __all__ 不会限制
    1. 在内存中生成一个叫做time的名称空间
    2. 运行time.py文件,让后把time.py文件内的名称空间放入time的名称空间内
    3. 把gtime方法指向 import和from...import.py(当前导入time模块的文件) 的名称空间内



    循环导入问题
    m1.py
    from m2 import y # ImportError: cannot import name 'y'
    print(y)
    x = 10

    m2.py
    from m1 import x # ImportError: cannot import name 'x'
    print(x)
    y=20

    运行m1.py
    1. 生成一个m2的名称空间
    2. 运行m2.py这个文件--> from m1 import x --> 生成一个m1的名称空间 --> 运行m1.py这个文件 --> from m2 import y
    以上现象叫做循环导入问题

    解决方法:
    把出现循环导入的语句,写入函数里,变量写到函数外面


    模块的搜索路径:
    1. 先从内存中找

    from m2 import y
    print(y)
    import time
    time.sleep(10) # 10s内删除了m2


    from m2 import y
    print(y)

    2. 内置
    from time import time
    print(time)

    3. 自定制

    4. 环境变量中 (主要记住未来项目的执行文件一定要弄一个环境变量)
    import sys
    print(sys.path) # 环境变量,模块就是在这里找
    sys.path.append(r'D:上海Python11期视频python11期视频day 16')

    查找顺序:
    内存 --> 内置 --> 自定制 --> 环境变量


    python 文件的两种用途

    from m1 import y
    print(y)


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

    模块文件: 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个

     
  • 相关阅读:
    FLINK基础(87): DS算子与窗口(1)简介
    Flink实例(三十九):状态管理(十)配置checkpoint
    FLINK基础(112): DS算子与窗口(23)多流转换算子(7)Broadcasting
    Flink实例(三十七):状态管理(八)自定义操作符状态(三)广播状态(Broadcast state)(一) KeyedBroadcastProcessFunction
    Flink实例(三十六):状态管理(七)自定义操作符状态(二)union list state
    关闭firecracker
    Creating Custom rootfs and kernel Images
    Build a single-app rootfs for Firecracker MicroVMs
    由浅入深CrosVM(一)—— 如何在Ubuntu中搭建CrosVM
    Making a Custom MicroVM for AWS Firecracker!
  • 原文地址:https://www.cnblogs.com/wwei4332/p/11360259.html
Copyright © 2011-2022 走看看