首页
学习
活动
专区
工具
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.形参在函数调用过程中才实例化(分配内存单元) 函数调用之前,形参还未创建 函数调用过程中,形参才被实例化 函数调用结束,形参生命周期结束,被销毁 三.形参与实参的关系 了解了什么是函数的形参和实参,

6.7K11

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

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

86020
  • Python中函数的参数(参数的使用和作用、形参和实参)

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

    2.6K20

    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.5K10

    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的主体是一个表达式,而不是一个代码块。

    90810

    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):

    80320

    图解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):

    72151

    Python全网最全基础课程笔记(十二)——函数,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!

    函数的传参 在Python中,函数的参数传递是一个核心概念,它涉及到如何将数据从函数的调用者(或称为“外部”)传递到函数内部。这个过程涉及到两个关键概念:形参(形式参数)和实参(实际参数)。...但是,需要注意的是,由于Python中的赋值操作本质上是对象的引用传递,因此可变类型在函数内部修改后会影响到原始数据(如果函数内部直接修改了对象,而不是创建了一个新的对象)。...形参(Formal Parameters) 形参是函数定义时括号内的变量名,用于在函数体内部接收外部传入的数据。在函数被调用之前,形参不会占用实际的内存空间,它们只是函数的占位符。...形参:函数定义时括号内的变量名,用于接收外部传入的数据。 实参:调用函数时传递给函数的实际值。...., paramN): # 函数体 pass 在这里,param1, param2, …, paramN 是形参,它们定义了函数需要接收多少个参数以及这些参数在函数体内部将如何被引用

    12210

    奔走相告,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 另一个益处是将形参标记为仅限位置形参将允许在未来修改形参名而不会破坏客户的代码

    49430

    2.Python函数的进阶

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

    30420

    Python_函数

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

    54330

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

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

    42640

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

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

    1.9K00

    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 另一个益处是将形参标记为仅限位置形参将允许在未来修改形参名而不会破坏客户的代码

    99430

    Python 官网宣布,正式发布 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 另一个益处是将形参标记为仅限位置形参将允许在未来修改形参名而不会破坏客户的代码

    1.8K30

    Python 3.8.0来了!

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

    54530

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

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

    69930
    领券