Python——内部参数对外部实参的影响

无论函数传递的参数的可变还是不可变,只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用,而如果传递的参数是可变类型,在函数内部使用方法修改了数据的内容,同样会影响到外部的数据。

def demo(num, num_list):
    print("函数内部")
    num = 99
    num_list = [33, 66, 99]

    print(num, num_list)

gl_num = 9
gl_list = [3, 6, 9]
demo(gl_num, gl_list)
print(gl_num, gl_list)

运行结果:

def mutable(num_list):
    num_list.append(100)
    print(num_list)

gl_list = [1, 2, 3]
mutable(gl_list)
print(gl_list)

运行结果:

无论函数传递的参数的可变还是不可变,只要针对参数使用赋值语句,会在函数内部修改局部变量的引用,不会影响到外部变量的引用,而如果传递的参数是可变类型,在函数内部使用方法修改了数据的内容,同样会影响到外部的数据。

原文地址:https://www.cnblogs.com/Jery-9527/p/10658172.html

时间: 2024-11-11 09:13:55

Python——内部参数对外部实参的影响的相关文章

python函数参数改变问题

python函数参数改不改变的问题 前几天在做项目的过程中发现了一个问题,向函数中传入一个list,在函数体内将其赋值给list,对list1操作后发现list也发生了变化,啊 ! 出乎意料.查了一下原因,原来python里有可变对象和不可变对象之分.只有传入的是不可变对象时,值才不发生改变,若是可变对象,充当函数参数时要注意了. 不可变对象:Number ,String , Tuple,bool 可变对象: List , Set , Dictionary是可以改变内部的元素 下面总结一下: 先

python可变参数调用函数问题

一直使用python实现一些想法,最近在使用python的过程中出现这样一个需求,定义了一个函数,第一个是普通参数,第二个是默认参数,后面还有可变参数,在最初学习python的时候,都知道非关键字可变参数和关键字可变参数两种,调用的方式也非常多种多样,这里主要提出一个比较隐含的问题,并将各种可能出现的情况进行了探讨. 函数声明格式 python虽然不支持函数重载,但是通过对函数参数的众多特性的支持基本弥补了.函数声明的通式如下: def func(argv1,argv2...[,argv_d =

指针作为函数参数,修改实参值

1,指针作为函数参数, 指针可以指向内存中任意一个数据,通过间接引用能够在函数内修改函数外甚至系统中的数据; 为了避免指针作为函数参数导致数据被意外修改,我们可以使用const来保护指针所指向的数据; 2,指针作为函数返回值, 同别的数据类型int,float一样,指针也能够作为函数的一种返回值类型,把返回指针的函数称为指针函数; 返回的指针所指向的数据不能够是函数内部声明的变量; 更灵活的存储,使用数组的时候面临种尴尬:数组的存储空间必须在程序运行前申请,即数组的大小在编译前必须是已知的常量表

Python函数参数默认值的陷阱和原理深究(转)

add by zhj: 在Python文档中清楚的说明了默认参数是怎么工作的,如下 "Default parameter values are evaluated when the function definition is executed. This means that the expression is evaluated once, when the function is defined, and that the same “pre-computed” value is used

Python 函数参数类型大全(非常全!!!)

Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFunction.__doc__ 2.python编写程序函数的时候具有两类参数: 形式参数(形参)及其实际参数(实参). 跟绝大部分编程语言一样,形参指的是函数创建和定义过程中小括号里的参数,而实参指的是函数在调用过程中传递进去的参数. 3.关键字参数,是指函数在调用的时候,带上参数的名字去指定具体调用的是哪

Python按值传递参数和按引用传递参数

Python按值传递参数和按引用传递参数: 按值传递参数: 使用一个变量的值(数字,字符串),放到实参的位置上 注:传递过去的是变量的副本,无论副本在函数中怎么变,变量的值都不变 传递常量: # 传递常量 # 定义一个函数,输出 欢迎,接收到的参数 name def huanying(name): print("欢迎",name) huanying("小明") # 欢迎 小明 # 定义一个求长方形面积的函数,要求具有返回值且参数为 height 和 width de

python 关键字参数和可变参数*args,和**kw

python 关键字参数和可变参数*args,和**kw 觉得有用的话,欢迎一起讨论相互学习~Follow Me 感谢莫烦老师 详情 可变参数 顾名思义,函数的可变参数是传入的参数可以变化的,1个,2个到任意个.当然可以将这些 参数封装成一个 list 或者 tuple 传入,但不够 pythonic.使用可变参数可以很好解决该问题,注意可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数. def report(name, *grades): total_grade

Swift Internal Parameter and External Parameter 外部参数和内部参数

今天跟大神又学习了些关于IOS开发Swift语言的外部参数和内部参数 func doSomething(num1: Int, num2: Int) -> Int { return num1 + num2 } doSomething(1, 2) class A { func foo(#num1: Int, num2: Int) { } func objectAtIndex(num: Int forArray array: Int) { } } var a = A() a.foo(num1: 1,

有关python 函数参数

# def foo(x):# print(x)### foo(1)# foo('a')# foo({'a':2}) #形参与实参:# def foo(x,y): #x=1,y=2# return x+y## foo(1,2) #===================================part1#位置参数:按照从左到右的顺序依次定义的参数 def foo(x,y): print(x) print(y)#按位置定义的形参,必须被传值,多一个不行,少一个也不行 # foo(1,2,3)