• python---参数传递


    引入

      1、写程序时容易发生的一类错误 ——  传参过程中,数据结构发生了改变,但没有注意到。

         所以就涉及到了可变对象  和  不可变对象 ,参数传递 是 传递值 还是 传递引用

      2、Python 里所有的数据类型都是对象

    值传递与引用传递:

      值传递:就是拷贝参数自身所存储的值,将其传递给函数里的新变量 ,原变量和新变量之间 互不影响

      引用传递:把参数自身的地址(引用)传递给新的变量, 新变量发生改变,将会引起原来变量的值一同改变

    python中参数的传递:

      python参数里存储的是另一个对象的引用,所以既不是值传递,也不是引用传递,而是赋值传递(pass by assignment),或者是叫对象的引用传递(pass by object reference)。用白话说就是,我把我存储的另外一个对象的引用,传递给你。

    必须要注意的是:

      python中赋值(或这说是对象的引用)传递,不是指向一个具体的内存地址,而是指向一个具体的对象。

      如果对象是可变的,当其改变时,所有指向这个对象的变量都会改变。如果对象不可变,简单的赋值只能改变其中一个变量的值,其余变量则不受影响。

    通过一个函数来改变某个变量的值,通常有两种方法:

      直接将可变数据类型(比如列表,字典,集合)当作参数传入,直接在其上修改

      在函数内另外创建一个新变量,保存修改后的值,然后通过return将其返回给原变量。这种方式更好一些,可以避免同时对同一资源的修改,避免静态条件引起的问题

    创建一个新变量,来保存修改后的值,然后将其返回给原变量

      

    如果对象是可变的,当其改变时,所有指向这个对象的变量都会改变

    del 关键字:

      del 只能删除一个变量,但是并不能删除任何对象(del引起的结果是,指向该对象的变量减少一个)

  • 相关阅读:
    Cookie笔记
    Java中Scanner类
    Java 位运算(移位、位与、或、异或、非)
    Python:urllib和urllib2的区别
    Scrapy在win7 32位的安装及依赖包
    [转] Windows下使用Python读取Excel表格数据
    python sort()和sorted()方法
    flask开发遇到 Must provide secret_key to use csrf解决办法
    flask开发遇到Internal Server Error的解决办法
    Android开发之消息机制
  • 原文地址:https://www.cnblogs.com/wl413911/p/12995575.html
Copyright © 2020-2023  润新知