首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python函数如何实际更改参数而不是形参?

在Python中,函数可以通过传递可变对象作为参数来实际更改参数而不仅仅是形参。可变对象包括列表、字典和集合等。当我们将可变对象作为参数传递给函数时,函数内部对该对象的任何更改都会影响到原始对象。

下面是一个示例:

代码语言:txt
复制
def change_list(lst):
    lst.append(4)  # 在函数内部修改列表

my_list = [1, 2, 3]
change_list(my_list)
print(my_list)  # 输出 [1, 2, 3, 4]

在上面的示例中,我们定义了一个函数change_list,它接受一个列表作为参数,并在函数内部修改了该列表。当我们调用change_list函数并传递my_list作为参数时,函数内部的修改会直接影响到my_list

需要注意的是,对于不可变对象(如数字、字符串和元组等),函数无法直接更改参数的值。如果想要实际更改不可变对象的值,可以通过返回修改后的值,并将其赋值给原始变量。

例如:

代码语言:txt
复制
def increment(num):
    return num + 1

my_num = 5
my_num = increment(my_num)
print(my_num)  # 输出 6

在上面的示例中,我们定义了一个函数increment,它接受一个数字作为参数,并返回该数字加1的结果。通过将my_num重新赋值为increment(my_num)的返回值,我们实际上改变了my_num的值。

总结起来,要实际更改参数而不仅仅是形参,可以通过传递可变对象作为参数并在函数内部修改该对象,或者通过返回修改后的值并将其赋值给原始变量来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C语言函数参数详解】——实际参数(实参)&形式参数

这篇文章我们一起学习一下函数参数函数参数分为实参和。 一.什么是实际参数(实参) 首先我们来学习实参,什么是实参呢? 实际参数简称“实参”。...在调用有函数时,函数名后面括号中的参数称为“实参”,是我们真实传给函数参数,实参可以是:常量、变量、表达式、函数等。...() 那什么是形式参数呢?...: 我们如果在函数外部使用函数,这是不可行的。...2.函数调用过程中才实例化(分配内存单元) 函数调用之前,还未创建 函数调用过程中,才被实例化 函数调用结束,生命周期结束,被销毁 三.参与实参的关系 了解了什么是函数和实参,

1.5K10

参数?变量??实参?在 Python 眼里那都不是事。

写在之前 函数参数,我在之前的文章中也提到过,参数这个东西我感觉还是比较有话题的,你可能在某些地方听说过诸如 “”,“实参” and so on...那么这些到底是什么呢?...参数 & 变量 我们用 def 来定义函数函数名后面的括号里如果有变量的话,它们通常被成为 “”;在我们调用的时候,给函数提供的值我们称它为 “实参”,或者叫 “参数” 也是 ok 的。...如果你真的硬着头皮看完了上述的内容,你就会发现里面的一些关键词:参数,变量,,实参,本来我们只是想弄懂参数和变量的的区别,结果又冒出两个别的词,其实根本不需要担心,在学习编程的时候,类似的东西有很多名词...其实在 Python 中,并没有搞得这么复杂,如果你看完上面截图的内容,再来看下面的代码,你就会发现很多事情其实是很明朗的: >>> def add(x): # x 是 ......你看,是不是没有那么复杂,所以名字是什么不是最关键的,最重要的是你要明白在函数名后面的括号里的东西的作用是 “传递对象的引用”。

83920

Python函数参数参数的使用和作用、和实参)

,只能处理固定数值的相加 如何解决?...一句话:在定义函数的时候需要几个参数就把参数放在函数名后面的小括号里,参数参数之间以逗号分隔,在调用函数时就根据定义参数时指定的参数顺序依次传递数据,数据与数据之间以逗号分隔,以上就是参数的定义和调用方式...函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过参数传递 三、和实参 :定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用 实参:调用函数时,小括号中的参数...,是用来把数据传递到函数内部用的 就是形式参数,实参就是实际参数。...以上例子num1和num2是,30和20是实参。 文章借鉴来源:python自学网

2.4K20

Python - 函数之必填参数、缺省参数、可变参数、关键字参数的详细使用

Python函数 必传参数:平时最常用的,必传确定数量的参数 缺省参数:在调用函数时可以传也可以不传,如果不传将使用默认值 可变参数:可变长度参数 关键字参数:长度可变,但是需要以kv对形式传 必填参数和缺省参数的结合...# 必填参数a,缺省参数b def test1(a, b=3): print(a, b) test1(0) test1(0, 1) 执行结果 0 3 0 1 实际函数栗子 str.index...(sub, start=None, end=None) 知识点 声明函数时,当同时存在必填参数和缺省参数的顺序必须是 (必填参数 , 缺省参数),不能缺省参数在前 可变参数 def test2(num...,也可以传很多个值 ,在元组or列表前面加一个 * ,代表将里面的每个元素独立出来,单独作为一个传进去 *(2, 3, 4, 5) 声明函数时,缺省参数可以放在可变参数后面,但是不建议这样写;建议的顺序是...dict ** 不用dict的话也可以直接 的写法,如果和缺省参数重名,若前面没有传值的话,会当成缺省参数传值;若有的话会直接报错 key=value 声明函数时,缺省参数不可以放在可变参数后面 实际函数栗子

3.2K10

Python 函数知识大全

更改(mutable)与不可更改(immutable)对象 在python中,strings, tuples, 和numbers是不可更改的对象, list,dict 等则是可以修改的对象。...不可变类型:变量赋值a=5后再赋值a=10,这里实际是新生成一个int值对象10,再让a指向它,5被丢弃,不是改变a的值,相当于新生成了a。...顾名思义,就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有意义。相当于变量。 什么是实参?顾名思义,实参就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等。...) greet_user('python') # python 是实参 就是在函数名中定义一个,然后在函数调用的时候,给函数名中的传递一个实际参数,这个就变为实参。...匿名函数 python 使用 lambda 来创建匿名函数。 lambda只是一个表达式,函数体比def简单很多。 lambda的主体是一个表达式,不是一个代码块。

87810

Python3 函数

更改(mutable)与不可更改(immutable)对象 在 python 中,strings, tuples, 和 numbers 是不可更改的对象, list,dict 等则是可以修改的对象。...不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它, 5 被丢弃,不是改变 a 的值,相当于新生成了 a。...,和实参指向的是同一个对象(对象 id 相同),在函数内部修改后,指向的是不同的 id。...: 30 ---- 强制位置参数 Python3.8 新增了一个函数语法 / 用来指明函数必须使用指定位置参数,不能使用关键字参数的形式。...在以下的例子中, a 和 b 必须使用指定位置参数,c 或 d 可以是位置或关键字形 e 和 f 要求为关键字形: def f(a, b, /, c, d, *, e, f):

77820

图解python | 函数

(1)可更改(mutable)与不可更改(immutable)对象 在 python 中,strings, tuples, 和 numbers 是不可更改的对象, list,dict 等则是可以修改的对象...不可变类型:变量赋值 a=10 后再赋值 a=5,这里实际是新生成一个 int 值对象 5,再让 a 指向它, 10 被丢弃,不是改变 a 的值,相当于新生成了 a。...,和实参指向的是同一个对象(对象 id 相同),在函数内部修改后,指向的是不同的 id。...("函数外 : ", total) 以上实例输出结果: 函数内 : 30 函数外 : 30 8.强制位置参数 Python3.8+ 新增了一个函数语法 / 用来指明函数必须使用指定位置参数,...在以下的例子中, a 和 b 必须使用指定位置参数,c 或 d 可以是位置或关键字形 e 和 f 要求为关键字形: def f(a, b, /, c, d, *, e, f):

69151

python 引用传递和值传递详解(实参,)

python函数参数是引用传递(不是值传递)。对于不可变类型,因变量不能被修改,所以运算时不会影响到变量本身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量. ? ?...函数需要传递的参数 实参:调用函数时传递的参数 补充知识:python函数方法实参给传值时候的隐形‘陷阱’ 众所周知,在python函数里面参数分为,实参两种。...当然了就是形式参数实参是我们需要给这个函数传入的变量,在我们给实参传入变量之后,调用函数,实参则自动会把数值或则变量赋予,从而通过函数得出我们想要的结果。...既然是由实参赋值传递,所以说的位置顺序至关重要,稍有疏忽,程序可能就会出错。那么下面就来帮大家在初学的时候如何让更好的避开这些隐形的陷阱。...以上这篇python 引用传递和值传递详解(实参,)就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.1K00

Day8.函数那些事儿

#打印这段字符串 #多次调用函数 参数调用 参数分为、实参 函数定义时括号内的参数 实参:函数调用时括号内的参数 相当于变量,实参相当于变量的值 在实际代码中表示如下: #定义时: def...只在函数内部有效 实参: 可以是:常量、变量、表达式、函数 进行函数调用时,实参必须是确定的值 位置参数: 位置函数定义时,从左往右写的参数,比如上面的 a, b , c 位置实参:函数调用时...,它只是一个对象的引用(一个指针),可以指向list类型对象也可以指向string类型对象 可更改(mutable)与不可更改(immutable)对象 在 python 中,strings, tuples..., 和 numbers 是不可更改的对象, list,dict 等则是可以修改的对象。...不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它, 5 被丢弃,不是改变a的值,相当于新生成了a。

1.4K30

奔走相告,Python 3.8.0 正式发布!

有关 3.8 版本功能的更多信息,请参阅 “Python 3.8 新特性” 文档。所有更改的详细信息都可以在更改日志中找到。...仅限位置 新增了一个函数语法 / 用来指明某些函数必须使用仅限位置而非关键字参数的形式。...在下面的例子中, a 和 b 为仅限位置,c 或 d 可以是位置或关键字形 e 或 f 要求为关键字形: def f(a, b, /, c, d, *, e, f): print...x ** y return r if z is None else r%z 另一个用例是在不需要名称时排除关键字参数。...这可以排除如下这种笨拙的调用形式: len(obj= hello ) # The "obj" keyword argument impairs readability 另一个益处是将标记为仅限位置参将允许在未来修改不会破坏客户的代码

47230

Python入门到放弃 | 超简单 跟我学(七)

当调用函数时,用同样的方式提供值。函数定义时括号中的参数叫做调用函数时提供的参数叫实参。...默认参数值 对于某些函数,你可能想让某些是可选的,并在用户没有指定这些的值时,使用默认值。你可以通过默认值来实现这个功能。...那么你可以通过为这些参数命名来给它们赋值,这叫做 关键字参数。我们使用名字(关键字)不是位置来给函数指定实参,虽然前面我们一直这样做。...函数 func 共三个参数。一个没有默认值的参数,以及两个有默认值的参数。 第一种用法 func(3, 7)。 a 得到值 3, b 得到值 7, c 得到默认值 10。...Python 的内置函数中,有一个名为 max 的函数,已经实现了「找到最大值」的功能。应该尽可能使用内置函数不是用上面的 maximum 函数或自己实现的版本。

40540

Python_函数

一、 定义函数的格式: def function_name(参数1,参数2,参数3......): 代码块 二、函数和实参:函数定义时的参数,在函数调用时赋予的参数为实参; 例如:...另外,该种方式除了要求和实参的位置(先后顺序)一 一对应外,还要求实参和的数量完全相同,否则将会报错; 2.关键字参数 场景说明:当函数中的参数较多,且在每次调用时,参数的顺序较多,不方便记忆,...如果在实际使用中发现,百分之七十以上的用户都来自湖北,此时就可以使用默认值,函数定义如下图所示: ?...这样,以后在调用时,如果该用户是来自湖北,就可以对address不进行传;如果该用户不是来自湖北,在进行传,分别如下图所示: ? ?...4.任意多参数 场景说明:在某些复杂的项目中,某些函数参数数量不能事先确定,此时就可以定义成任意多的参数形式,该种模式是参考了位置参数和关键字参数进一步得到的。

52330

2.Python函数的进阶

内容详细 2.1 函数参数 昨天我们从角度,讲了两种参数,一个是位置参数,位置参数主要是实参与从左至右一一对应,一个是默认值参数,默认值参数,如果实参不传,则使用默认参数。...+args,这样设置,那么这个参会将实参所有的位置参数接收,放置在一个元组中,并将这个元组赋值给args这个,这里起到魔法效果的是 * 不是args,a也可以达到刚才效果,但是我们PEP8规范中规定就使用...函数的打散和聚合 聚合 刚才我们研究了,在函数定义时,如果我只定义了一个称为args,那么这一个只能接受几个实参? 是不是只能当做一个位置参数对待?...到目前为止,从的角度我们讲了位置参数,默认值参数,动态参数*args,**kwargs,还差一种参数,需要讲完顺序之后,引出。...先不着急,我们先看看已经讲的这些他的排列顺序是如何的呢? 首先,位置参数,与默认参数他两个的顺序我们昨天已经确定了,位置参数必须在前面,即 :位置参数,默认参数

