zoukankan      html  css  js  c++  java
  • 【0815 | Day 16】模块及模块的四种形式/import和from..import/循环导入/模块的搜索路径/python文件的两种用途/random模块

    模块

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

    模块的四种形式

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

    import 与from...import...

    import

    import和from...import

    1. 以time模块为例,打开time.py文件
    2. 用Python解释器运行解释time.py文件,然后把得到的名字放入一个time模块的名称空间
    3. test.py会有一个变量名time指向time模块的名称空间/变量名t指向time模块的名称空间
    #test.py
    
    import time
    
    import time as t  #变量名t指向time模块的名称空间
    
    from time import sleep
    from time import sleep,localtime
    

    from...import...

    1. 以time模块为例,打开time.py文件
    2. 用Python解释器运行解释time.py文件,然后把得到的名字放入一个time模块的名称空间
    3. test.py会有一个变量名sleep指向time模块名称空间中的sleep名字
    # *受__all__=['']
    #test.py
    
    __all__ = ['f1','f2']
    
    def f1():
        print(1)
    def f2():
        print(2)
    def f3():
        print(3)
       
    from test import *
    	test.f3()    #无法运行
    
    import test
    	test.f3()	# 3
    

    循环导入

    #m1.py
    from m2 import y
    x = 10
    
    #m2.py
    from m1 import x
    y = 20
    

    过程:m1.py --> m2.py --> m1.py ...

    结果:x/y在这个过程中一直没有生成

    解决方案一

    #m1.py
    x = 10
    from m2 import y
    
    
    #m2.py
    y = 20
    from m1 import x
    

    过程:m1.py --> x = 10 --> m2.py --> y = 20 --> m1.py --> x = 10

    结果:x = 10 --> y = 20 --> x = 10

    解决方案二

    #m1.py
    def f1():
    	from m2 import y
        print(y)
    x = 10
    
    #m2.py
    def f1():
    	from m1 import x
    y = 20 
    

    过程:f1() --> m2.py --> y = 20

    结果:y = 20

    模块的搜索路径

    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. 然后从自定制寻找

      x = 10
      
    4. 最后从环境变量中寻找

      import sys
      print(sys.path)  # 环境变量,模块就是在某个路径中,需要添加路径,在这里找
      sys.path.append(r'D:上海Python11期视频python11期视频day 16')
      
      # del sys.path[1]
      print(sys.path)
      
      import testt
      testt.f1()
      

    Python文件的两种用途

    1. 作为模块文件(m1.py中调用m2.py,运行m1.py时,m2.py即为模板文件),模块可以有多个
    2. 作为执行文件( 当前运行的文件),执行文件只有一个
    3. 执行文件和模块文件是相对的
    # m1.py
    
    x = 10
    if __name__ == '__main__':
        print(x)
        
    #m2.py
    
    import m1
    

    当运行m1.py时,即m1.py作为执行文件,此时 _name_==== _main_==,打印x

    当运行m2.py时,即m1.py作为模板文件,此时_name_==== m1==,if条件不成立,报错

    random模块

    import random
    
    # 大于0且小于1之间的小数
    print(random.random())
    
    0.42866657593385415
    
    # 大于等于1且小于等于3之间的整数
    print(random.randint(1, 3))
    
    3
    
    # 大于等于1且小于3之间的整数
    print(random.randrange(1, 3))
    
    2
    
    # 大于1小于3的小数,如1.927109612082716
    print(random.uniform(1, 3))
    
    2.1789596280319605
    
    # 列表内的任意一个元素,即1或者‘23’或者[4,5]
    print(random.choice([1, '23', [4, 5]]))
    
    [4, 5]
    
    # random.sample([], n),列表元素任意n个元素的组合,示例n=2
    print(random.sample([1, '23', [4, 5]], 2))
    
    ['23', 1]
    
    lis = [1, 3, 5, 7, 9]
    # 打乱l的顺序,相当于"洗牌"
    random.shuffle(lis)
    print(lis)
    
    [9, 1, 5, 7, 3]
    
  • 相关阅读:
    Java学习日报8..4
    Java学习日报8.3
    Java学习日报8.2
    Java学习日报7.31
    Java学习日报7.30
    Java学习日报7.29
    [标签] Java学习日报7.28
    Java学习日报7.27
    停更
    MG51--day5 I AM BACK/流水灯/数码管动态显示
  • 原文地址:https://www.cnblogs.com/fxyadela/p/11360324.html
Copyright © 2011-2022 走看看