鱼C论坛

 找回密码
 立即注册
查看: 1494|回复: 10

[已解决]如何定义函数

[复制链接]
发表于 2021-1-23 22:51:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何定义一个函数,让两个变量数值交换呢?我就想用函数的方式能实现吗请问?
假设a=100,b=1
c(a,b)
之后a变1,b变100
最佳答案
2021-1-24 00:28:32
洋洋痒 发表于 2021-1-24 00:18
这个只是我举得一个例子,我想知道能不能用函数修改参数的值,不是函数返回值,是给你一个数然后通过函数 ...

1. 函数修改 传入的参数  的值是可以的,只是你要把修改后的 参数的值 返回出去才行,因为python对于不可变类型来说,参数的传递是值传递,也就是说函数外的变量 与 传入函数内的变量 它们的内存地址是不一样的。
2. 函数不是这么学的,函数主要是提升代码的复用性,也就是把在代码中重复出现的部分封装成函数,你提出的这个函数是想在函数内部修改外部变量的值,实在没有这个必要。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-23 23:00:49 | 显示全部楼层
可以,很简单。
  1. def c(a, b):
  2.     a, b = b, a
  3.     return a, b
复制代码

最好的其实是不用定义函数,直接
  1. a, b = b, a
复制代码

就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-23 23:05:37 | 显示全部楼层
正解,直接能换的事儿何必要写个函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-23 23:46:22 | 显示全部楼层
°蓝鲤歌蓝 发表于 2021-1-23 23:00
可以,很简单。

最好的其实是不用定义函数,直接
  1. >>> def c(a,b):
  2.         a,b=b,a
  3.         return a,b

  4. >>> a=100
  5. >>> b=1
  6. >>> c(a,b)
  7. (1, 100)
  8. >>> a
  9. 100
  10. >>> b
  11. 1
  12. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 00:11:42 | 显示全部楼层
昨非 发表于 2021-1-23 23:05
正解,直接能换的事儿何必要写个函数

我不是单纯为了两个数值互换,我是在学习函数功能,我在想能不能用函数修改参数的值,不是函数返回值,是给你一个数然后通过函数修改这个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 00:13:49 | 显示全部楼层
本帖最后由 °蓝鲤歌蓝 于 2021-1-24 00:21 编辑


你都没用到函数的返回值。
  1. a, b = c(a, b)
复制代码

如果你的意思是通过函数修改外部作用域的 a, b 的话,说实话,实在是多此一举。
还不如直接用上面我说的第二种方法。

除非
  1. def c(*args):
  2.     global a, b
  3.     b, a = args
复制代码


不过这个函数太笨了,传入的变量名只要不是 a, b 就不行了。
当然,主要还是问题有点离谱,类似于 "杀鸡非得用牛刀" 那种感觉。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 00:18:19 | 显示全部楼层
°蓝鲤歌蓝 发表于 2021-1-24 00:13
你都没用到函数的返回值。

如果你的意思是通过函数修改外部作用域的 a, b 的话,说实话,实在是多此一 ...

这个只是我举得一个例子,我想知道能不能用函数修改参数的值,不是函数返回值,是给你一个数然后通过函数修改这个数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 00:28:32 | 显示全部楼层    本楼为最佳答案   
洋洋痒 发表于 2021-1-24 00:18
这个只是我举得一个例子,我想知道能不能用函数修改参数的值,不是函数返回值,是给你一个数然后通过函数 ...

1. 函数修改 传入的参数  的值是可以的,只是你要把修改后的 参数的值 返回出去才行,因为python对于不可变类型来说,参数的传递是值传递,也就是说函数外的变量 与 传入函数内的变量 它们的内存地址是不一样的。
2. 函数不是这么学的,函数主要是提升代码的复用性,也就是把在代码中重复出现的部分封装成函数,你提出的这个函数是想在函数内部修改外部变量的值,实在没有这个必要。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 00:31:07 | 显示全部楼层
°蓝鲤歌蓝 发表于 2021-1-24 00:28
1. 函数修改 传入的参数  的值是可以的,只是你要把修改后的 参数的值 返回出去才行,因为python对于不可 ...

好的,明白了,我是看C语言里有个引用调用参数可以修改,所以想试试python可不可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 00:33:01 | 显示全部楼层
洋洋痒 发表于 2021-1-24 00:31
好的,明白了,我是看C语言里有个引用调用参数可以修改,所以想试试python可不可以

python里的可变类型是可以修改的,列表和字典这种。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-24 00:35:30 | 显示全部楼层
°蓝鲤歌蓝 发表于 2021-1-24 00:33
python里的可变类型是可以修改的,列表和字典这种。

好的谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 17:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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