python 函数参数传递

参数传递:

参数的传递是通过自动将对象赋值给本地变量来实现的,作为参数被传递的对象从不自动拷贝

在函数内部的参数名的赋值不会影响调用者

改变函数的可变对象参数的值也许会对调用者有影响(实质:不可变对象(如字符串 简单类型 元组)是通过‘值‘进行传递的,可变对象如字典 列表是通过‘指针‘进行传递的)

>>> def change(a,b):

a=2

print id(b)

print b

b[0]=‘spam‘

print b

>>> x=1

>>> l=[1,2]

>>> change(x,l)

27900424

[1, 2]

[‘spam‘, 2]

>>> b

Traceback (most recent call last):

File "<pyshell#87>", line 1, in <module>

b

NameError: name ‘b‘ is not defined

>>> id(l)

27900424

>>>

b是一个本地变量名,但是它被传给了一个可变对象,因为第二个赋值是在原处发生的对象的改变,对函数中的b[0]进行赋值的结果会在函数返回后影响L的值,实际上我们没有修改b,我们修改的是b当前所引用的对象的一部分,并且这个改变将会影响调用者

时间: 2024-10-10 15:27:59

python 函数参数传递的相关文章

python函数参数传递总结

默认参数 def enroll(name, gender, age=6, city='Beijing'):    print('name:', name)    print('gender:', gender)    print('age:', age)    print('city:', city) 有多个默认参数时,调用的时候,既可以按顺序提供默认参数,比如调用enroll('Bob', 'M', 7),意思是,除了name,gender这两个参数外,最后1个参数应用在参数age上,city

Python 函数 参数传递

参数传递    在 python 中,类型属于对象,变量是没有类型的:        a=[1,2,3]        a="Runoob"    以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象. 可更改(mutable)与不可更改(immutable)对象    在 python 中,strin

Python函数参数传递机制

最近在写代码的过程中,发现Python参数传递不是很明白.Python确实很灵活,但是灵活的后果就是要花更多的时间去研究.废话不多说,始めましょう!!! Python参数传递有一下几种方式: 1:位置参数 Fun(arg1,arg2,...) 2:默认值参数 Fun(arg1,arg2=<value>...) 3:关键字参数 Fun(arg1=<value>,arg2=<value>...) 4:过量位置参数 Fun(arg1,arg2,*arg3) 5:过量关键字参数

[蟒蛇菜谱]Python函数参数传递最佳实践

将函数作为参数传递,同时将该函数需要的参数一起传递.可参考threading.Timer的处理方式: class threading.Timer(interval, function, args=[], kwargs={}) Create a timer that will run function with arguments args and keyword arguments kwargs, after interval seconds have passed. 内部实现中,调用funct

Python的函数参数传递 和 global

函数的参数到底是传递的一份复制的值,还是对内存的引用? 我们看下面一段代码: a = [] def fun(x): x.append(1) fun(a) print(a) 想想一下:如果传递的是一份复制的值,那么列表a应该是不会变化的,还是空列表:如果传递的是引用,那么a应该是[1]. 执行一下看到输出结果是[1],即证明函数参数传递的是引用. 但是,再看下面的代码: a = 1 def fun(x): x = 2 return x ret = fun(a) print(a) print(ret

Python的函数参数传递

首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传递. 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本.值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值. 引用传递(pass-

Python 函数的参数传递

前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:风,又奈何 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 背景:一条微博问题: 首先,我们比较熟悉的函数传参的两种方式是: 传值:传入被调函数的是一个实参副本.被调函数中对形参的操作不会影响实参变量: 传引用:传入被调函数的是实参变量的地址,形参的操作就是寻址处理,被调函数中对形参的操作会影响实参变量.

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

3.关于python函数,以及作用域,递归等知识点

一.使用函数编程的好处. 大大的提高了代码的重用行,重复的逻辑或者操作,可以定义到一个函数里,多次调用. 下面是关于提高代码重用性的例子. 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码. while True: if cpu利用率 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 if 硬盘使用空间 > 90%: #发送邮件提醒 连接邮箱服务器 发送邮件 关闭连接 i