提问人:J. Hawker 提问时间:5/9/2023 最后编辑:Axe319J. Hawker 更新时间:5/9/2023 访问量:85
为什么当我在 python 中将参数传递给函数时会出现 NameError?
Why am I getting a NameError when I pass an argument to a function in python?
问:
这是我的 python 代码:
import turtle
def square(t):
t = turtle.Turtle()
for i in range(4):
t.fd(100)
t.lt(90)
square(bob)
当我运行代码时,我收到错误:
Traceback (most recent call last):
File "/home/j/python_projects/tp_ex_4.1.py", line 10, in <module>
square(bob)
NameError: name 'bob' is not defined
我正在从“Think Python How to Think like a computer scientist”一书中学习 python 编程,我不明白为什么我的代码无法运行。我正在尝试编写一个名为的函数,该函数采用一个名为 的参数,该参数是 .我使用 for 循环与一起画一个正方形。然后我编写一个函数调用,作为参数传递给 square。不应该在我的函数中替换吗?从而使 ?我错过了什么?square
t
turtle
bob
bob
t
bob = turtle.Turtle()
答:
2赞
Lior v
5/9/2023
#1
bob
未定义。在此函数中,您甚至不需要参数,因为参数用于将值从外部上下文传递到函数上下文,而在这里,您可以在函数本身中定义。更改为t
def square(t):
def square():
square(bob)
square()
-2赞
Gyula Sámuel Karli
5/9/2023
#2
很明显:鲍勃没有被定义。它看起来像一个没有获得任何值的变量。
您可能想在最后一行写下这样的内容:
square('bob')
这样,“bob”就是字面意思,它就会起作用。
评论
3赞
Psytho
5/9/2023
代码可以正常工作,但“bob”在此代码中没有意义
0赞
B Remmelzwaal
5/9/2023
我认为仔细检查一下,您会发现您不能将字符串作为参数传递给该函数。
1赞
juanpa.arrivillaga
5/9/2023
@J.Hawker,因为没有定义变量 bob
。这正是 a 正在做的事情。这与 没有什么不同,你会得到一个未定义的抱怨(当然,除非你实际上已经在某个范围内定义了它)NameError
print(banana)
NameError
banana
1赞
juanpa.arrivillaga
5/9/2023
“这样一来,'bob'就是一个字面意思,它就会起作用。” 它只是在它不会引发错误的意义上“工作”,但这不会做任何有用的事情
1赞
J. Hawker
5/9/2023
我目前所讲的章节是关于使用 turtle 模块、定义函数和使用 for 循环的。赋值的目的是将参数传递到函数中。这就是为什么我使用“bob”作为参数。不幸的是,我不明白为什么我的初始代码失败了,因为我试图使用一个没有被分配的变量。感谢您的帮助。
评论
bob
bob
t
bob
bob
t
t
return
bob
t