我想知道如何打印" myName,myAge,myHeight,myJob"来自函数me()。似乎我无法在函数中使用它并且它给出了一个错误,说myName等没有定义...我究竟能解决这个问题?我需要这种格式,因为我正在计划做什么。如果您喜欢我的完整项目代码,请告诉我。
def me():
myName = raw_input("What is your name? ")
myAge = int(raw_input("How old are you? "))
myHeight = int(raw_input("How tall are you? "))
myJob = raw_input("What is your job? ")
me()
print myName
print myAge
print myHeight
print myJob
答案 0 :(得分:1)
所以,这是一个与范围相关的问题。范围是一个想法,我们想要将变量封装在一个小块中,而不是让任何人在任何地方修改和使用它们。运行函数时,可以创建闭包 - 新范围。除非您明确允许它离开该范围,否则该范围中定义的任何内容仅在该范围内可行。
有两种方法让事情离开范围 - 你可以制作变量global
(通常是不好的做法,因为如果你不小心会导致奇怪的错误)或者你可以return
变量
对return
他们来说,你就是这样做的 - 返回是一个像print一样的声明,除了return
在被击中时立即结束任何函数(它说“这是你想要的功能,我现在完成了“)。您可以返回多个内容,通常是元组或列表。
def me():
# get your inputs
...
return myName, myAge, myHeight, myJob
另一方面,你必须收到它们
info_tuple = me()
info_tuple
现在是您收集的数据 - 您可以像打印一样打印,也可以逐个打印
print info_tuple
# OR
for info in info_tuple:
print info
此外,您不必捕获整个return
ed值,因为一个tuple-python可以为您解压缩它们:
myName, myAge, myHeight, myJob = me()
会给你相同的东西,根据每个而不仅仅是元组的四个有序部分命名。
答案 1 :(得分:0)
这应该有效
函数中定义的变量在其外部不可见 所以你只需要在不在外面的功能中打印它们
def me():
myName = raw_input("What is your name? ")
myAge = int(raw_input("How old are you? "))
myHeight = int(raw_input("How tall are you? "))
myJob = raw_input("What is your job? ")
print myName
print myAge
print myHeight
print myJob
me()
答案 2 :(得分:0)
您无法轻松访问功能的内部。我们使用函数的部分原因是它们封装了它们的行为,因此程序中其他地方的更改不会影响函数内部发生的事情。
通常的方法是让me
函数返回用户提供的值,可能是dict
。
def me():
info = dict()
info['name'] = raw_input("What is your name? ")
info['age'] = int(raw_input("How old are you? "))
info['height'] = int(raw_input("How tall are you? "))
info['job'] = raw_input("What is your job? ")
return info
caden = me()
for key in caden: # notice how this will order the fields randomly
print('{0}: {1}'.format(key, caden[key]))
这是"里面外出&#34 ;;对于真正的程序,在外层和函数内部的逻辑部分中进行交互通常是有意义的(因为I / O流往往在程序之间改变,而业务逻辑是您希望能够{{1和重用)。