python知识点总结(七)

在这里插入图片描述


python知识点总结七

  • 1、堆和栈的区别
  • 2、如何在局部修改全局的变量
    • a、计算结果
    • b、计算结果
  • 3、如何修改一个enclosing变量
  • 4、关于值传递还是地址传值
  • 5、布尔类型
  • 6、逻辑运算
  • 7、字符串切片操作
  • 8、取整、取余、除数
  • 9、变量赋值
  • 10、字符串与数字相乘
  • 11、整型、浮点型、字符型之间相互转换
  • 12、关于*args和**kwargs
  • 13、位运算符
  • 14、计算结果

1、堆和栈的区别

栈(stack):

  1. 静态分配:栈是静态分配内存空间的区域,程序在运行时会自动分配和释放栈内存。

  2. 内存空间有限:栈的内存空间有限,大小受限于操作系统的设定。栈一般用于存储函数调用时的局部变量和函数调用信息。

  3. 内存分配由编译器管理:栈内存的分配和释放由编译器自动完成,不需要程序员手动干预。

  4. 内存分配的时间开销较小:栈内存的分配和释放是由编译器自动完成的,效率高,不会涉及内存管理算法的处理。

堆(Heap):

  1. 动态分配:堆是动态分配内存空间的区域,程序员可以手动申请和释放堆内存。

  2. 内存空间较大:堆的内存空间较大,可以存储动态分配的大量数据。

  3. 内存分配由程序员控制:程序员需要手动管理堆内存的分配和释放,如果分配了内存但没有释放,可能造成内存泄漏。

  4. 内存分配的时间开销较大:堆内存的动态分配和释放需要进行内存管理算法的处理,会比较耗时。

2、如何在局部修改全局的变量

a、计算结果

x = 1
print(id(x))  # todo 66666def foo():x = 10print(id(x))  # todo 88888foo()
print(id(x))  # todo 66666
print(x)  # todo 1

b、计算结果

x = 1
print(id(x))      # todo 66666def foo():global xprint(id(x))  # todo 66666x = 10print(id(x))  # todo 88888foo()
print(id(x))      # todo 88888
print(x)          # todo 10

3、如何修改一个enclosing变量

x = 1
def foo1():x = 10print(id(x))            # todo 6666def bar():nonlocal xprint(id(x))        # todo 6666x = 100print(id(x))        # todo 8888bar()print(x)                # todo 100f = foo1()
print(x)					# 1

4、关于值传递还是地址传值

def foo5(x):print(id(x))    # 2256896027216x = 20print(id(x))    # 1838202907536x = 10
print(id(x))        # 2256896027216
foo5(x)print(x)            # 10
print(id(x))        # 1838202907216      
def foo6(x):print(id(x))  # 2256896027216x.append(4)print(id(x))  # 2256896027216x = [1, 2, 3]
print(id(x))        # 2256896027216
foo6(x)
print(x)   
def foo7(x):print(id(x))  # 2638103028288x = 1000print(id(x))  # 重新赋值了  2638102718416x = [1, 2, 3]
print(id(x))  # 2638103028288
foo7(x)
print(x)  # [1, 2, 3]
lst = [33, 44, 55, 66]print(lst, id(lst))  #todo 2012092602048
lst.append(77)
print(lst, id(lst))  #todo [33, 44, 55, 66, 77] 2012092602048lst.extend([11, 22])
print(lst, id(lst))  #todo [33, 44, 55, 66, 77, 11, 22] 2012092602048

如果是不可变对象,在函数体的修改不会影响到实际参数的值,arg1的修改为100,不会影响到n1的值
如果是可变对象,在函数体内的修改回影响到实际参数的值,arg2的修改,append(10),回影响到n2的值

5、布尔类型

零值:每一个数据类型都有一个布尔值为False的对象

print(bool(0))      #整型
print(bool(0.0))    #浮点型print(bool("False"))
print(bool("0"))
print(bool("-1"))
print(bool({}))
print(bool([]))
print(bool(()))
print(bool(set()))

执行结果

False
False
True
True
True
False
False
False
False

在这里插入图片描述

6、逻辑运算

逻辑运算:and、or、not
真与真 真 ——》结果有假则假
真与假 假
假与真 假
假与假 假

