如何从定义的函数中打印字符串

时间:2016-06-23 02:03:17

标签: python function

我想知道如何打印" 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

3 个答案:

答案 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和重用)。