Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan ralat Python: TypeError: objek 'str' tidak boleh dipanggil?

Bagaimana untuk menyelesaikan ralat Python: TypeError: objek 'str' tidak boleh dipanggil?

WBOY
WBOYasal
2023-08-26 18:01:533502semak imbas

如何解决Python报错:TypeError: 'str' object is not callable?

Bagaimana untuk menyelesaikan ralat Python: TypeError: objek 'str' tidak boleh dipanggil?

Python ialah bahasa pengaturcaraan yang ringkas dan mudah dipelajari yang digunakan secara meluas dalam analisis data, kecerdasan buatan, pengaturcaraan rangkaian dan bidang lain. Dalam proses menulis kod dalam Python, ralat tidak dapat dielakkan. Salah satu ralat biasa ialah TypeError: objek 'str' tidak boleh dipanggil (TypeError: objek rentetan tidak boleh dipanggil). Ralat ini biasanya berlaku apabila cuba memanggil fungsi menggunakan rentetan. Artikel ini menerangkan cara menyelesaikan ralat ini dan menyediakan contoh kod yang sepadan.

Contoh ralat:

name = 'Alice'
print(name())  # TypeError: 'str' object is not callable

Kaedah untuk menyelesaikan ralat ini adalah seperti berikut:

Kaedah 1: Semak sama ada kurungan digunakan
Apabila Ralat Jenis: objek 'str' tidak boleh dipanggil ralat berlaku, semak dahulu sama ada kurungan disalahgunakan dalam kod , memanggil rentetan sebagai fungsi.
Contoh yang salah:

name = 'Alice'
print(name())  # 错误示例

Contoh yang betul:

name = 'Alice'
print(name)  # 正确示例

Dalam contoh yang betul, kami hanya mencetak nama sebagai pembolehubah dan bukannya memanggilnya sebagai fungsi. Oleh itu, ralat ini tidak lagi berlaku.

Kaedah 2: Semak sama ada nama fungsi bercanggah dengan nama pembolehubah rentetan
Kadangkala, kami mentakrifkan fungsi dalam kod dan kebetulan memberikan fungsi ini nama yang sama dengan pembolehubah rentetan. Dalam kes ini, ralat TypeError: 'str' object is not callable akan dihasilkan apabila memanggil pembolehubah rentetan.
Contoh salah:

def name():
    return 'Alice'

name = name()
print(name())  # TypeError: 'str' object is not callable

Contoh yang betul:

def get_name():
    return 'Alice'

name = get_name()
print(name)  # 正确示例

Dalam contoh yang betul, kami menukar nama fungsi daripada nama kepada get_name, mengelakkan konflik dengan nama pembolehubah rentetan, jadi TypeError: 'str' object is not tidak akan muncul lagi ralat boleh panggil.

Kaedah 3: Semak sama ada parameter yang diperlukan untuk panggilan fungsi hilang
Contoh salah:

def greet(name):
    return 'Hello, ' + name

print(greet())  # TypeError: greet() missing 1 required positional argument: 'name'

Contoh yang betul:

def greet(name):
    return 'Hello, ' + name

print(greet('Alice'))  # 正确示例

Dalam contoh yang betul, kami lulus dalam parameter nama apabila memanggil fungsi salam, mengelakkan TypeError: objek 'str' bukan ralat boleh dipanggil.

Dengan tiga kaedah di atas, kami boleh menyelesaikan TypeError: objek 'str' bukan ralat boleh panggil dengan berkesan. Walau bagaimanapun, apabila menghadapi jenis ralat lain, kami masih perlu menganalisis mesej ralat dengan teliti dan menyemak kod baris demi baris untuk mencari punca ralat dan membuat pembetulan yang sesuai.

Ringkasan:

TypeError: 'str' objek bukan ralat boleh panggil biasanya disebabkan oleh penyalahgunaan kurungan, konflik antara nama fungsi dan nama pembolehubah rentetan, atau tiada parameter yang diperlukan untuk panggilan fungsi. Untuk menulis kod dengan betul dalam Python, kita perlu menyemak dengan teliti dan mengelakkan ralat ini. Dengan meneliti baris demi baris kod dan memahami peraturan sintaks asas, kami boleh mencari ralat dan membetulkannya dengan lebih cepat.

Saya harap artikel ini dapat membantu pembaca lebih memahami dan menyelesaikan TypeError: objek 'str' bukan ralat boleh panggil dalam pengaturcaraan Python, dan meningkatkan kemahiran pengaturcaraan dan kualiti kod.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat Python: TypeError: objek 'str' tidak boleh dipanggil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn