Python에서 함수가 정의되지 않음 오류
- Python에서 선언 전에 함수 호출을 피하십시오.
- Python에서 맞춤법이 틀린 변수 또는 함수 이름을 사용하지 마십시오.
- Python에서 가져오기 없이 내장 모듈 사용 방지
- Python에서 범위를 벗어난 변수 문제 수정
이 설명을 통해 함수가 스크립트에 있음에도 불구하고 Python 프로그램이 NameError: name '<functionName>' is not defined
와 같은 오류를 표시하는 경우가 무엇인지 배우게 됩니다.
또한 맞춤법이 틀린 변수나 내장 함수를 가져오기 없이 사용할 때 어떤 일이 발생하는지, 그리고 파이썬에서 이러한 오류를 피하는 방법도 배웁니다.
Python에서 선언 전에 함수 호출을 피하십시오.
Python에서 NameError: function is not defined
가 발생하는 데는 여러 가지 이유가 있으며 이 오류가 발생하는 가장 일반적인 이유에 대해 논의할 것입니다. 프로그램에서 정의하기 전에 함수를 호출하면 Python 인터프리터가 함수 정의를 찾을 수 없습니다.
이 경우 함수는 보이지 않으며 Python 인터프리터는 아직 함수 정의를 만나지 않았습니다. 따라서 파이썬 인터프리터는 혼란스러워하고 오류를 던질 것입니다. 즉, 인터프리터에 따라 함수가 정의되지 않았다는 의미입니다.
이에 대한 간단한 예를 살펴보겠습니다. 이 프로그램에서는 함수를 정의하기 전에 call 문을 작성했습니다. 인터프리터는 Python 프로그램을 한 줄씩 실행하기 때문에 첫 번째 줄부터 실행을 시작할 때 특정 함수 호출을 만나지만 Hello()
가 무엇인지 모릅니다.
Hello()
def Hello():
print("I will never be called")
이 Python 스크립트를 실행하면 함수인지 헷갈릴 것이고, Python 인터프리터는 멈추고 오류를 던질 것입니다. 이것은 이 함수의 정의가 함수 호출 후에 나타나기 때문입니다. 그렇기 때문에 함수를 정의하기 전에는 함수를 호출하거나 호출할 수 없습니다.
NameError: name 'Hello' is not defined
이 오류를 수정하려면 호출하기 전에 함수를 정의해야 합니다.
Python에서 맞춤법이 틀린 변수 또는 함수 이름을 사용하지 마십시오.
이 오류가 발생하는 또 다른 이유는 사용자가 함수의 올바른 철자를 정의하는 데 실수를 할 때입니다. 이것이 사용자에게 이러한 유형의 오류가 발생하는 이유입니다. 파이썬은 대소문자를 구분하므로 소문자와 대문자는 다른 함수가 됩니다.
철자가 틀린 변수를 얻었을 때 인터프리터가 어떻게 행동하는지 보여주는 예를 살펴봅니다.
Orange = "orange"
for i in orange:
print(i)
출력:
NameError: name 'orange' is not defined
Python 스크립트를 실행하면 'orange' is not defined
라는 오류가 발생하는데 이번에는 철자를 잘못 입력한 것이 아닌데 이 변수를 정의했는데도 왜 이런 오류가 발생할까요? 대문자로 시작하는 변수를 정의하고 소문자로 접근을 시도하기 때문입니다.
동일한 시나리오가 기능에 적용됩니다. Orange
변수를 orange
로 재정의하면 작동합니다.
orange = "orange"
for i in orange:
print(i)
출력:
o
r
a
n
g
e
Python에서 가져오기 없이 내장 모듈 사용 방지
Python 프로그램을 작성할 때 print()
, input()
등과 같은 내장 함수를 사용하려는 경우 코드에서 사용할 수 있습니다. 파이썬에 내장되어 있지 않지만 특정 모듈에 있는 함수를 사용해야 할 때 어떻게 됩니까?
특정 모듈의 일부인 함수를 사용하려면 먼저 해당 모듈을 Python 프로그램으로 가져와야 합니다. 일부 초보자는 특정 모듈을 가져오는 대신 모듈에서 함수를 사용하려고 할 때 실패합니다. 예를 보세요.
이 프로그램에서 사용자는 임의의 값을 생성하려고 시도하지만 사용자가 이 코드를 실행하면 사용자는 앞에서 논의한 것과 동일한 오류가 발생합니다. 그 이유는 random
인 모듈을 가져오지 않고 random()
함수에 액세스하려는 사용자가 실패하는 경우입니다.
Randome_Values = random.random()
print(Randome_Values)
출력:
NameError: name 'random' is not defined
사용자가 Python 스크립트에서 random
모듈을 가져올 때 작동합니다.
import random
Randome_Values = random.random()
print(Randome_Values)
출력:
0.07463088966802744
때때로 사용자는 Python 모듈을 직접 작성하지만 문제에 직면하고 동일한 오류가 발생합니다.
이는 사용자가 클래스를 가져온 후 다른 파일에서 함수를 호출하려고 하기 때문입니다. 그러나 사용자가 함수가 정의된 해당 파일을 저장하지 않았을 수 있으므로 이 오류가 발생합니다. 따라서 이 함수를 호출하기 전에 저장해야 합니다.
Python에서 범위를 벗어난 변수 문제 수정
대부분의 초보자가 실패하는 또 다른 이유는 범위를 벗어난 변수에 액세스하려고 시도할 때 동일한 오류가 발생하기 때문입니다. 더 잘 이해할 수 있는 예를 살펴보겠습니다.
def take_order():
orders = input("Enter your orders and separate it using comma :").split(",")
return orders
def Delete_Orders():
deleted_orders = input("Enter your order name which you want to cancel :")
orders.remove(deleted_orders)
return orders
print(take_order())
print(Delete_Orders())
이 Python 스크립트를 실행하면 take_order()
기능이 올바르게 작동하지만 주문
목록에서 주문을 삭제하기 위해 Delete_Orders()
기능을 호출하면 오류가 발생합니다.
NameError: name 'orders' is not defined
이는 orders
변수가 take_order()
함수에 정의되어 있고 Delete_Orders()
함수에서 액세스하려고 하기 때문입니다. 그렇기 때문에 실행 제어가 주문
목록에서 항목을 제거하는 위치에 도달하는 이유입니다. 범위를 벗어나 액세스하고 있기 때문에 오류가 발생합니다.
이 문제를 해결하려면 빈 문자열을 저장하는 변수를 선언해야 하며 변수 이름은 orders
가 됩니다. 그런 다음 orders
변수라고 하는 global
키워드를 사용하여 재사용할 수 있도록 해야 합니다.
orders = ""
def take_order():
global orders
orders = input("Enter your orders and separate it using comma :").split(",")
return orders
def Delete_Orders():
deleted_orders = input("Enter your order name which you want to cancel :")
orders.remove(deleted_orders)
return orders
print(take_order())
print(Delete_Orders())
출력:
Enter your orders and separate it using comma :pizza,drink,water
['pizza', 'drink', 'water']
Enter your order name which you want to cancel :water
['pizza', 'drink']
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn관련 문장 - Python Error
- AttributeError 수정: Python에서 'generator' 객체에 'next' 속성이 없습니다.
- AttributeError 해결: 'list' 객체 속성 'append'는 읽기 전용입니다.
- AttributeError 해결: Python에서 'Nonetype' 객체에 'Group' 속성이 없습니다.
- AttributeError: 'Dict' 객체에 Python의 'Append' 속성이 없습니다.
- AttributeError: 'NoneType' 객체에 Python의 'Text' 속성이 없습니다.
- AttributeError: Int 객체에 속성이 없습니다.