28520

理解 Python 编程中 *args 与 **kwargs 的妙用

一、形式参数实际参数Python 编程中,理解(形式参数)和实参(实际参数)的概念对于掌握函数的定义和调用至关重要。...下面我将详细解释这两个概念,并通过一个具体的例子来展示它们在实际编程中的应用。 (形式参数是在函数定义时使用的参数名。它们仅仅是标识符,用于在函数体内部引用传递给函数的值。...没有具体的值,它们的值由函数调用时传递的实参决定。可以将视为函数内部使用的变量名,这些变量名将在函数调用时被赋予具体的值。 实参(实际参数) 实参是在函数调用时提供给函数的具体值或变量。...实参:向函数提供了执行操作所需的具体数据或信息。 区别: 定义位置:出现在函数定义中,实参出现在函数调用中。...下面通过一个简单的例子来说明如何实际编程中使用和实参: # 定义一个函数,计算两个数的和 # 这里 x 和 y 是形式参数) def add(x, y): result = x +

20200

Python大神用一道题带你搞定Python函数和实参问题

昨天在Python学习群里有位路人甲问了个Python函数中关于和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂。...不可更改的对象         这个函数的输出值是多少?很多人会回答7,其实程序运行之后,其答案是6,点解呢?         为什么在这里的数值并不改变实参的数值?         ...这里需要给大家普及一个Python中的基础,在python中,string(字符串), tuples(元组), 和number(数值)是不可更改的对象,list(列表),dict(字典)等则是可以修改的对象...可更改的对象         这个函数的输出值是多少?很多人会回答[1,2],其实程序运行之后,其答案是[2,1]。         与第一个栗子刚刚相反,这里的数值调用把实参改变了。...因为本例中参数传递的是列表,其是可更改的对象,在函数内部经过系列赋值变化之后,所以在程序运行之后其输出值产生了变化。         山重水复疑无路,柳暗花明又一村。

66830

Python大神用一道题带你搞定Python函数和实参问题

昨天在Python学习群里有位路人甲问了个Python函数中关于和实参一个很基础的问题,虽然很基础,但是对于很多小白来说不一定简单,反而会被搞得稀里糊涂。...不可更改的对象 这个函数的输出值是多少?很多人会回答7,其实程序运行之后,其答案是6,点解呢? 为什么在这里的数值并不改变实参的数值?...这里需要给大家普及一个Python中的基础,在python中,string(字符串), tuples(元组), 和number(数值)是不可更改的对象,list(列表),dict(字典)等则是可以修改的对象...可更改的对象 这个函数的输出值是多少?很多人会回答[1,2],其实程序运行之后,其答案是[2,1]。 与第一个栗子刚刚相反,这里的数值调用把实参改变了。...因为本例中参数传递的是列表,其是可更改的对象,在函数内部经过系列赋值变化之后,所以在程序运行之后其输出值产生了变化。 山重水复疑无路,柳暗花明又一村。

75610

Python 3.8.0来了!

有关 3.8 版本功能的更多信息,请参阅 “Python 3.8 新特性” 文档。所有更改的详细信息都可以在更改日志中找到。...仅限位置 新增了一个函数语法 / 用来指明某些函数必须使用仅限位置而非关键字参数的形式。...在下面的例子中, a 和 b 为仅限位置,c 或 d 可以是位置或关键字形 e 或 f 要求为关键字形: def f(a, b, /, c, d, *, e, f): print...x ** y return r if z is None else r%z 另一个用例是在不需要名称时排除关键字参数。...这可以排除如下这种笨拙的调用形式: len(obj='hello') # The "obj" keyword argument impairs readability 另一个益处是将标记为仅限位置参将允许在未来修改不会破坏客户的代码

97430
领券