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日
  • 展开全部

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路