• python系列教程193——参数传递


    朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow

    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!想要学习AI技术的同学可以点击跳转到我的教学网站。PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

    为了说明参数的工作方式,先看看如下的代码:

    >>>def f(a):     # a is assigned to (references) passed object
    
    ...    a = 99    # Changes local variable a only
    
    ...
    
    >>>b = 88
    
    >>>f(b)          # a and b both reference same 88 initially
    
    >>>print(b)      # b is not changed
    
    88
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这个例子中,在使用f(b)调用函数的时候,变量a赋值了对象88,但是,a只是存在于调用的函数之中。在函数中修改a对于调用函数的地方没有任何影响。

    对函数中的一个参数名的赋值(例如,a=99)不会影响到函数调用作用域中的b这样的一个变量。

    但是当参数传递像列表和字典这样的可修改对象的时候,对这样的对象的原处修改在函数退出后依然有效,并由此影响到调用者。如下例所示

    >>>def changer(a,b):    # Arguments assigned references to objects
    
    ...    a = 2             # Changes local name's value only
    
    ...    b[0] = 'spam'     # Changes shared object in-place
    
    ...
    
    >>>X = 1
    
    >>>L = [1,2]            # Caller
    
    >>>changer(X,L)         # Pass immutable and mutable objects>>>X,L # X is unchanged,L is different!
    
    (1,['spam',2])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这段代码中,changer函数给参数a赋值,并给参数b所引用的一个对象元素赋值。这两个函数内的赋值从语法上仅有一点不同,但是从结构上看却大相径庭。
    •因为a是在函数作用域内的本地变量名,第一个赋值对函数调用者没有影响,它仅仅把本地变量a修改为引用一个完全不同的对象,并没有改变调用者作用域中的名称X的绑定。
    •b也是一个本地变量名,但是它被传给了一个可变对象(在调用者作用域中叫做L的列表)。所以对函数中b[0]进行赋值的结果会在函数返回后影响L的值。实际上,changer中的第二条赋值语句没有修改b,我们修改的是b当前所引用的对象的一部分。

  • 相关阅读:
    Qt中的Resource
    力扣232 - 用栈实现队列【C语言实现】
    SSM-学情分析系统-56772(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案
    get_shape_model_contours
    怎么做 Redis 容灾
    集成学习(一):简述集成学习
    学成在线_课程查询_前端分页条不显示
    C语言刷题系列——6.(递归)实现顺序输出整数
    Jmeter性能测试 —— 压力模式
    【Spring】事务
  • 原文地址:https://blog.csdn.net/jiangjunshow/article/details/126559846