模块基础上半部分加 random 模块

目录

  • 一、模块的四种形式

    • 1.1 什么是模块
    • 1.2 模块形式:
    • 1.3 为什么要用模块
  • 二、import 和 from...import...
    • 2.1 import 模块名
    • 2.2 from...import... 模块名
    • 2.3 import 和 from...import...的异同
  • 三、循环导入问题
  • 四、模块的搜索路径
  • 五、python文件的两种用途
  • 六、random 模块
    • random 模块的使用方法

一、模块的四种形式

1.1 什么是模块

模块是一系列功能的集合体,而函数是某一个功能的集合体,因此模块可以看成是一堆函数的集合体。一个py文件内部就可以放一堆函数,因此一个py文件就可以看成一个模块。如果这个py文件的文件名为module.py,模块名则是module

1.2 模块形式:

1、自定义模块:就是自己创建的py文件,里面写入一堆函数,则这个文件被称为自定义模块,即使用python编写的.py文件。

2、第三方模块:需要自己安装,有13万个第三方库,无所不能

3、内置模块:python解释器自带的,不需要安装

4、包:含有__inti__.py的文件夹,一种特殊的模块(解决了一个问题)

1.3 为什么要用模块

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

二、import 和 from...import...

2.1 import 模块名

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

import time
time.time()

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

? 1、在内存中生成一个叫做time的名称空间

? 2、运行time.py文件,然后把time.py文件内的名称空间放入time的名称空间内

? 3、把time的名称空间指向import和from...import.py(当前导入time模块的文件) 的名称空间中

模块的重复导入会直接引用之前创造好的加过,不会重复执行模块的文件

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

2.2 from...import... 模块名

不推荐使用这个方法

from time import gmtime
print(gmtime())

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

? 1、在内存中生成一个叫做time的名称空间

? 2、运行time.py文件,然后把time.py文件内的名称空间放入time的名称空间内

? 3、把gmtime方法指向import和from...import.py(当前导入time模块的文件) 的名称空间内,该方法可以不用加任何前缀而直接使用

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

导入文件内所有内容的功能:

__all__在两种模块名中的区别

from test import *   # __all__限制了 from test import *(导入全部)
from test import f3  # __all__不会限制
import test          # __all__ 不会限制

2.3 import 和 from...import...的异同

相同点:

? 1、两者都会执行模块对应的文件,两者都会产生模块的名称空间

? 2、两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关

不同点:

? import 需要加前缀;from...import...不需要加前缀

三、循环导入问题

#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、然后从自定制模块中找

? 也就是在自己创建的文件模块中找

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条件不成立,报错

if __name__ == ‘__main__‘:实际上就是一个if判断,或者是过滤器。可以用main+tab键快速打出来

六、random 模块

random 模块的使用方法

  • 掌握

    1、random.random() 随机生成一个0--1之间的小树

    import random
    
    print(random.random())  #随机生成一个大于0小于1之间的小数
    ------------------------------------------------------------
    0.6331352272344526

    2、random.randint():随机生成一个数值范围内两头都包括之间的整数

    import random
    
    print(random.randint(1,5))   #随机生成一个大于等于1且小于等于5之间的整数
    
    ------------------------------------------------------------
    5

    3、random.shuffle():打乱容器类元素--->列表和字典

    import random
    
    list = [1,3,5,7,9]
    random.shuffle(list)   #打乱list的顺序,相当于“洗牌”
    print(list)
    ------------------------------------------------------------
    [9, 5, 3, 7, 1]
  • 了解

    1、random.randrange():随机生成一个给定范围内(顾头不顾尾)的整数

    import random
    #随机生成一个大于等于1且小于3之间的整数
    # print(random.randrange(1,3))
    ------------------------------------------------------------
    1

    2、random.uniform():随机生成给定范围内(头尾都不顾)的小数

    import random
    #随机生成一个大于1小于3的小数
    print(random.uniform(1,3))
    ------------------------------------------------------------
    2.7201432742975458

    3、random.choice():随机取出列表内的任意一个元素

    import random
    #随机生成列表内的任意一个元素
    print(random.choice([1,'23',[4,5]]))
    ------------------------------------------------------------
    1

    4、random.sample():随机取出列表元素任意n个元素的组合

    import random
    #随机生成列表元素任意n个元素的组合
    print(random.sample([1,'23',[4,5]],3)) #这个3就代表n
    ------------------------------------------------------------
    [[4, 5], '23', 1]

