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
相关文章
|
21天前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
109 68
|
24天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
47 18
|
16天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
43 8
|
20天前
|
安全
Python-打印99乘法表的两种方法
本文详细介绍了两种实现99乘法表的方法:使用`while`循环和`for`循环。每种方法都包括了步骤解析、代码演示及优缺点分析。文章旨在帮助编程初学者理解和掌握循环结构的应用,内容通俗易懂,适合编程新手阅读。博主表示欢迎读者反馈,共同进步。
|
23天前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
31 9
|
25天前
|
Python
Python中的函数
Python中的函数
38 8
|
26天前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
35 3
|
4月前
|
监控 Java 数据处理
Python内存管理:引用计数与垃圾回收
Python内存管理:引用计数与垃圾回收
52 0
|
7月前
|
存储 Java 程序员
【Python 的内存管理机制专栏】深入解析 Python 的内存管理机制:从变量到垃圾回收
【5月更文挑战第18天】Python内存管理关乎程序性能与稳定性,包括变量存储和垃圾回收。变量存储时,如`x = 10`,`x`指向内存中值的引用。垃圾回收通过引用计数自动回收无引用对象,防止内存泄漏。了解此机制可优化内存使用,避免循环引用等问题,提升程序效率和稳定性。深入学习内存管理对成为优秀Python程序员至关重要。
71 5
【Python 的内存管理机制专栏】深入解析 Python 的内存管理机制:从变量到垃圾回收
|
7月前
|
监控 算法 Java
Python内存管理与垃圾回收机制
【5月更文挑战第12天】了解Python内存管理与垃圾回收对编写高效稳定程序至关重要。Python自动管理内存,使用`malloc()`和`free()`分配和释放。引用计数跟踪对象引用,当引用计数为零时对象销毁。垃圾回收处理循环引用,采用分代回收算法。优化技巧包括避免循环引用、显式释放对象、使用生成器和迭代器。理解这些机制有助于避免内存泄漏,提高性能。通过示例代码,学习如何在实践中应用内存管理最佳实践和高级优化技巧,以及如何调试和诊断内存问题。在并发和异步编程中,需注意线程安全和异步内存管理。掌握这些知识能提升Python编程的效率和质量。