分享到:文章主题: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
Krank楼主
男兒到死心如鐵
身份
版主
文章
42031
积分
92544
等级
厚德(15)

发信人: Krank (男兒到死心如鐵), 信区: Python
标  题: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Sun Dec  1 18:20:28 2019), 转信
  
难道不经过GLOBAL就能随便改变量?
  
>>> def test(c = []):
...     c[0] = 0
...     c[1] = 1
...     print(c)
...  
>>> cc=[9, 9.9]
>>> test(c=cc)
[0, 1]
>>> cc
[0, 1]
>>>  
  
  
--
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 sugar-v.com·[FROM: 73.243.11.*]
  

返回顶部
freesand第1楼
freesand
身份
用户
文章
351
星座
狮子座
积分
6888
等级
灵樨(8)

发信人: freesand (freesand), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Sun Dec  1 18:28:30 2019), 站内
  
http://docs.python.org/zh-cn/3/faq/programming.html#why-are-default-values-shared-between-objects
--
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 http://sugar-v.com·[FROM: 39.188.24.*]

返回顶部
annals第2楼
repeat
身份
版主
文章
45430
积分
100050
等级
瑶池(13)

发信人: annals (repeat), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Sun Dec  1 18:39:24 2019), 转信
  
你都在传址呀
  
【 在 Krank (男兒到死心如鐵) 的大作中提到: 】
: 难道不经过GLOBAL就能随便改变量?
: >>> def test(c = []):
: ...     c[0] = 0
: ...................
  
--
     "你的节操呢?"
  
  
     "和下限私奔了."
  
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 sugar-v.com·[FROM: 123.118.117.42]

返回顶部
Krank第3楼
男兒到死心如鐵
身份
版主
文章
42031
积分
92544
等级
厚德(15)

发信人: Krank (男兒到死心如鐵), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Sun Dec  1 19:33:46 2019), 转信
  
但是如果直接重新定义c,那cc就不会变了。
【 在 annals (repeat) 的大作中提到: 】
: 你都在传址呀
  
  
--
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 sugar-v.com·[FROM: 73.243.11.*]

返回顶部
annals第4楼
repeat
身份
版主
文章
45430
积分
100050
等级
瑶池(13)

发信人: annals (repeat), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Sun Dec  1 20:12:53 2019), 转信
  
没问题呀...更准确的说法首先list是一个mutable类型,cc是一个已经实例化的对象的名称,在传入到test过程中执行了c=cc这一步,让c和cc都指向了这个对象,那么对于c的修改自然也会反应到cc身上
  
而例如
```
cc = [9, 9.9]
c = cc
c = list()
print(c)
```
这样的代码,在执行第三行时是新生成了一个list,c指向的对象从cc变成了这个新的,那么就会和cc分开
  
如果你的目的是传入一个list修改前两项得到个新list且不改变旧的数据,应该使用copy甚至deepcopy
  
  
【 在 Krank (男兒到死心如鐵) 的大作中提到: 】
: 但是如果直接重新定义c,那cc就不会变了。
  
  
--
         要蛋腚,不要蛋疼.
  
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 sugar-v.com·[FROM: 123.118.117.42]

返回顶部
patriot第5楼
pat
身份
用户
文章
2696
积分
37310
等级
斗拱(14)

发信人: patriot (pat), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Sun Dec  1 22:24:48 2019), 转信
  
容器类型的传递是引用传递吧。
>>> def foo(c=[]):
...  print(id(c))
...
>>> cc=[1,2,3]
>>> id(cc)
31361480
>>> foo(cc)
31361480
>>>
【 在 Krank (男兒到死心如鐵) 的大作中提到: 】
: 难道不经过GLOBAL就能随便改变量?
: >>> def test(c = []):
: ...     c[0] = 0
: ...................
  
--
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 sugar-v.com·[FROM: 59.109.149.*]

返回顶部
adamhj第6楼
淘气阿丹
身份
核心驻版
文章
24664
星座
处女座
积分
67977
等级
椽桷(13)

发信人: adamhj (淘气阿丹), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Sun Dec  1 23:45:40 2019), 站内
  
和这个没关系..
  
【 在 freesand (freesand) 的大作中提到: 】
: http://docs.python.org/zh-cn/3/faq/programming.html#why-are-default-values-shared-between-objects
  
  
--
上天抛弃我们了!= w =
  
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 sugar-v.com·[FROM: 117.40.6.*]

返回顶部
freesand第7楼
freesand
身份
用户
文章
351
星座
狮子座
积分
6888
等级
灵樨(8)

发信人: freesand (freesand), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Mon Dec  2 07:39:10 2019), 站内
  
反正参数表一定不要这样写,传说有公司就因为这个死掉了……
--
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 http://sugar-v.com·[FROM: 39.188.24.*]

返回顶部
lokta第8楼
部落
身份
用户
文章
8100
星座
天蝎座
积分
54958
等级
沉香(10)

发信人: lokta (部落), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?(1)
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Mon Dec  2 08:15:00 2019), 站内
  
求八卦。
江苏快三跨度技巧官方网址22270.COM不过这个坑基本上是被很多文章提及到的。
最好的办法就是直接在函数里面new一个list再把里面的值倒过去。  
    
【 在 freesand () 的大作中提到: 】
: 反正参数表一定不要这样写,传说有公司就因为这个死掉了……
--
发自xsmth (iOS版)
--
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 http://m.sugar-v.com·[FROM: 223.104.95.*]

返回顶部
Scolesath第9楼
还在想
身份
用户
文章
12478
星座
天蝎座
积分
56107
等级
椽桷(13)

发信人: Scolesath (还在想), 信区: Python
标  题: Re: 江苏快三跨度技巧官方网址22270.COM_为什么本地变量被改了?
发信站: 内蒙古快三彩票app下载官方网址22270.COM木社区 (Mon Dec  2 09:59:16 2019), 转信
  
首先你参数传了地址啊,相当于把cc传进去操作了
其次不要在函数定义里初始化list,这样多次调用这个函数的时候变量会被修改
  
【 在 Krank 的大作中提到: 】
: 难道不经过GLOBAL就能随便改变量?
: >>> def test(c = []):
: ...     c[0] = 0
: ...................
  
--
  
※ 来源:·内蒙古快三彩票app下载官方网址22270.COM木社区 http://sugar-v.com·[FROM: 103.229.218.*]

返回顶部