djjshdnr 2023-02-22 16:48 采纳率: 100%
浏览 43
已结题

关于#python#的问题:关于局部和全局变量的两个代码十分相似但是输出的结果不同

两个代码十分相似但是输出的结果不同,能不能详细描述一下两个代码运行的过程,并且再说明一下局部和

def proc(x):
    x = 2*x*x

def main():
    x = 10
    x = proc(x)
    print(x)

main()

def proc(x):
    x = 2*x*x

def main():
    num = 10
    proc(num)
    print(num)

main()

def proc(x):
    return 2*x*x

def main():
    x = 10
    proc(x)
    print(x)

main()

  • 写回答

4条回答 默认 最新

  • 全栈小5 全栈领域优质创作者 2023-02-22 17:35
    关注

    望采纳,谢谢!

    1、第一段代码

    def proc(x):
        x = 2*x*x
        # 此处没有使用return返回值
        # return x  # 如果返回值,那么就是200
     
    def main():
        x = 10      # x变量相对于main方法是全局变量
        x = proc(x) # 函数没有返回值,那么x=None
        print(x)
     
    main()
    

    第二段代码

    def proc(x):
        # 这里的x变量相当于入参,相对函数内的全局变量,函数外的局部变量
        x = 2*x*x
     
    def main():
        num = 10
        proc(num)   # 没有做任何操作,只是传递一个值给方法,方法里只是对内部变量进行赋值
        print(num)  # 直接输出num变量
     
    main()
    

    第三段代码

    def proc(x):
        # 虽然有返回值了,但是返回没有对变量进行赋值
        return 2*x*x
     
    def main():
        x = 10
        proc(x)     # 只是传递了一个参数,没有进行返回值进行赋值
        print(x)    # 直接输出变量,x=10
     
    main()
    

    如果函数返回值并赋值x,那么x=200

    img

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

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 修改了问题 2月22日
  • 修改了问题 2月22日
  • 展开全部

悬赏问题

  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写