Điều kiện tiên quyết: Xử lý ngoại lệ Python Python Exception Handling
Có một số trường hợp ngoại lệ tiêu chuẩn trong Python và NameError là một trong số đó. NameRror được nâng lên khi số nhận dạng được truy cập không được xác định trong phạm vi địa phương hoặc toàn cầu. Nguyên nhân chung cho NameRror được nuôi dưỡng là:NameError is raised when the identifier being accessed is not defined in the local or global scope. General causes for NameError being raised are :
1. Chức năng tích hợp sai chính tả:
Trong mã ví dụ dưới đây, câu lệnh in là sai chính tả do đó tên là sẽ được nêu ra.
Python3
NameError: name 'geek' is not defined1
NameError: name 'geek' is not defined2
NameError: name 'geek' is not defined3
NameError: name 'geek' is not defined4
NameError: name 'geek' is not defined5
NameError: name 'geek' is not defined6
Đầu ra: & nbsp;
NameError: name 'print' is not defined
2. Sử dụng các biến không xác định:
Khi chương trình dưới đây được thực hiện, NameError sẽ được nêu ra vì Geek biến không bao giờ được xác định.
Python3
NameError: name 'geek' is not defined7
NameError: name 'geek' is not defined2
NameError: name 'geek' is not defined3
NameError: name 'geek' is not defined4
NameError: name 'geek' is not defined5
NameError: name 'geek' is not defined6
& nbsp; đầu ra: & nbsp;
Output :
NameError: name 'geek' is not defined
3. Xác định biến sau khi sử dụng:
Trong ví dụ sau, mặc dù Geek biến được xác định trong chương trình, nó được xác định sau khi sử dụng nó. Vì Python diễn giải mã từ trên xuống dưới, điều này sẽ tăng nameRror
Python3
NameError: name 'geek' is not defined5
NameError: name 'geek' is not defined6
NameError: name 'geek' is not defined1
NameError: name 'geek' is not defined2
NameError: name 'geek' is not defined7
& nbsp; đầu ra: & nbsp;
Output :
Trong ví dụ sau, mặc dù Geek biến được xác định trong chương trình, nó được xác định sau khi sử dụng nó. Vì Python diễn giải mã từ trên xuống dưới, điều này sẽ tăng nameRror
NameError: name 'geek' is not defined1
NameError: name 'geek' is not defined2
NameError: name 'geek' is not defined7
Python3
NameError: name 'geek' is not defined
4. Sử dụng phạm vi không chính xác:
NameError occurred. Some variable isn't defined.4
NameError: name 'geek' is not defined5
NameError: name 'geek' is not defined6
& nbsp; đầu ra: & nbsp;
Output :
NameError: name 'geek' is not defined
3. Xác định biến sau khi sử dụng:
Trong ví dụ sau, mặc dù Geek biến được xác định trong chương trình, nó được xác định sau khi sử dụng nó. Vì Python diễn giải mã từ trên xuống dưới, điều này sẽ tăng nameRror
Python3
NameError: name 'geek' is not defined1
NameError: name 'geek' is not defined2
NameError: name 'geek' is not defined7
NameError occurred. Some variable isn't defined.0
nameerror name is not defined0
nameerror name is not defined1
NameError: name 'geek' is not defined
4. Sử dụng phạm vi không chính xác:
Trong chương trình ví dụ dưới đây, geek biến được xác định trong phạm vi cục bộ của hàm gán. Do đó, nó không thể được truy cập trên toàn cầu. Điều này làm tăng Nameerror.
NameError: name 'geek' is not defined8
NameError: name 'geek' is not defined9
NameError: name 'geek' is not defined5
books = ["Near Dark", "The Order", "Where the Crawdads Sing"] print[boooks]6
Đầu ra: & nbsp;
NameError occurred. Some variable isn't defined.
Mã của chúng tôi đã in thành công danh sách các cuốn sách.
Nguyên nhân #3: Quên xác định một biến
Khi các chương trình trở nên lớn hơn, thật dễ dàng để quên xác định một biến. Nếu bạn làm, một lỗi tên được nêu ra. Điều này là do Python không thể làm việc với các biến cho đến khi chúng được khai báo.
- Hãy cùng xem một chương trình in một danh sách các cuốn sách:
- Mã của chúng tôi trả về: & nbsp;
Chúng tôi đã không tuyên bố một biến có tên là sách sách. Để giải quyết vấn đề này, chúng tôi cần khai báo về sách của Google trước khi chúng tôi sử dụng nó trong mã của mình:
First name
Last name
Email
Phone number
Hãy để cố gắng chạy lại chương trình của chúng tôi và xem điều gì sẽ xảy ra:
Bây giờ chúng tôi đã xác định một danh sách các cuốn sách, Python có thể in từng cuốn sách từ danh sách.
Nguyên nhân #4: Cố gắng in một từ duy nhất
Để in ra một từ trong Python, bạn cần bao quanh nó bằng trích dẫn đơn hoặc đôi. Điều này nói với Python rằng một từ là một chuỗi. Nếu một từ không được bao quanh bởi các trích dẫn, nó được coi là một phần của chương trình. Xem xét câu lệnh in [] sau:
Mã này cố gắng in từ sách sách trên bảng điều khiển. Mã trả về một lỗi:
nameerror name is not defined
"Karma nghề nghiệp bước vào cuộc sống của tôi khi tôi cần nó nhất và nhanh chóng giúp tôi kết hợp với bootcamp. Hai tháng sau khi tốt nghiệp, tôi tìm thấy công việc mơ ước của mình phù hợp với các giá trị và mục tiêu của tôi trong cuộc sống!"
Sao Kim, Kỹ sư phần mềm tại Rockbot
Python đối xử với những cuốn sách của người Viking giống như một tên biến. Để giải quyết lỗi này, chúng ta có thể gửi kèm từ sách sách về dấu ngoặc kép:
Python bây giờ biết rằng chúng tôi muốn in ra một chuỗi vào bảng điều khiển. Mã mới của chúng tôi trả về: Sách.
Nếu có một lỗi đánh máy ở bất cứ nơi nào bạn cố gắng tham chiếu biến đó, một lỗi sẽ được trả về.
Xem xét đoạn mã sau:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"] print[boooks]
Mã của chúng tôi trả về:
Traceback [most recent call last]: File "main.py", line 3, in print[boooks] NameError: name 'boooks' is not defined
Để giải quyết vấn đề này, tất cả những gì chúng ta phải làm là sửa lỗi đánh máy. Nếu chúng ta sử dụng in bản in [sách], mã của chúng ta trả về:
["Near Dark", "The Order", "Where the Crawdads Sing"]
Nếu bạn nhận được lỗi tên, trước tiên bạn nên kiểm tra để đảm bảo rằng bạn đã đánh vần chính xác tên biến hoặc chức năng một cách chính xác.
Nguyên nhân #2: Gọi một hàm trước khi khai báo
Các chức năng phải được khai báo trước khi chúng được sử dụng, như các biến. Điều này là do Python đọc mã từ từ trên xuống dưới. & NBSP;
Hãy để viết một chương trình gọi một hàm trước khi được khai báo:
books = ["Near Dark", "The Order", "Where the Crawdads Sing"] print_books[books] def print_books[books]: for b in books: print[b]
Mã của chúng tôi trả về:
NameError: name 'geek' is not defined0
Để giải quyết vấn đề này, tất cả những gì chúng ta phải làm là sửa lỗi đánh máy. Nếu chúng ta sử dụng in bản in [sách], mã của chúng ta trả về:
NameError: name 'geek' is not defined1
Mã của chúng tôi trả về:
NameError: name 'geek' is not defined2
Để giải quyết vấn đề này, tất cả những gì chúng ta phải làm là sửa lỗi đánh máy. Nếu chúng ta sử dụng in bản in [sách], mã của chúng ta trả về:
Nếu bạn nhận được lỗi tên, trước tiên bạn nên kiểm tra để đảm bảo rằng bạn đã đánh vần chính xác tên biến hoặc chức năng một cách chính xác.
Nguyên nhân #2: Gọi một hàm trước khi khai báo
Các chức năng phải được khai báo trước khi chúng được sử dụng, như các biến. Điều này là do Python đọc mã từ từ trên xuống dưới. & NBSP;
Hãy để viết một chương trình gọi một hàm trước khi được khai báo:
NameError: name 'geek' is not defined3
Chúng tôi đang cố gắng gọi print_books [] trên dòng ba. Tuy nhiên, chúng tôi không xác định chức năng này cho đến sau này trong chương trình của chúng tôi. Để khắc phục lỗi này, chúng tôi có thể chuyển khai báo chức năng của mình đến một nơi trước khi chúng tôi sử dụng:
NameError: name 'geek' is not defined4
Mã của chúng tôi đã in thành công danh sách các cuốn sách.
NameError: name 'geek' is not defined2
Nguyên nhân #3: Quên xác định một biến
Khi các chương trình trở nên lớn hơn, thật dễ dàng để quên xác định một biến. Nếu bạn làm, một lỗi tên được nêu ra. Điều này là do Python không thể làm việc với các biến cho đến khi chúng được khai báo.
Hãy cùng xem một chương trình in một danh sách các cuốn sách:
Mã của chúng tôi trả về: & nbsp;
Chúng tôi đã không tuyên bố một biến có tên là sách sách. Để giải quyết vấn đề này, chúng tôi cần khai báo về sách của Google trước khi chúng tôi sử dụng nó trong mã của mình:
Hãy để cố gắng chạy lại chương trình của chúng tôi và xem điều gì sẽ xảy ra:
NameError: name 'geek' is not defined6
Bây giờ chúng tôi đã xác định một danh sách các cuốn sách, Python có thể in từng cuốn sách từ danh sách.
Nguyên nhân #4: Cố gắng in một từ duy nhất
Để in ra một từ trong Python, bạn cần bao quanh nó bằng trích dẫn đơn hoặc đôi. Điều này nói với Python rằng một từ là một chuỗi. Nếu một từ không được bao quanh bởi các trích dẫn, nó được coi là một phần của chương trình. Xem xét câu lệnh in [] sau:
Mã này cố gắng in từ sách sách trên bảng điều khiển. Mã trả về một lỗi:
"Karma nghề nghiệp bước vào cuộc sống của tôi khi tôi cần nó nhất và nhanh chóng giúp tôi kết hợp với bootcamp. Hai tháng sau khi tốt nghiệp, tôi tìm thấy công việc mơ ước của mình phù hợp với các giá trị và mục tiêu của tôi trong cuộc sống!"
Sao Kim, Kỹ sư phần mềm tại Rockbot
Python đối xử với những cuốn sách của người Viking giống như một tên biến. Để giải quyết lỗi này, chúng ta có thể gửi kèm từ sách sách về dấu ngoặc kép:
NameError: name 'geek' is not defined7
Mã của chúng tôi trả về:
NameError: name 'geek' is not defined8
Python bây giờ biết rằng chúng tôi muốn in ra một chuỗi vào bảng điều khiển. Mã mới của chúng tôi trả về: Sách.
Nguyên nhân #5: Khai báo một biến ra khỏi phạm vi
NameError: name 'geek' is not defined9
Mã của chúng tôi trả về:
NameError: name 'geek' is not defined0
Có hai phạm vi biến đổi: địa phương và toàn cầu.