Day 12 python学习笔记

news2024/12/26 11:47:35

模块


内置模块

sys模块

概述:Python 的 sys 模块提供访问解释器使用或维护的变量,和与解释器进行交互的函数。通俗来讲,sys 模块为程序与 Python 解释器的交互,提供了一系列的函数和变量,用于操控 Python 运行时的环境

sys.argv 

sys.argv :实现从程序外部向程序传递参数

sys.argv 变量是一个包含了命令行参数的字符串列表,利用命令行向程序传递参数。其中,脚本的名称总是 sys.argv 列表的第一个参数。

import sys
print(sys.argv[0])   #sys.argv[0]表示代码本身的文件路径
print("命令行参数如下:")
for i in sys.argv:
    print(i)
 
命令行输入参数如下:
D:\st13\python\1.20\python lx.py Welcome to Xian
 
运行结果:
lx.py                #sys.argv[0]
命令行参数如下:
lx.py
Welcome
to
Xian

sys.copyright

sys.copyright           包含 Python 解释器有关的版权信息的字符串

>>> import sys
>>> sys.copyright
'Copyright (c) 2001-2022 Python Software Foundation.\nAll Rights Reserved
.\n\nCopyright (c) 2000 BeOpen.com.\nAll Rights Reserved
.\n\nCopyright (c) 1995-2001 Corporation for National Research Initiatives
.\nAll Rights Reserved.\n\nCopyright (c) 1991-1995 Stichting 
Mathematisch Centrum, Amsterdam.\nAll Rights Reserved.'
>>>

sys.exit([arg])  

sys.exit([arg])  : 一般情况下执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用 sys.exit() 函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对 sys.exit() 的调用。(0是正常退出,其他为异常)当然也可以用字符串参数,表示错误不成功的报错信息。

下面的例子,首先打印 'Hello',执行完 sys.exit(1),执行 except 语句,将 '中途退出' 作为参数传递给函数 exitfunc(),然后将 '中途退出' 打印出来,程序正常退出,不执行后面的 print("Welcome") 语句

import sys
def exitfunc(value):
    print(value)
    sys.exit(0)
print("Hello")
try:
    sys.exit(1)
except SystemExit as value:
    exitfunc('中途退出')   
print("Welcome")
 
运行结果:
Hello
中途退出

或者在终端上退出python解释器

>>> sys.exit()

C:\Users\朱俊杰>

sys.getrecursionlimit()

  • 返回当前递归的限制也就是Python解释器堆栈最大深度的值。
  • 该限制可防止无限递归导致C堆栈溢出和Python崩溃。它可以通过setrecursionlimit()设置。
>>> sys.getrecursionlimit()
1000

sys.setrecursionlimit(<limit>)

  • 设置Python解释器的堆栈最大深度为<limit>。

  • 该限制可防止无限递归导致C堆栈溢出和Python崩溃。

  • 最高可能的限制取决于平台

>>> sys.setrecursionlimit(2000)
>>> sys.getrecursionlimit()
2000

sys.getrefcount(<object>)

  • 获取引用数量 引用计数的精确分析可能受到一些内部因素的影响,通常情况下你只需要关注相对引用的变化,而不必过于关注具体的引用次数。
  • 返回<object>的引用次数。
  • 引用次数会比期望值值多一个,因为它包含getrefcount()参数的临时引用。
>>> class Test():
>>>     pass
>>> t = Test()
>>> sys.getrefcount(t)  # t本身是Test,所以被引用了一次。      
2

引出:

小整数对象池:python为了让程序简单化,运行更加迅速,在python解释器加载的那一刻将一些常用的数字创建好(范围:[-5,256])

  1. 范围内的数字称为小整数
  2. 这个范围称为小整数对象池
