FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [View Raw Code]   [Original HTTPS Page]

Notes/python-basic-notes/python-days/Day_09.md at master · We2one/Notes · GitHub

/ Notes Public

Latest commit

 

History

History
136 lines (108 loc) · 4.96 KB

File metadata and controls

136 lines (108 loc) · 4.96 KB

Day_09

函数

  • 闭包函数 : (在函数中定义的函数!通过闭包将不同功能模块分离)

    • 必要条件:
      • 函数的嵌套的定义
      • 内部函数使用外部函数的变量
      • 外部函数必须有返回值,返回内部函数名
    • 让函数内部的局部变量,在函数执行完成后,让外部能操作这个变量,延长函数内部局部变量的生命周期
    • 缺点: 占用内存高,存在内存溢出
    • 全局污染 : 全局变量大量出现容易导致重名现象,将独立的某个功能组件,单独在一个函数中实现,最终通过函数与函数之间局部变量的隔离,达到变量数据的隔离
    • 项目开发原则: 开闭原则
      • 对于程序拓展 --> 开放
      • 对程序修改 --> 关闭
  • 装饰器

    • 语法: 必须是嵌套函数

      def 装饰器名称(fn):
      def wrapper(*args, **kwargs):
          目标函数执行前,要添加的代码功能
          res = fn(*args, **kwargs)
          目标函数执行后,要添加的代码
      return res
      return wrapper
      
    • 装饰器的应用 : 身份验证、授权验证、资源访问、日志记录、时间统计

      • 装饰器的添加

      • 目标函数的参数

      def wrap(fn): def inner(name, age): print(f"修改前年龄{age}") age -= 2 fn(name, age) return inner

       @wrap      
       def func(name, age):
       	print(f"name: {name}, age: {age}")
       
       func("小明", 21)
       ```
      
      • 外函数接收功能

      • 内函数接收参数

      • 目标函数返回值

模块和包的引用方式

  • 模块的命名

    • 根据软件中不同功能命名
    • 不能以中文命名
    • 不要与系统模块名冲突
  • 模块中的代码

    • 文档注释 : 描述模块的版本、功能、开发者、修改日期
  • 引入模块

    • 绝对引入方式: import 导入

      • 导入三个路径
        1. 系统的 sys.path 路径
        2. 环境变量 PythonPATH 路径 [通常没有配置]
        3. 当前文件夹
      • 基本导入 [最常用]
        • 语法 : import 模块
      • 别名引入
        • 语法 : import 模块 as 别名
      • 直接引用模块内容 [不推荐]
        • 语法 : from 模块 import 变量/函数
    • 相对引入方式 (对于大型项目中,绝对路径引入可能出现错误,命名重复,相对引入更加精确)

      • 命令的路径表示
        • . : : 当前文件夹
        • .. : : 上一级文件夹
      • 模块的相对引入
        • 相对引入基本语法 [常用]
          • 当前文件下引用: from . import 模块
          • 相对引入别名语法 : from . import 模块 as 别名
          • 相对引入具体数据 [不推荐] : from .模块 import 变量/函数

  • 包 (Package) : 程序包的简称,通过文件夹管理 Python 模块
    • 标准程序包 : 包含一个 __init__.py 模块 (包声明模块,可以为空)

    • 绝对引入

      • 绝对引入 [推荐]
        • 语法 : from 包 import 具体模块
      • 别名引入 [推荐]
        • 语法 : from 包 import 具体模块 as 别名
      • 直接引入 [了解] 自动执行指定包中 __init__.py 文件
        • 语法 : from . import 模块
      • 偷懒引入
        • 语法 : from 模块 import *
    • 相对引入

      • 相对引入
        • from . import 模块
      • 相对引入 |
        • from .包 import 模块
    • __name__ (当前文件名) : 如果当前文件被当做模块使用,判断是否允许被执行 if __name__ == "main": 代码

内置模块

  • random 模块 (随机模块)

    • 随机小数

      • random() : 产生 0-1 之间的随机小数
      • uniform(a, b) : 指定范围随机小数
    • 随机整数

      • randint(a, b) : 指定范围随机整数,包含开头结尾

      • randrange(start, stop, [step]) : start, stop 范围内间隔指定步长 (step) 的整数,包含开头不包含结尾

      • 随机选择一个数据

        • random.choice(lst) : 随机返回可迭代序列的一个数据

          # from random import choice
          import random
          lst = [1,2,3,4,5]
          random.choice(lst)
          # choice(lst)
          
        
        
    • 打乱

      • random.shuffle(可迭代序列) : 打乱列表顺序

Back | FazBrowse Home | New Git URL