IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python学习总结(四) -> 正文阅读

[Python知识库]python学习总结(四)


1.引用计数法

在这里插入图片描述
注:类似于java,这个系统自动回收垃圾对象,明显有循环引用的弊端。
在这里插入图片描述

  • 代码例子
    import sys
    import psutil
    import os
    import gc
    
    print(gc.get_threshold())
    def showMemSize(tag):
        pid=os.getpid()
        p=psutil.Process(pid)
        info=p.memory_full_info()
        memory=info.uss/1024/1024
        print('{} memory used:{} MB'.format(tag,memory))
        pass
    
    # 验证循环引用的情况
    def func():
        showMemSize('初始化')
        a=[i for i in range(10000000)]
        b=[i for i in range(10000000)]
        a.append(b)
        b.append(a)
        showMemSize('创建列表对象 a b 之后')
        # print(sys.getrefcount(a))
        # print(sys.getrefcount(b))
        # del a
        # del b
        pass
    
    func()
    gc.collect() #手动是释放的
    showMemSize('完成时候的')
    # sys.getrefcount()
    # a=[]
    # print(sys.getrefcount(a)) #两次
    # b=a
    # print(sys.getrefcount(a)) #三次
    # c=b
    # d=b
    # e=c
    # f=e
    # g=d
    # print(sys.getrefcount(a)) #八次
    

2.标记清除、分代收集算法

  • 标记清楚:先标记对象,然后清除垃圾(java的可达性分析)
    在这里插入图片描述

3.小整数和大整数对象池(内存优化)

  • 类似于java的字符串常量池
  • 大整数池和小整数池的区别是:
    1 从结果来看是一样的
    2 大整数池是没有提前的创建好对象,是个空池子,需要我们自己去创建,创建好之后,会把整数对象保存到池子里面,后面都不需要再创建了 直接拿来使用;小整数池是提前将【-5,256】的数据都提前创建好; 字符串的驻留共享机制intern机制
    a=140
    b=140
    print(id(a))
    print(id(a))
    # del a
    # del b
    # c=140
    # print(id(c))
    # biga=100000
    # bigb=100000
    # print(id(biga))
    # print(id(bigb))
    # del biga
    # del bigb
    # bigc=100000
    # print(id(bigc))
    # sa='ab_c'
    # sb='ab_c'
    # sc='ab_c'
    # sd='ab_c'
    

4.规范

  • 缩进:4个空格的缩进
  • 添加注释
  • 命名规范:类–大驼峰法,方法–小驼峰法

5.命令行参数_sys

  • sys模块

    import sys
    import argparse
    print('参数个数为:', len(sys.argv), '个参数.')
    print('参数列表:', str(sys.argv[1:]))
    
  • 执行结果
    在这里插入图片描述

  • 弊端:
    - [在这里插入图片描述](https://img-blog.csdnimg.cn/08256a9eedf940b29443bcb6d38650ab.png)

6.命令行参数_argparse

  • argparse为首选

    # 创建一个解析器对象
    parse=argparse.ArgumentParser(prog='my - 我自己的程序', usage='%(prog)s [options] usage',
                                  description = 'my-编写自定义命令行的文件',epilog = 'my - epilog')
    
    # 添加位置参数【必选参数】
    parse.add_argument('name',type=str, help='你自己的名字')
    parse.add_argument('age',type=str,help='你的年龄')
    
    # 添加可选参数
    # parse.add_argument('-s','--sex', action='append',type=str,help='你的性别')
    # 限定一个范围
    parse.add_argument('-s','--sex',default='男', choices=['男','femal','女','male'],type=str,help='你的性别')
    # print(parse.print_help())
    
    result=parse.parse_args() #开始解析参数
    print(result.name,result.age,result.sex)
    
  • 构造对象的参数说明
    在这里插入图片描述

  • 参数的属性
    在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 12:58:42  更:2021-10-29 13:00:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 22:34:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码