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的…

CentOS7 安装和使用Docker

文章目录 前言一、Docker的主要优势二、安装前必读三、安装Docker的详细步骤1. 安装需要的软件包2. 设置仓库3. 安装Docker方式一 使用官方安装脚本自动安装方式二 选择版本并安装4. Docker运行操作4.1 启动4.2 关闭4.3 运行状态4.4 开机自启四、在没有Sudo的情况下执行Docker命…

软件工程(双语)

教材《软件工程 实践者的研究方法》 双语教学&#xff0c;但目前感觉都是在讲没用的 ”过程决定质量&#xff0c;复用决定效率” 介绍 软工的本质 程序数据结构算法 软件程序文档&#xff08;需求、模型、说明书&#xff09; 软件应用&#xff1a; 系统软件 应用 工程/科学…

Spring Cloud Gateway 中GET请求能正常访问,POST请求出现Unable to handle DataBuffer

报错信息如下&#xff1a; java.lang.IllegalArgumentException: Unable to handle DataBuffer of type class org.springframework.http.server.reactive.UndertowServerHttpRequest$UndertowDataBufferat org.springframework.cloud.gateway.filter.NettyRoutingFilter.getB…

代码随想录笔记|C++数据结构与算法学习笔记-字符串(二)|28. 实现 strStr()、459.重复的子字符串、KMP算法

文章目录 卡码网.右旋字符串28. 实现 strStr()KMP算法(理论)KMP算法(代码)C代码 459.重复的子字符串暴力解法移动匹配KMP解法 卡码网.右旋字符串 卡码网题目链接 略 28. 实现 strStr() 力扣题目链接 文字链接&#xff1a;28. 实现 strStr() 视频链接&#xff1a;帮你把KMP算法…

JAVA刷题 字符操作串各种方法总结(随时更新)

写在前面 JAVA万能头&#xff1a; import java.io.*; import java.util.*;JAVA字符串方法参数操作 谨记【左闭右开】原则 一、substring()方法 两个参数&#xff1a; 字符串.substring(参数1&#xff0c;参数2); 参数1&#xff1a;字符串截取的起始下标&#xff0c;非负的整…

CentOS yum安装MongoDB的详细教程

一、准备工作 打开终端或SSH会话&#xff0c;并使用root或具有管理员权限的用户登录到CentOS服务器。 二、添加MongoDB的源 执行以下命令添加MongoDB的存储库 sudo vi /etc/yum.repos.d/mongodb-org.repo 在编辑器中&#xff0c;复制并粘贴以下内容 [mongodb-org-6.0] name…

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

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

GEE学习——初学者如何下载指定区域的Sentinel-2影像

简介 初学者如何下载指定区域的Sentinel-2影像? 初学者可以按照以下步骤利用Google Earth Engine(GEE)下载指定区域的Sentinel-2影像: 登录GEE账号并打开代码编辑器。代码编辑器位于GEE主页左上角的"Code Editor"按钮。 在代码编辑器中,点击左上角的"App…

自定义高亮文字的textview,匹配关键字词高亮,匹配可拆分的字词高亮

自定义高亮文字的textview&#xff0c;匹配关键字词高亮&#xff0c;匹配可拆分的字词高亮 import android.graphics.Color; import android.text.SpannableString; import android.text.Spanned; import android.text.style.ForegroundColorSpan;import java.util.regex.Match…

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应用中必…

蓝桥算法练习系统—卡勒沃夫之弱水路三千(提高型)(拓扑排序)

问题描述 锦瑟年华谁与度 莫问情归处 只影向斜阳 剑吼西风 欲把春留驻   天涯芳草无归路 回首花无数 解语自销魂 弱袂萦春 尘缘不相误   ......   在卡勒沃夫充满文学杀伤力的声音中&#xff0c;身处紫荆2号楼202B的四位远近高低各不同的室友纷纷回忆起了各自波澜起伏的过…

【合合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 可以用来触发内存的追踪捕捉或者外部仪器的行为,反之亦然。这种…

java项目的文件结构

java项目的文件结构 commomconfigcontorlledtoentity 在一个典型的 Java 项目中&#xff0c;通常会遵循一定的文件结构约定&#xff0c; 以下是一个常见的 Java 项目文件结构示例&#xff1a;/YourProjectName/src/main/java/com/example/projectMain.java/resourcesconfig.pro…

【华大 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 ​编辑…

AWS ECS安全更新及自动化应对方案

AWS发布了一些重要的安全补丁,旨在修复ECS中发现的一些漏洞和问题。这些更新涉及多个方面,包括服务配置、任务定义等。为了确保我们的应用程序和基础设施的安全性,我们有必要及时采纳这些更新。 在本文中,我将分享一段Python代码,它利用AWS SDK(Boto3)与ECS进行交互,自动强制为…