原文地址:https://www.cnblogs.com/zhuangyl23/p/11360897.html

时间: 2024-10-09 17:25:23

模块基础上半部分加 random 模块的相关文章

Python 基础 - 4.3 random模块

程序中有很多地方需要用到随机字符,比如登录网站的随机验证码,通过random模块可以很容易生成随机字符串 >>> random.randomrange(1,10) #返回1-10之间的一个随机数,不包括10 >>> random.randomint(1,10) #返回1-10之间的一个随机数,包括10 >>> random.randrange(0, 100, 2) #随机选取0到100间的偶数 >>> random.random()

python开发模块基础:正则表达式&re模块

一,正则表达式 1.字符组:[0-9][a-z][A-Z] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示字符分为很多类,比如数字.字母.标点等等.假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0.1.2...9这10个数之一.可以写成这种 [0-5a-eA-Z] 取范围的匹配 2.字符 1 #!/usr/bin/python env 2 #_*_coding:utf-8_*_ 3 4 . 匹配除换行符以外的任意字符 5 \w 匹配字母

《python解释器源码剖析》第15章--python模块的动态加载机制

15.0 序 在之前的章节中,我们考察的东西都是局限在一个模块(在python中就是module)内.然而现实中,程序不可能只有一个模块,更多情况下一个程序会有多个模块,而模块之间存在着引用和交互,这些引用和交互也是程序的一个重要的组成部分.本章剖析的就是在python中,一个模块是如何加载.并引用另一个模块的功能的.对于一个模块,肯定要先从硬盘加载到内存. 15.1 import前奏曲 我们以一个简单的import为序幕 # a.py import sys 1 0 LOAD_CONST 0 (

Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块

主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功能的代码进行归类的结果引入模块的方式: (1) import 模块 (2) from 位置 import 模块 二. collections模块 collections模块主要封装了一些关于集合类的相关操作. 如我们学过的iterable,iterator等等.除此以外, collections还提

Python学习笔记——基础篇【第五周】——random模块

random模块 随机数 mport random print random.random() print random.randint(1,2) print random.randrange(1,10) 生成随机验证码 import random checkcode = '' for i in range(4): current = random.randrange(0,4) if current != i: temp = chr(random.randint(65,90)) else: te

Python 基础 - Day 5 Learning Note - 模块 之 标准库:random 模块

常用操作 import random # 随机浮点数 print(random.random()) # 0.1706000097536472 # 返回生成一个0到1的随机浮点数: 0<= n <= 1 print(random.uniform(1,8)) # 4.060336609768256 # 函数语法: random.uniform(a,b) # 返回生成以a为下限,b为上限的随机浮点数: a<=n<=b # 随机整数 print(random.randint(1,10))

十六、模块:time模块(时间)、random模块(随机数)

导入模块:import  模块 模块实际就是以个.py文件 调用模块下内容: 模块.方法名 模块分类: 内置模块.第三方模块.自定义模块 模块查找顺序: 自定义模块--第三方模块--内置模块 time模块 表示时间的三种方式: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回的是float类型 元组:元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等) 格式化的时间字符串:"1992-1-2" 时间戳是计算机能够识别的时间:

模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块

目录 1. 包 2. time模块 ??1. 优先掌握 2. 了解 3. datetime模块 ??1. 优先掌握 4. random模块 ??1. 优先掌握 ??2. 了解 5. hashlib模块和hmac模块 6. typing模块 7. requests模块 8. re模块 ??1. re模块的正则表达式的元字符和语法 ??2. 贪婪模式和非贪婪模式 ??3. 匹配邮箱实例 ??4. re模块中的常用功能函数 ??5. 修饰符 re.S ??6. 补充 目录 \1. 包 1. 优先掌握

time&amp;datetime&amp;random模块

import time 1.print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了time.process_time()测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来 2.print(time.altzone) #返回与utc时间的时间差,以秒计算3.print(time.asctime()) #返回时间格式"Thu Apr 13 21:46:21 2017", 4.print(time.localtime()) #返回本地时间 的s