Python 「NameError: 名前が定義されていません 」は、未定義の変数や関数にアクセスしようとしたとき、または定義される前に発生します。
このエラーを修正するには、変数名のスペルを間違えていないことを確認し、宣言後にアクセスする必要があります。
以下は、上記のエラーを生成するサンプル コードです。
employee = { 'name': 'Jiyik', 'age': 30, } # ⛔️ NameError: name 'Employee' is not defined. Did you mean: 'employee'? print(Employee) # ????️ 拼写错误的变量名
#問題は、変数名のスペルを間違えたことです。変数、関数、クラス名では大文字と小文字が区別されることに注意してください。
この場合のエラーを解決するには、変数名のスペルを正しく入力する必要があります。
employee = { 'name': 'Jiyik', 'age': 30, } print(employee)
## 存在しない変数にアクセスします。
存在しない変数またはまだ定義されていない変数にアクセスしていないことを確認してください。
# ⛔️ NameError: name 'do_math' is not defined print(do_math(15, 15)) def do_math(a, b): return a + b
# ✅ 1) 声明函数或变量 def do_math(a, b): return a + b # ✅ 2) 之后访问它 print(do_math(15, 15)) # ????️ 30
クラス宣言の後に、クラスをインスタンス化するか、クラス メソッドを呼び出す必要があることに注意してください。
変数を使用する場合も同様です。
# ⛔️ NameError: name 'variable' is not defined. print(variable) variable = 'jiyik.com'
変数にアクセスする行を、変数を宣言する行の下に移動してください。
variable = 'jiyik.com' print(variable) # ????️ jiyik.com
文字列を一重引用符または二重引用符で囲むのを忘れる
エラーのもう 1 つの原因は、文字列を一重引用符または二重引用符で囲むのを忘れることです。
def greet(name): return 'Hello ' + name # ⛔️ NameError: name 'Fql' is not defined. Did you mean: 'slice'? greet(Fql) # ????️ 忘记用引号括起字符串
greet 関数は文字列を使用して呼び出す必要がありましたが、文字列を引用符で囲むのを忘れたため、名前「X」が未定義であるというエラーが発生しました。
これは、文字列を引用符で囲まずに文字列をprint()
関数に渡す場合にも発生します。このエラーを解決するには、文字列を引用符で囲みます。NameError: name is not generated##」が発生します。 #」。def greet(name): return 'Hello ' + name greet('Fql')ログイン後にコピーインポートせずに組み込みモジュールを使用する
組み込みモジュールをインポートせずに使用すると、「
# ⛔️ NameError: name 'math' is not defined print(math.floor(15.5))
「NameError: name ‘math’ が定義されていません」は、math モジュールの関数またはプロパティにアクセスしようとしていますが、プロパティにアクセスする前にモジュールをインポートしていないことを意味します。
このエラーを解決するには、使用しているすべてのモジュールを必ずインポートしてください。行は、import mathimport math print(math.floor(15.5)) # ????️ 15ログイン後にコピー
math
モジュールをコードにロードするため、必須です。 モジュールは、関数とクラスの単なるコレクションです。モジュールのメンバーにアクセスするには、その前にモジュールをロードする必要があります。
辞書のキーを引用符で囲むのを忘れる
employee = { 'name': 'Jiyik', # ⛔️ NameError: name 'age' is not defined age: 30 # ????️ 字典键未包含在引号中 }
employee = { 'name': 'Jiyik', 'age': 30 }
def get_message(): message = 'jiyik.com' # ????️ 函数中声明的变量 return message get_message() # ⛔️ NameError: name 'message' is not defined print(message)
message
この変数は# ????️ 在外部范围内声明变量 message = 'hello world' def get_message(): return message get_message() print(message) # ????️ "hello world"
def get_message(): message = 'jiyik.com' return message result = get_message() print(result) # ????️ "hello world"
もう 1 つのオプションは、変数をグローバルとしてマークすることです。
def get_message(): # ????️ 将 message 标记为全局 global message # ????️ change its value message = 'hello world' return message get_message() print(message) # ????️ "hello world"
に注意してください。通常、
globalキーワードはコードが読みにくくなり、推論が困難になるため、使用しないでください。 。という名前の変数を宣言していますが、外部関数から変数にアクセスしようとすると、「名前メッセージが定義されていません」というエラーが発生します。 この問題を解決するには、メッセージ変数を非ローカル変数としてマークします。message
入れ子関数で宣言された変数にアクセスしようとしています
入れ子関数で宣言された変数に外部関数からアクセスしようとすると、その変数を非変数としてマークできます。ローカル変数。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">def outer(): def inner(): message = 'jiyik.com' print(message) inner() # ⛔️ NameError: name 'message' is not defined print(message) outer()</pre><div class="contentsignin">ログイン後にコピー</div></div>
内部関数は
def outer(): # ????️ 初始化 message 变量 message = '' def inner(): # ????️ 将 message 标记为 nonlocal nonlocal message message = 'jiyik.com' print(message) inner() print(message) # ????️ "jiyik.com" outer()
nonlocal キーワードを使用すると、囲んでいる関数のローカル変数を使用できます。
请注意
,我们必须在外部函数中初始化消息变量,但我们能够在内部函数中更改它的值。
如果我们不使用 nonlocal
语句,对 print()
函数的调用将返回一个空字符串。
def outer(): # ????️ 初始化 message 变量 message = '' def inner(): # ????️ 在内部范围内声明 message message = 'hello world' print(message) inner() print(message) # ????️ "" outer()
当我们在定义类之前访问类时,也会发生该错误。
# ⛔️ NameError: name 'Employee' is not defined emp1 = Employee('jiyik', 100) class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def get_name(self): return self.name
要解决该错误,请将实例化行移至类声明下方。
class Employee(): def __init__(self, name, salary): self.name = name self.salary = salary def get_name(self): return self.name emp1 = Employee('jiyik', 100) print(emp1.name) # ????️ jiyik
如果我们正在使用来自第三方库的类,则必须先导入该类才能使用它。
在 try/except
块中使用 import
语句时也可能发生该错误。
try: # ????️ 此处的代码可能会引发错误 import math result = math.floor(15.5) except ImportError: math.floor(18.5) print(math.floor(20.5))
该代码示例有效,但是,如果 import
语句之前的某些代码引发错误,则该模块将不会被导入。
这是一个问题,因为我们正在 except 块中和 try/except
语句之外访问模块。
相反,将导入语句移至文件顶部。
# ✅ 将 import 语句移动到文件顶部 import math try: result = math.floor(15.5) except ImportError: math.floor(18.5) print(math.floor(20.5))
以上がPython エラー NameError:name 'X' が定義されていないを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。