如上代码,我们传入的是形参,在函数中修改形参是不会改变原先的值的,这是因为函数运行时候会先进行压栈,运行过程中会产线局部信息等,恰恰好,我们传入的形参就是该类型的值,所以运行后会出栈,出栈后函数所在的内存也会被销毁,所以函数内的局部变量随着出栈也被销毁了。所以直接修改形参无效。 以上这个就是值传递。
在编程语言中,值传递(pass by value)和引用传递(pass by reference)是两个重要的概念。它们涉及到变量在函数调用中的传递方式,对于理解函数调用和参数传递的机制至关重要。在本文中,我们将深入探讨 Python 中的值传递和引用传递,并通过代码示例进行说明。
函数参数的传递,本质上就是调用函数和被调用函数发生的信息交换。 参数传递机制主要有两种:传值(pass-by-value)和传引用(pass-by-reference)。 通常来说,在传值过程中,被调用函数的形式参数(简称形参)作为被调用函数的局部变量,即在堆栈中重新开辟一块内存空间,用来存放由主调用函数放进来的实际参数(简称实参)值...
Python 值传递和引用传递是根据实际参数的类型不同进行区分的,如下所示: - 值传递:指的是实参类型为不可变类型(数字、字符串、元组); - 引用传递(或叫地址传递):指的是实参类型为可变类型(列表,字典,set 集合)。 2.2 值传递和引用传递的区别 值传递和引用传递的区别如下所示: - 函数参数进行值传递后,若形参...
函数名可以像变量一样被传递 # 变量可以被传递 name = 'jason' x = name print(x) # jason print(id(name), id(x)) # 3085464224688 3085464224688 # 尝试函数像变量一样被传递 def func(): print('from func') print(func) # <function func at 0x0000016E5E062E18> ...
Python是不允许程序员选择采用传值还是传址的。Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传址的一种综合。 如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于传址。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用(其实也...
# 函数的定义 # def 函数名(参数列表):0-n 个 # 代码块 def printInfo(): ''' 这个函数是用来打印个人信息的 是对小张信息显示的组合 :return: ''' # 函数代码块 print('小张的身高是%f' % 1.73) print('小张的体重是%f' % 160) print('小张的爱好是%s' % '唱歌') ...
尽管在append_text函数内拼接了字符串 ,但original_text保持原样,证明了字符串作为不可变对象,在传递过程中遵循值传递的原则。 2.2 Python中的引用传递现象 2.2.1 可变数据类型探索 切换到可变数据类型,如列表或字典 ,情况就大不相同了。这里,Python表现出引用传递的特征。当将这类对象传递给函数 ,实际上是传递了对...
明白了这个概念,那么我们可以说Python中函数参数的传递是传递的变量的值,即就是变量所指向的对象的地址。 一般的,我们有下面的规律: 1. 不可变对象作为函数参数,相当于C系语言的值传递。 2. 可变对象作为函数参数,相当于C系语言的引用传递。 但是,其实只要我们内心记得:参数传递的是变量所指向的对象的地址就行,...
Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。 引用传参一: >>> a = 100#这里的a是不可变类型>>> deftest(a): ... a+=a#这个式子有两层含义:1.这里可能是重新定义一个新的...