You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在函数外部获取Python函数内定义的name变量?

解决函数局部变量外部无法访问的问题

嘿,我来帮你搞定这个变量作用域的问题!咱们先搞清楚根源:你在getting_name()里定义的name是个局部变量,它只在函数内部有效,函数执行完毕后这个变量就被回收了,所以外部的print语句自然找不到它。

按照你的要求,只修改获取名称的函数部分,有两种可行的方法,我优先推荐更规范的第一种:

方法一:让函数返回name变量(推荐)

修改函数,在末尾返回name的值,然后外部调用函数时把返回值赋值给全局的name变量。这样既遵循Python的作用域规则,又能让外部代码拿到变量值。

修改后的函数代码:

def getting_name():
    name = input("\n\nWhat is your name? --> ")
    print("\n\nHello " + name + "!")
    return name  # 把局部变量name返回出去

外部调用代码只需要稍微调整,接收返回值:

# Start of my program
name = getting_name()  # 接收函数返回的name值
print("You are cool, "+ name)

这种方法是Python中传递变量的标准做法,代码更清晰,也不容易出bug。

方法二:使用global声明(不推荐但满足要求)

如果你不想修改外部的调用代码,只改函数部分,可以在函数内部用global关键字声明name是全局变量。这样函数里的name就会直接操作全局作用域的变量,外部自然能访问到。

修改后的函数代码:

def getting_name():
    global name  # 声明name是全局变量
    name = input("\n\nWhat is your name? --> ")
    print("\n\nHello " + name + "!")
    return

这时候外部原来的调用代码不需要任何修改就能正常运行,但我不太推荐这种方式——全局变量会让代码的逻辑变得不清晰,尤其是在大型项目里,很容易不小心修改了变量值却找不到原因,引发难以排查的bug。

内容的提问来源于stack exchange,提问作者John Row

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:12:57