>>> a = [1,2,3,4]
>>> b = [1,2,3,4]
>>> id(a)
2312403015936
>>> id(b)
2312403230080    #尽管内容相同,但不同变量地址不同
>>> c = 5
>>> d = 5
>>> id(c)
2312401846640
>>> id(d)
2312401846640   #证明5是小整数对象池里的(常用)
>>> e = -10
>>> f = -10
>>> id(e)
2312402870448
>>> id(f)
2312402870704   #证明-10不是小整数对象池里的(不常用)
>>>

字符串驻留机制(Intern机制):创建普通字符串(不含空格等特殊字符)时打开,不重复创建字符串地址

>>> a = "love"
>>> b = "love"   #普通字符串
>>> id(a)
2312403517808
>>> id(b)
2312403517808
>>> c = "l love you"
>>> d = "l love you"  #字符串内含空格等特殊字符,不开启字符串驻留机制
>>> id(c)
2312403517872
>>> id(d)
2312403517936
>>>

引用计数机制:python中为了知道引用我当前对象变量的个数,在每一个对象当中会存在一块小小的空间,里面存放着引用计数

优点:

  1. 简单
  2. 实时性

缺点:

  1. 消耗内存(循环引用的话计数永远不为0,即不会释放)
例:
[1,2,3]   空间存在一个数据
引用计数机制开辟一个小空间记录这个数据被引用的次数
[1,2,3]   0(被引用次数为0)
a = [1,2,3]   1(被引用一次)
b = a         2(被引用两次)
b = None      1(被引用一次,切断了b的引用)
a = None      0(没有被引用,切断了a的引用)
当引用计数为0时,证明没人使用,python解释器就会将数据释放出来

计算机垃圾回收机制:代码在内存中运行,函数等会进行弹栈进行内存释放,那么堆如何进行内存释放呢?
java、python、c++不需要程序员自行回收机制,因为对程序员的要求太高,提供复杂的回收算法,其中引用计时法(解决80%问题,缺点,循环引用)看内存有无被其他内存引用,别人指向我,我有用。
循环引用会出现问题------出现标记、清除算法。

sys.path

sys.path:获取指定模块搜索路径的目录名列表,列表中的第一项为当前的工作目录

import sys
print(sys.path)
 
运行结果:
['D:\\st13\\python\\1.20', 'C:\\Python36\\python36.zip', 
'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 
'C:\\Python36\\lib\\site-packages']

sys.getsizeof(<object>, <default>)

  • 返回<object>的大小。
  • 以字节为单位。
>>> class Test():
>>>     pass
>>> t = Test()
>>> sys.getsizeof(t)
64

sys.hash_info

  • 一个包含哈希参数的元祖。
  • 返回的属性包含:
>>>sys.hash_info
sys.hash_info(width=64, modulus=2305843009213693951, inf=314159, 
nan=0, imag=1000003, algorithm='siphash24', hash_bits=64, 
seed_bits=128, cutoff=0)

time模块

 time.time( )

time.time( ) :返回当前时间的时间戳

#时间戳:指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数

import time
print(time.time())
# 1596760621.3079221

time.ctime([secs])

time.ctime([secs]):返回当前时间

把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数

>>> time.ctime()
'Sun Oct 29 18:26:36 2023'
>>>

time.localtime([secs])

time.localtime([secs]):将一个时间戳转换为当前时区的struct_time(结果为元组)

import time
print(time.localtime())


结果:
time.struct_time(tm_year=2020, tm_mon=8, tm_mday=7, tm_hour=8, 
tm_min=38, tm_sec=57, tm_wday=4, tm_yday=220, tm_isdst=0)

time.strftime(格式,时间元组)

time.strftime(格式,时间元组) :将时间元组换一种格式(时间字符串)打印出来

如果时间元组未指定,则默认传入time.localtime()

%Y   四位的年

%y   两位的年

%m  月

%d   日

%H   时

%M  分

%S  秒

%X = %H:%M:%S

例:打印格式为:2023/10/21   11:11:11
>>> time.strftime("%Y/%m/%d %H:%M:%S",time.localtime())
'2023/10/29 18:39:57'
>>>
>>> time.strftime("%Y/%m/%d %H:%M:%S")  
'2023/10/29 18:42:09'
>>>

