码步停蹄 2023-07-12 13:18 采纳率: 80%
浏览 35
已结题

函数是否需要设置参数的问题

咨询一下写代码的老鸟
如果我有一个列表aa,想要通过一个函数将这个列表更改,显然通过change()或者change2()都能实现
区别是change()通过参数传入更改,而change2()直接更改
我的问题是:实际写代码过程中,有没有什么准则或者默认技巧:
什么时候应该将外界数据当做参数传入?
什么时候不需要将外界数据当做参数传入?

aa = [2, 2, 2, 2, 2]


def change(one):
    two = one
    two[0] = 12


change(aa)
print(aa)


def change2():
    aa[2] = 19


change2()
print(aa)


  • 写回答

5条回答 默认 最新

  • Marst·Writer 2023-07-12 13:51
    关注

    变量细分为两种: 全局变量 和 局部变量
    ①全局变量 所有函数都可以获取的,这种变量一般不轻易去改变它.(一旦改了,很难追溯它在哪个地方出问题)
    ②局部变量 一个函数或一个类范围内生效的变量。(有了边界,在边界之间传递,需要传入传出)
    建议:
    只会被引用而不修改的变量,可以作为全局变量.;
    经常修改的变量,建议用传入传出的方式进行修改,避免你确定不了它的变更顺序;
    尤其是对于一个新手来说,一个变量不经过参数来传递,出bug就长时间定位不出问题在哪一环.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 7月21日
  • 已采纳回答 7月13日
  • 创建了问题 7月12日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 易优eyoucms关于二级栏目调用的问题
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题