zoukankan      html  css  js  c++  java
  • 函数—参数会变吗

    一 参数是字符串(以及数字和元组)

    字符串(以及数字和元组)是不可变的,无法被修改即只能被新值覆盖

    1 def change(n):
    2     n='gumby'
    3         
    4 name='entity'
    5 change(name)
    6 print(name)
    7 #输出  entity

    如果想要更改name 需要函数change(n)加上return n;将name重新赋值(name=change(name)) 

    n声明在函数内 所以函数结束后 n 就会消失

    二 参数是可变的数据结构

    例如 列表·

    1 def try_to_change(n):
    2     n[0]='mr.gumby'
    3      
    4 name=['mrs.sisly','six']
    5 try_to_change(name)
    6 print(name)  #['mr.gumby', 'six']

    在这里,可变的数据结构作为参数明显地发生了改变,为了不让原先的列表name发生变化,我们需要一个name的副本;

    而 当序列做切片的适合,返回的切片总是一个副本。

    1 name=['mrs.sisly','six']
    2 n=name[ : ]

    现在n 和 name 是两个独立的列表,其值相等,并且改变其中一个不会影响到另外一个,

    1 def try_to_change(n):
    2     n[0]='mr.gumby'
    3      print(n)
    4 name=['mrs.sisly','six']
    5 try_to_change(name[:])
    6 print(name)

    结果:

    1 # ['mr.gumby', 'six']   n
    2 # ['mrs.sisly', 'six']     name

        

  • 相关阅读:
    SpreadJS 复制行
    RookeyFrame 模块 线上创建的模块 迁移到 线下来
    RookeyFrame 附件 上传附件
    RookeyFrame 字典 新增和绑定
    RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错
    Catalan数
    美元汇率
    5倍经验日
    二分查找的边界问题
    线段覆盖5
  • 原文地址:https://www.cnblogs.com/Sky-Aces/p/8455554.html
Copyright © 2011-2022 走看看