Len tidak didefinisikan python

Ini adalah Kesalahan umum Python ketika Anda menggunakan kata string alih-alih kata kunci str saat mengetik konversi atau semacamnya di program Anda

Dalam tutorial ini, kita akan belajar cara membuat ulang NameError ini dan cara menangani kesalahan ini

Buat ulang NameError

Mari kita buat ulang kesalahan ini

Program Piton

n = 100
s = string(n)
Jalankan

Keluaran

Traceback (most recent call last):
  File "example1.py", line 2, in <module>
    s = string(n)
NameError: name 'string' is not defined
_

Apa yang kami coba di sini adalah mengonversi angka menjadi string

Tapi kita semua tahu bahwa str(angka) mengubah angka menjadi string tetapi bukan string(angka). Ini semacam kesalahan ketik dari sudut pandang programmer

Solusi untuk NameError

Anda harus menggunakan kata kunci Python yang benar

Misalnya, mari kita perbaiki program Python di atas, dengan mengganti kata –string dengan kata kunci yang benar str

Fungsi

>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1 bawaan bekerja pada beberapa objek, tetapi tidak pada yang lain. Hanya hal-hal yang memiliki panjang yang berfungsi dengan fungsi
>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1

Daftar, kumpulan, kamus, string, dan sebagian besar struktur data di Python memiliki panjang

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> len(numbers)
7
_

Tapi angka tidak

>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()

Saat membuat kelas dengan Python, Anda dapat mengontrol apakah instance dari kelas tersebut memiliki panjang

Fungsi

>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1 bawaan Python memanggil metode
>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
6 (diucapkan "dunder
>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1") pada objek yang Anda berikan

Jadi jika objek tersebut memiliki metode

>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
_6, objek tersebut memiliki panjang

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7

Jika tidak memiliki metode

>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
_6, fungsi
>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1 memunculkan
>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
1 sebagai gantinya

Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()

Bagaimana cara membuat instance kelas Anda memiliki panjang?

Modul

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
_2 Python memiliki fungsi (
>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
3) yang dapat secara acak memilih item dari urutan yang diberikan

>>> import random
>>> colors = ['red', 'blue', 'green', 'purple']
>>> random.choice(colors)
'purple'

Fungsi

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
_3 ini hanya berfungsi pada objek yang dapat diindeks dan memiliki panjang

Di sini kita memiliki kelas bernama

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
5

class ForgivingIndexer:

    def __init__(self, sequence):
        self.sequence = sequence

    def __getitem__(self, index):
        return self.sequence[int(index)]

Kelas ini memiliki metode

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
_6 dan metode
>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
7. Metode
>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
_7 itu memungkinkan instance kelas ini diindeks menggunakan tanda kurung siku (
>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
9)

Tapi ini tidak cukup untuk memungkinkan objek

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
5 kita bekerja dengan fungsi
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1. Jika kita melewatkan objek
>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
_5 ke fungsi
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1, kita akan mendapatkan error

>>> import random
>>> fruits = ForgivingIndexer(['apple', 'lime', 'pear', 'watermelon'])
>>> random.choice(fruits)
Traceback (most recent call last):
  File "", line 1, in 
  File "/usr/lib/python3.10/random.py", line 378, in choice
    return seq[self._randbelow(len(seq))]
TypeError: object of type 'ForgivingIndexer' has no len()

Python memberi kita kesalahan karena

>>> numbers = [2, 1, 3, 4, 7, 11, 18]
>>> numbers.__len__()
7
5 objek tidak memiliki panjang, yang dibutuhkan oleh fungsi
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1. Objek ini tidak berfungsi dengan fungsi
>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1 bawaan

>>> fruits = ForgivingIndexer(['apple', 'lime', 'pear', 'watermelon'])
>>> len(fruits)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'ForgivingIndexer' has no len()

Untuk mendukung fungsi

>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
_1 bawaan, kita dapat menambahkan metode
>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
6 ke kelas ini

    def __len__(self):
        return len(self.sequence)

Sekarang instance dari kelas ini memiliki panjang

>>> import random
>>> fruits = ForgivingIndexer(['apple', 'lime', 'pear', 'watermelon'])
>>> len(fruits)
4

Dan mereka juga bekerja dengan

Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1

>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
0

Ringkasan

Anda dapat membuat objek Anda berfungsi dengan fungsi

>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
1 bawaan dengan menambahkan metode
>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
6 ke objek tersebut. Anda hanya akan menambahkan metode
>>> n = 10
>>> len(n)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: object of type 'int' has no len()
_6 jika Anda membuat struktur data khusus, seperti urutan atau pemetaan

Bagaimana Anda mendefinisikan Len dengan Python?

Definisi dan Penggunaan . Ketika objeknya adalah string, fungsi len() mengembalikan jumlah karakter dalam string. The len() function returns the number of items in an object. When the object is a string, the len() function returns the number of characters in the string.

Mengapa Len bukan metode dalam Python?

Fakta bahwa len adalah sebuah fungsi berarti bahwa kelas tidak dapat mengesampingkan perilaku ini untuk menghindari pemeriksaan . Dengan demikian, len(obj) memberikan tingkat keamanan yang obj. len() tidak bisa.

Bagaimana cara saya memperbaiki tidak ditentukan dengan Python?

Contoh #1 - Nama Variabel Tidak Didefinisikan dengan Python . Pada kode di atas, kita menulis nam sebagai ganti nama. Untuk memperbaiki kesalahan seperti ini, Anda hanya perlu mengeja nama variabel dengan benar .

Apakah Len () pemanggilan metode?

len() sebenarnya adalah fungsi yang memanggil metode '__len__()' . Metode ini didefinisikan dalam kelas struktur data iterable yang telah ditentukan sebelumnya.