time.strptime(string[, format])

time.strptime(string[, format]): 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y" 

time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X')  #要一一对应
Output: time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, 
tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)

time.mktime(t)

time.mktime(t):将一个struct_time(时间元组)转化为时间戳

time.mktime(time.localtime())
#Output: 1634864031.0

time.sleep(secs)

time.sleep(secs):线程推迟指定的时间运行。单位为秒

import time
time.sleep(2)
print("我执行了...")
# 线程推迟2秒后执行

datetime模块

datetime.datetime模块

datetime.now( )

datetime.now( ) :返回当前时间(注意这是datetime.datetime里的方法)

>>> import datetime
>>> datetime.now()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'datetime' has no attribute 'now'
>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2023, 10, 29, 18, 58, 18, 486190)
>>>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1147669.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多输入多输出 | Matlab实现k-means-ELM(k均值聚类结合极限学习机)多输入多输出组合预测

多输入多输出 | Matlab实现k-means-ELM&#xff08;k均值聚类结合极限学习机&#xff09;多输入多输出组合预测 目录 多输入多输出 | Matlab实现k-means-ELM&#xff08;k均值聚类结合极限学习机&#xff09;多输入多输出组合预测预测效果基本描述程序设计参考资料 预测效果 基…

lazarus开发:提升sqlite数据插入速度

目录 1 前言 2 优化数据容器 3 开启事务插入数据 4 其他方面优化 1 前言 近期有一个需求是向数据库中插入excel文件中的10万多条数据&#xff0c;接近70个字段。最初整个插入数据时间是大约40分钟&#xff0c;经过优化调整后&#xff0c;大幅优化为大约5分钟。这里简单介绍…

CV计算机视觉每日开源代码Paper with code速览-2023.10.27

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构&#xff1a;Transformer】&#xff08;Ne…

Jetpack:020-Jetpack导航示例:底部导航栏

文章目录 1. 概念介绍2. 使用方法3. 代码与分析3.1 示例代码3.2 代码分析 4. 内容总结 我们在上一章回中介绍了Jetpack中导航相关的内容&#xff0c;本章回中主要介绍 导航的综合示例&#xff1a;底部导航栏。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xff0…

2-多媒体数据压缩国际标准-Part3

文章目录 视频压缩的国际标准MPEG-1&MPEG-2/H.262视频标准MPEG-4 AVC/H.264视频标准H.264编码框架概述H.264视频编码的技术创新点 H.265/HEVC视频标准HEVC性能与编解码框架概述Quadtree-based coding structureDeblocking & SAO FilterHEVC各模块运算量 视频压缩的国际…

leetcode-哈希表

1. 理论 从哈希表的概念、哈希碰撞、哈希表的三种实现方式进行学习 哈希表&#xff1a;用来快速判断一个元素是否出现集合里。也就是查值就能快速判断&#xff0c;O&#xff08;1&#xff09;复杂度&#xff1b; 哈希碰撞&#xff1a;拉链法&#xff0c;线性探测法等。只是一种…

leetcode 1353. 最多可以参加的会议数目

给你一个数组 events&#xff0c;其中 events[i] [startDayi, endDayi] &#xff0c;表示会议 i 开始于 startDayi &#xff0c;结束于 endDayi 。 你可以在满足 startDayi < d < endDayi 中的任意一天 d 参加会议 i 。注意&#xff0c;一天只能参加一个会议。 请你返回…

面试测试工程师一般问什么问题?

面试和项目一起&#xff0c;是自学路上的两大拦路虎。面试测试工程师一般会被问什么问题&#xff0c;总结下来一般是下面这4类&#xff1a; 1.做好自我介绍 2.项目相关问题 3.技术相关问题 4.人事相关问题 接下来&#xff0c;主要从以上四个方向分别展开介绍。为了让大家更有获…

【多线程面试题十三】、说一说synchronized与Lock的区别

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;说一说synchronized与Lo…

