【发布时间】:2021-08-07 03:10:58
【问题描述】:
我是新手,有一个无法找到答案的新手问题(在此处或在 Google 上)。
我正在学习编写函数,但不明白为什么会这样。
代码:
#func
def draw(n):
import random
nbers=(random.sample(range(1,101), n))
print(nbers)
ns=int(input("How many numbers you want?"))
draw(ns)
print(nbers)
日志:
How many numbers you want?5
[57, 10, 76, 46, 66]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-16-50675fd81745> in <module>
9
10 draw(ns)
---> 11 print(nbers)
NameError: name 'nbers' is not defined
问题:
为什么打印输出(内部函数)有效,但如果我调用生成的列表(再次打印列表),它将为空?
如果列表在第一时间有数字并且当我再次打印它时数字消失了,我该如何使用输出?
这里发生了什么?
感谢您的帮助!
路德维希
【问题讨论】:
-
如果您定义的每个函数都会创建可在外部范围内访问的名称,那么不发生冲突将非常困难。想象一个具有数千个功能的系统。您不希望名称从每个函数中泄漏出来。该名称仅在函数范围内有效,即在开始块的冒号和函数定义末尾的最终缩进之间。
-
您可以从函数中返回值,并将它们分配给名称。
-
但是,例如,这不会导致无法在另一个函数中使用输出吗?如果一个函数的结果只在产生它的那个中起作用,我该如何使用它?
-
彼得伍德,谢谢大家的帮助!
标签: python list function random printing