wja*_*rea 0 python variables function
该脚本在 内部定义了一个变量main(),但该变量不可用于func()在 内部运行的main()。这是为什么?
#!/usr/bin/env python3
# vars_in_func.py
# Test script for variables within a function.
def func():
print(greeting)
def main():
greeting = "Hello world"
func()
main()
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "./vars_in_func.py", line 11, in <module>
main()
File "./vars_in_func.py", line 9, in main
func()
File "./vars_in_func.py", line 5, in func
print(greeting)
NameError: name 'greeting' is not defined
Run Code Online (Sandbox Code Playgroud)
如果我将脚本转换为 Python2,错误是相同的,只是它显示的global name是而不是name.
我想我只是错过了一个关键概念。我是在学习 Bash 之后才开始学习 Python 的。
编辑:阅读完答案后,我意识到我的错误:我仍然在考虑 Bash,其中函数要么在与调用者相同的 shell 中运行(具有相同的变量),要么在调用者的子 shell 中运行(继承变量) 。
greeting = None
def func():
print(greeting)
def main():
global greeting
greeting = "Hello world"
func()
main()
Run Code Online (Sandbox Code Playgroud)
在您的解决方案中,主函数中定义的问候语是局部变量,无法在主函数之外访问。这就是它给你错误的原因