使用Python获取建筑网站数据,进行可视化分析,并实现网站JS解密

哈喽兄弟们&#xff0c;今天来实现一下建筑市场公共服务平台的数据采集&#xff0c;顺便实现一下网站的JS解密。 话不多说&#xff0c;我们直接开始今天的内容。 首先我们需要准备这些 环境使用 Python 3.8Pycharm 模块使用 requests --> pip install requestsexecjs -…

scratch图书的ISBN码校验 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch图书的ISBN码校验 一、题目要求 1、准备工作 2、功能实现 二、案例分析

10 MIT线性代数-四个基本子空间 four fundamental subspaces

1. 四个子空间 Four subspaces (mxn) 列空间 Column space C(A) in 零空间Nullspace N(A) in 行空间Row space all combs of rows all combs of columns of AT C(AT) in 左零空间Left nullspace Nullspace of AT N(AT) left nullspace of A in 2. 基和维数 Basis&…

【Qt之QLocale】使用

描述 QLocale类可以在多种语言之间进行数字和字符串的转换。 QLocale类在构造函数中使用语言/国家对进行初始化&#xff0c;并提供类似于QString中的数字转字符串和字符串转数字的转换函数。 示例&#xff1a; QLocale egyptian(QLocale::Arabic, QLocale::Egypt);QString s1 …

分布式:一文吃透分布式事务和seata事务

目录 一、事务基础概念二、分布式事务概念什么是分布式事务分布式事务场景CAP定理CAP理论理解CAPCAP的应用 BASE定理强一致性和最终一致性BASE理论 分布式事务分类刚性事务柔性事务 三、分布式事务解决方案方案汇总XA规范方案1&#xff1a;2PC第一阶段&#xff1a;准备阶段第二…

ubuntu部署个人网盘nextCloud使用docker-compose方式

概述 当下各大网盘的容量都是有限制的&#xff0c;而且xx云不开会员网速就拉跨。 所以就想搭建一个自己的盘&#xff0c;并且可以控制用户的权限分组&#xff1b; nextCloud就很合适 我这边都是自己用偶尔给其他人使用下&#xff0c;所以直接docker部署了。 ubuntu版本&…

【面试经典150 | 栈】逆波兰表达式求值

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;栈方法二&#xff1a;使用数组模拟栈 知识点拨两个概念中缀表达式转后缀表达式后缀表达式计算四则运算表达式例题 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文…

时序预测 | Python实现ARIMA-LSTM差分自回归移动平均模型结合长短期记忆神经网络时间序列预测

时序预测 | Python实现ARIMA-LSTM差分自回归移动平均模型结合长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-LSTM差分自回归移动平均模型结合长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Python实现ARIM…

闭包的理解?一般使用场景

是什么 一个函数和对其周围状态(词法环境)的引用捆绑在一起(函数被引用包围)&#xff0c;这样的组合我们称之为闭包 也就是说&#xff0c;闭包让你可以在一个内层函数中访问到其外层函数的作用域 &#x1f356;在 JavaScript中&#xff0c;每当创建一个函数&#xff0c;闭包…

Java SE 学习笔记(十七)—— 单元测试、反射

目录 1 单元测试1.1 单元测试概述1.2 单元测试快速入门1.3 JUnit 常用注解 2 反射2.1 反射概述2.2 获取类对象2.3 获取构造器对象2.4 获取成员变量对象2.5 获取常用方法对象2.6 反射的作用2.6.1 绕过编译阶段为集合添加数据2.6.2 通用框架的底层原理 1 单元测试 1.1 单元测试概…

Java字节码创建对象指令

接上节。 示例代码&#xff1a; package com.lkl.jvmDemo;public class HelloByteCode {public static void main(String[] args) {HelloByteCode obj new HelloByteCode();} }查看字节码清单javap -c -verbose HelloByteCode Classfile /XXX/com/lkl/jvmDemo/HelloByteCod…