鱼C论坛

 找回密码
 立即注册
查看: 2660|回复: 11

python 参数

[复制链接]
发表于 2016-10-26 20:06:54 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 wow7jiao 于 2016-10-26 20:07 编辑

>>> def multiple(x, y ):
        x = 2
        y = [3, 4]
        return x, y

>>> X = 1
>>> L = [1, 2]
>>> X, L = multiple(X, L)

>>> X, L
(2, [3, 4])  #<====为什么这里不是(1, [1, 2])

最佳答案

查看完整内容

你的实参进入函数体当中,形参已经被赋值了,相当于在函数体里面已经重新贴了标签,肯定只能返回里面的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-26 20:06:55 | 显示全部楼层
你的实参进入函数体当中,形参已经被赋值了,相当于在函数体里面已经重新贴了标签,肯定只能返回里面的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-26 20:39:07 | 显示全部楼层
我觉得你返回得是x,y得值,而x,y的值在函数里就定义好了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-26 21:05:48 | 显示全部楼层
函数里的里的x,y和return里的x,y意义不一样,第一个X,Y是调用函数外赋值的参数
第二个是调用函数内参数
我也是新手不知道解释得对不对
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-26 22:00:37 | 显示全部楼层
这样不就好看多了
  1. def multiple(x, y ):
  2.     x = 2
  3.     y = [3, 4]
  4.     return x, y

  5. A=1
  6. B=[1,2]
  7. A,B = multiple(A, B)
  8. print(A,B)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 09:28:51 | 显示全部楼层
>>> def multiple(x, y ):
        x = 2
        y = [3, 4]
        return x, y

>>> X = 1
>>> L = [1, 2]
>>> X, L = multiple(X, L)#此处,因为调用了你建立的函数multiple,所以X,L被带入到函数中,x被重新赋值为2,L被重新定义为列表[3,4],所以返回的X,L经过你的函数multiple,就被计算为(2, [3, 4])

>>> X, L
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 09:50:31 | 显示全部楼层
你定义了函数 multiple(x,y),然后你再函数里给变量x赋值为2,y变量赋值为一个固定的列表。
所以无论你在调用函数时给两个变量什么值,都会变成你函数定义的值。
所以把函数里直接return x,y就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 11:13:01 | 显示全部楼层
你把X=1 L= [1,2] 作为参数传入multiple(x,y)函数, 但是在multiple中对x, y重新赋值为x = 2 y = [3,4], 覆盖了你原来的赋值,所以返回值是你最后对x, y进行的赋值
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 20:05:40 | 显示全部楼层
0.  变量名是区分大小写的。
x和X不是同一个变量。

1.  两个相同的变量赋值会取后一个。
x = 1
x = 2
这个时候x是2而不是1.

2.  语句在执行时是从右往左执行的。

X, L = multiple(X, L) 这样是先执行multiple(X, L)的。

3.  当一个变量的赋值是一个函数时,那么该函数的值就是函数的返回值。

X, L = multiple(X, L) 不管传入什么,也不管里面怎么执行的,只要执行完了。
X和L就会被重新赋值。
而你的程序里multiple(X, L)返回x, y,
就是(2, [3,4]),这时X就会赋值为2, L就会赋值为[3, 4]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 21:57:17 | 显示全部楼层
multiple(X,L)把X和L的值传入函数,但函数内部有对x,y进行赋值,会把你传进来的值改变,所以才会输出函数内部的值
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-27 21:57:59 | 显示全部楼层
multiple(X,L)把X和L的值传入函数,但函数内部有对x,y进行赋值,会把你传进来的值改变,所以才会输出函数内部的值
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-3-30 09:42:51 | 显示全部楼层
>>> def multiple(x=2, y=[3, 4] ):
&nbsp; &nbsp; &nbsp; &nbsp; y = [3, 4]
&nbsp; &nbsp; &nbsp; &nbsp; return x, y
>>>X = 1
>>> L = [1, 2]
>>> X, L = multiple(X, L)

>>> X, L
(1, [1, 2])&nbsp;
''这样就能返回(, [1, 2])了"
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-23 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表