真或真 真 ——》结果有真则为真
真或假 真
假或真 真
假或假 假

非真即假
非假即真
print(1 and 2) #2
print(1 or 2) #1
print(0 or 3) #3

先非 后与 再或

print(0 or 1 and 5)     #todo 5
str = '6>7'
print(eval(str))		False布尔值可以转成整数计算
print(True+1)      # 2
a = None
b = 200
print(a or b)  # 200a = 100
b = 200
print(a or b)  # 100

7、字符串切片操作

s='hello yuan'
print(s[1])
print(s[1:4])       #ell
print(s[1:4:-1])    #todo 空
print(s[-1:-4:1])   #todo 空
print(s[-4:-1:1])   #todo yua
print(s[4:1:-1])    #todo oll
print(s[::-1])    # 倒叙  nauy olleh
print(s[::-2])    # 倒叙  nu le

8、取整、取余、除数

取整:向下取整

print(19 // 3)  #todo 向下取整 6
print(19 / 3)   #todo 除数 6.333333333333333
print(19 % 3)   #todo 取余 1
print(-19 // 3)  # -7
print(-19 % 3)  # -19-(-7)*3=2print(9 // -4)  # todo -3   向下取整   一正一副的整数公式,向下取整
print(-9 // 4)  # todo -3   向下取整print(-8 % 3)  # todo 公式:余数=被除数-除数*商    -8-3*(-3)=1
print(8 % -3)  # todo 8-(-3)*(-3)=-1

9、变量赋值

a = 2
b = a
print(id(a))	# 1924360071504
print(id(b))	# 1924360071504
b += 2			# b开辟了一个新的内存空间
print(b)		# 4
print(a)		# 2print(id(a))	# 1924360071504
print(id(b))	#  1924360071568
m = [1, 2]
n = m
n.append(3)
print(m)            #没有开辟新的内存地址 [1, 2, 3]

当多次赋值之后,变量名会指向新的空间

name='666'
name='888'
print(name)

10、字符串与数字相乘

字符串与数字相乘:相当于字符串拷贝了多少份

print("*"*4)   # ****

字符串与数字相加:报错

print("*" + 8)  #报错 

11、整型、浮点型、字符型之间相互转换

s1='128'
f1=98.7
s2='77.77'
f2=True
s3='hr=ello'
print('-----------int()函数,将其他数据类型转化为整数型-----------------')
print(int(s1))      #todo 128
print(int(f1))      #todo 98  将float转化为int类型:取整数部分,舍去小数部分
#print(int(s2))     #todo 将str转化为int类型,报错,因为字符串为小数串
print(int(f2))      #todo  1
#print(int(s3))     #todo 将str转化为int类型,字符串必须为数字串,而且为整数串
print('-----------float()函数,将其他数据类型转化为浮点型-----------------')
s1 = '128.88'
f1 = '78'
f2 = True
s3 = 'hello'
i = 98
print(float(s1))  # 128.88
print(float(f1))  # 78.0
print(float(f2))  # 1.0
# print(float(s3))   #   字符串中的数据类型如果是非数字类型,则不允许转换
print(float(i))  # 98.0

12、关于*args和**kwargs

def foo2(name, age, *args):print(args)foo2("123", '234', 'sdf')def bar3(path, func, **kwargs):print(kwargs)bar3('login', "login", method="get")

执行结果:

('sdf',)
{'method': 'get'}

13、位运算符

# todo 位运算符:将数据转化为二进制进行计算
print(4 & 8)  # 0   按位与&,同为1时结果为1print(4 | 8)  # 12  按位或|,同为0时结果为0# todo 左移位:高位溢出,低位补0  向左移1位相当于乘以2
# 向左移动1个位置
print(4 << 1)
# 向左移动2个位置
print(4 << 2)
# todo 右移位:高位补0,低位截断   向右移1位相当于除以2
# 向右移动1个位置
print(4 >> 1)
# 向右移动2个位置
print(4 >> 2)

14、计算结果

a = 10
b = 10
print(a == b)  # True
print(a is b)  #todo Truelst1 = [11, 22, 33]
lst2 = [11, 22, 33]
print(lst1 == lst2)  # True
print(lst1 is lst2)  #todo False

在这里插入图片描述

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

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

相关文章

List系列集合:ArrayList、LinkedList --java学习笔记

List系列集合 特点&#xff1a;有序、可重复、有索引 ArrayList&#xff1a;有序、可重复、有索引LinkedList&#xff1a;有序、可重复、有索引 List集合的特有方法 List集合因为支持索引&#xff0c;所以多了很多与索引相关的方法&#xff0c;当然&#xff0c;Collection的…

什么是UI设计?适合做UI设计的软件有哪些?

人们常说 UI 和 UI 设计&#xff0c;但到底什么是 UI 设计&#xff1f;UI 设计的原则是什么&#xff1f;实际上 “UI" 也就是 User Interface&#xff0c;它是用户界面的缩写。一般指用户操作界面&#xff0c;即软件程序、网站或设备的图形部分&#xff0c;用户与之互动。…

MyBatis3源码深度解析(十九)MyBatis日志实现

文章目录 前言第七章 MyBatis日志实现7.1 Java日志体系7.1.1 常用日志框架7.1.2 Java日志发展史7.1.3 日志接口与日志实现的绑定 7.2 MyBatis日志实现7.2.1 Log接口7.2.2 LogFactory工厂7.2.3 MyBatis日志自动查找7.2.4 MyBatis日志类型配置 7.3 小结 前言 日志是Java应用中必…

【合合TextIn】深度解析智能文档处理技术与应用

目录 一、智能文档处理介绍 二、文档格式解析 三、图像增强技术解析 四、传统文字识别OCR技术解析 五、深度学习OCR技术解析 六、深度学习版面分析技术解析 七、文档分类 八、信息抽取 九、系统集成&#xff1a;将IDP处理后的数据集成到企业系统 结论 一、智能文档处…

机器学习-06-无监督算法-01-划分聚类Kmeans算法

总结 本系列是机器学习课程的系列课程&#xff0c;主要介绍机器学习中无监督算法&#xff0c;包括划分聚类等。 参考 数据分析实战 | K-means算法——蛋白质消费特征分析 欧洲48国英文名称的来龙去脉及其国旗动画 Kmeans在线动态演示 本门课程的目标 完成一个特定行业的…

如何与手机共享笔记本电脑的互联网?这里提供详细步骤

这篇文章介绍了如何通过将手机变成Wi-Fi热点来与手机共享笔记本电脑的互联网连接。 如何共享笔记本电脑的互联网连接 你可以通过Wi-Fi或有线共享笔记本电脑的数据连接,具体取决于你的设置。 Windows Windows允许你通过ICS共享你的互联网连接。ICS,或称互联网连接共享,是W…

ARM Coresight 系列文章 11.1 -- CoreSight Cortex-M33 CTI 详细介绍】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 文章目录 CTI 的工作原理CTI 主要特点CTI的使用场景CTI 的工作原理 CTI 允许不同的调试和追踪组件之间基于特定事件进行交互。例如,当一个断点被命中时,CTI 可以用来触发内存的追踪捕捉或者外部仪器的行为,反之亦然。这种…

【华大 HC32L110】调用`printf`和串口接收中断的冲突问题解决

华大单片机 HC32L110调用printf和串口接收中断的冲突问题解决&#xff0c;经过查找是官方库 去使能了 串口的接收功能&#xff0c;记录解决问题的过程 目录 1.硬件MCU资料2. printf和串口接收中断的冲突解决3.重新封装 fputc 函数4.查找问题&#xff0c;发现是官方库配置有误5.…

无线局域网——wlan

目录 一.wlan的含义和发展 二.wlan技术带来的挑战 1.企业办公场景多样 2.位置速度的要求 3.安全的要求 4.规范的挑战 三.家庭和企业不同的部署需求 1.胖AP模式组网 2.AC瘦AP模式组网 3.组网模式的不同 四.三层隧道转发实验 1.拓扑 2.AP上线 核心交换机vlan ​编辑…

探索海外市场舆情:云手机助力企业赢得全球竞争

在全球化的趋势下&#xff0c;越来越多的企业将目光投向海外市场&#xff0c;迎接着无尽的商机与挑战。然而&#xff0c;随之而来的是境外市场舆情的复杂变化&#xff0c;对企业的声誉和发展带来了潜在风险。如何准确、及时地掌握境外市场的舆情动向&#xff0c;成为了企业必须…

Midjourney发布新特性风格参考

1. 引言 最近&#xff0c;Midjourney 推出了Style Reference V2.0 即功能更加强大的风格参考工具&#xff0c;该工具可以让大家参考其他图像的风格&#xff0c;生成与参考图像风格保持一致&#xff0c;与文本提示词语义内容保持一致的图像。它与图像提示类似&#xff0c;但是只…

Day03-数据库管理(事务管理,用户管理,MySQL8的部分新特性)

文章目录 Day03 数据库管理学习目标1. 事务管理1.1 事务的概念1.2 事务的特性1.3 语法1.4 事务的并发问题1.5 事务隔离级别1.6 设置和查看隔离级别 2 用户管理2.1 创建删除用户2.2 权限管理2.2.1 权限赋予的原则2.2.2 权限赋予2.2.3 权限回收2.2.4 登录管理 3. MySQL8的部分新特…

Java中的I/O讲解(超容易理解)(下篇)

如果想观看更多Java内容 可上我的个人主页关注我&#xff0c;地址子逸爱编程-CSDN博客https://blog.csdn.net/a15766649633?typeblog 使用工具 IntelliJ IDEA Community Edition 2023.1.4 使用语言 Java8 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0…

简易指南:国内ip切换手机软件怎么弄

在网络访问受到地域限制的情况下&#xff0c;使用国内IP切换手机软件可以帮助用户轻松访问被屏蔽的内容&#xff0c;扩展网络体验。以下是虎观代理小二分享的使用国内IP切换手机软件的简易指南。并提供一些注意事项。 如何在手机上使用国内IP切换软件 步骤一&#xff1a;选择I…

idea2023 运行多 springboot 实例

概要 1、修改idea运行多实例&#xff08;本地测试负载&#xff09; 你可能用到其他 1、改造项目缓存token 至redis 支持负载均衡部署 SpringSecurity6.0RedisJWTMP基于token认证功能开发&#xff08;源码级剖析可用于实际生产项目&#xff09;_springsecurity redis管理token…

嵌入式学习第二十九天!(数据结构的概念、单向链表)

数据结构&#xff1a; 1. 定义&#xff1a; 一组用来保存一种或者多种特定关系的数据的集合&#xff08;组织和存储数据&#xff09; 1. 程序设计&#xff1a; 将现实中大量而复杂的问题以特定的数据类型和特定的数据结构存储在内存中&#xff0c;并在此基础上实现某个特定的功…

安装调试kotti_ai:AI+互联网企业级部署应用软件包@riscv+OpenKylin

先上结论&#xff1a;riscvOpenKylin可以安装pyramidkottikotti_ai 但是paddle_serving_client无法安装&#xff0c;项目的AI实现部分需要改用其它方法&#xff0c;比如onnx。最终onnx也没有装成&#xff0c;只好用飞桨自己的推理。 安装kotti pip install kotti 安装kotti和…

postman测试文件上传接口

java里编写一个导入接口&#xff0c;接口的入参就是一个文件&#xff0c;此时接口中使用的接收参数是 用postman测试这个接口时&#xff1a;Body里选择类型是form-data Header中自动修改了Content-Type 如果既要上传文件&#xff0c;又要输入参数可使用如下方式&#xff1a; 此…

训练svm并部署树莓派

训练svm并部署树莓派 开发环境1. 准备数据集2. 训练模型3. 部署模型开发环境 vscode python 3.8 用到的库: scikit-learn==1.3.2 pickle torch pandas matplotlib 1. 准备数据集 数据为xls文件,如下格式 2. 训练模型 文件结构 执行训练 python代码 import pickle &…

递归和递推的区别

目录 1、递推 2、递归 3、结言 递归 递推 1、递推 递推就是说从初值出发后一直运算到所需的结果。 ——从已知到未知。&#xff08;从小到大&#xff09; 举一个简单的例子&#xff1a; 每天能学习一个小时的编程&#xff0c;那么一个月之后可以学到三十小时的编程知识。…