python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法

简介: python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法

函数的参数传递

可变对象和不可变对象:

不可变对象(number,string,tuple):”引用传递“,该对象的值不能发生改变。

数据类举例:

def add(num):
    num=num+2
    return num
number1=10
number2=add(number1)#number1作为实参引用传递,该变量的值本身没有发生变化
print(number1)
print(number2)
10
12

字符串类型举例:

def add(num):
    num=num+"world"
    return num
string="hello"
string2=add(string)#string作为实参引用传递,该变量的值本身没有发生变化
print(string)#函数调用后原字符串的值没有改变
print(string2)
hello
helloworld

元组类型举例:

def add(num):
    num=num+(1,5,6)
    return num
tuple1=(12,23,45)
tuple2=add(tuple1)#tuple1作为实参引用传递,该变量的值本身没有发生变化
print(tuple1)
print(tuple2)
(12, 23, 45)
(12, 23, 45, 1, 5, 6)

可变对象(字典,列表,集合):“值传递”,该对象的值会发生变化。

列表为例:

def change(num):
    num.append(0)
li = [] #定义一个空列表li
print(li)
change(li) #把li作为实参传递到函数体,传递过去变量值
print(li)#列表li的值已经发生变化
[]
[0]

字典为例:

def dict_s(dict1):
    dict1["color"]="red"
dict1={"名称":"太阳"}
print(dict1)
dict_s(dict1)
print(dict1)
{'名称': '太阳'}
{'名称': '太阳', 'color': 'red'}

集合为例:

def set(set1):
    set1.add("python")
set1={"hello","world"}
print(set1)
set(set1)
print(set1)
{'world', 'hello'}
{'world', 'hello', 'python'}
查看变量内存地址:

为了提高内存利用效率,对于不大于256的整数,python会将具有相同值的整数对象给予相同的内存地址

举例:

a,b=10,20
print(id(a),id(b))#变量值相同,内存相同,即使变量名不相同
a=b=10
print(id(a),id(b))
c=50
print(id(c))
b=c
print(id(b),id(c))
140731941263296 140731941263616
140731941263296 140731941263296
140731941264576
140731941264576 140731941264576
相关文章
|
1天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
8天前
|
存储 Python 容器
python之变量的使用
Python 中变量是对象的引用,赋值即为指向内存中对象。创建对象时,解释器分配内存,引用计数管理内存回收。Python 是动态类型语言,变量类型在运行时确定。对象分为可变与不可变,前者可修改内部状态,后者则不行。命名空间管理变量作用域,确保不同区域的变量独立。
|
1月前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
16 0
|
2月前
|
存储 监控 算法
深入探索Java虚拟机(JVM)的内存管理机制
本文旨在为读者提供对Java虚拟机(JVM)内存管理机制的深入理解。通过详细解析JVM的内存结构、垃圾回收算法以及性能优化策略,本文不仅揭示了Java程序高效运行背后的原理,还为开发者提供了优化应用程序性能的实用技巧。不同于常规摘要仅概述文章大意,本文摘要将简要介绍JVM内存管理的关键点,为读者提供一个清晰的学习路线图。
|
3月前
|
Java
JVM内存参数
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80
|
3月前
|
Java
JVM运行时数据区(内存结构)
1)虚拟机栈:每次调用方法都会在虚拟机栈中产生一个栈帧,每个栈帧中都有方法的参数、局部变量、方法出口等信息,方法执行完毕后释放栈帧 (2)本地方法栈:为native修饰的本地方法提供的空间,在HotSpot中与虚拟机合二为一 (3)程序计数器:保存指令执行的地址,方便线程切回后能继续执行代码
38 3
|
3月前
|
存储 缓存 监控
Elasticsearch集群JVM调优堆外内存
Elasticsearch集群JVM调优堆外内存
73 1
|
3月前
|
缓存 Prometheus 监控
Elasticsearch集群JVM调优设置合适的堆内存大小
Elasticsearch集群JVM调优设置合适的堆内存大小
652 1
|
3月前
|
Arthas 监控 Java
JVM进阶调优系列(9)大厂面试官:内存溢出几种?能否现场演示一下?| 面试就那点事
本文介绍了JVM内存溢出(OOM)的四种类型:堆内存、栈内存、元数据区和直接内存溢出。每种类型通过示例代码演示了如何触发OOM,并分析了其原因。文章还提供了如何使用JVM命令工具(如jmap、jhat、GCeasy、Arthas等)分析和定位内存溢出问题的方法。最后,强调了合理设置JVM参数和及时回收内存的重要性。

推荐镜像

更多