You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用函数传参时出现NameError: name 'bob' is not defined的问题

解决Python Turtle函数调用的NameError问题

错误原因分析

你的代码存在两个核心问题:

  1. 变量未定义:调用square(bob)时,bob这个变量从未被创建过,Python找不到它,因此抛出NameError。
  2. 参数被覆盖:函数内部的t = turtle.Turtle()语句直接覆盖了传入的参数t,导致你传入的参数完全没用上,违背了“接收turtle类型参数”的设计初衷。

你对参数传递的理解有误:函数参数的作用是接收已存在的变量/对象,而不是让函数替你创建这个变量。你以为“bob替换函数中的t等同于执行bob = turtle.Turtle()”是错误的逻辑,必须先在外部创建turtle实例,才能将其传入函数。

修正后的代码

import turtle

def square(t):
    # 直接使用传入的turtle实例,不再重新赋值
    for i in range(4):
        t.fd(100)
        t.lt(90)

# 先创建turtle实例bob
bob = turtle.Turtle()
# 将bob传入square函数
square(bob)

# 保持绘图窗口显示,避免程序结束后直接关闭
turtle.done()

关键说明

  • 先在函数外部通过bob = turtle.Turtle()创建turtle实例,确保bob是已定义的变量,才能作为参数传入函数。
  • 函数内部直接使用参数t调用绘图方法,这样传入的turtle实例才会被用来绘制正方形,符合你最初的设计需求。

内容的提问来源于stack exchange,提问作者J. Hawker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 09:15:09