Saya membaca utas lain yang berkaitan dengan kesalahan ini dan tampaknya masalah saya memiliki perbedaan yang menarik dan berbeda dari semua posting yang saya baca sejauh ini, yaitu, semua posting lainnya sejauh ini memiliki kesalahan dalam hal salah satu pengguna yang dibuat kelas atau sumber daya sistem bawaan. Saya mengalami masalah ini ketika memanggil suatu fungsi, saya tidak tahu apa fungsinya. Ada ide?
BOX_LENGTH = 100
turtle.speed(0)
fill = 0
for i in range(8):
fill += 1
if fill % 2 == 0:
Horizontol_drawbox(BOX_LENGTH, fillBox = False)
else:
Horizontol_drawbox(BOX_LENGTH, fillBox = True)
for i in range(8):
fill += 1
if fill % 2 == 0:
Vertical_drawbox(BOX_LENGTH,fillBox = False)
else:
Vertical_drawbox(BOX_LENGTH,fillBox = True)
Pesan eror:
Horizontol_drawbox(BOX_LENGTH, fillBox = True)
TypeError: Horizontol_drawbox() got multiple values for argument 'fillBox'
python
python-3.x
chopper draw lion4
sumber
sumber
Horizontol_drawbox
fungsi? Jika dimulai denganfillBox
, maka itulah kesalahannya (ditetapkan satu kali dengan argumen posisi, dan kali kedua dengan argumen kata kunci).Jawaban:
Ini terjadi ketika argumen kata kunci ditentukan yang menimpa argumen posisi. Misalnya, mari kita bayangkan sebuah fungsi yang menggambar kotak berwarna. Fungsi memilih warna yang akan digunakan dan mendelegasikan gambar kotak ke fungsi lain, menyampaikan semua argumen tambahan.
Lalu telepon
akan gagal karena dua nilai ditugaskan ke
color
:"blellow"
sebagai posisi dan"green"
sebagai kata kunci. (painter.draw_box
seharusnya menerimaheight
danwidth
argumen).Ini mudah dilihat dalam contoh, tetapi tentu saja jika seseorang mencampurkan argumen saat dipanggil, mungkin tidak mudah untuk melakukan debug:
Di sini,
color
ditugaskan20
, laluargs=[30]
dancolor
lagi ditugaskan"green"
.sumber
color
argumen. Masalahnya sedikit berbeda -model_matrix
argumen saya menjadi hanya kata kunci, dan beberapa kode lawas berlalu sebagai argumen posisional. API baru mengharapkancolor
, dan malah mendapatkan matriks 4x4.When a keyword argument is specified that overwrites a positional argument
. Tapi mengapa yang terakhir bisa bekerja? Apa aturannya ketika python menetapkan argumen. Terima kasih.Saya memiliki masalah yang sama yang benar-benar mudah dibuat, tetapi perlu waktu beberapa saat untuk melihat.
Saya telah menyalin deklarasi ke tempat saya menggunakannya dan telah meninggalkan argumen 'diri' di sana, tetapi butuh waktu lama untuk menyadari hal itu.
Saya punya
tapi seharusnya begitu
sumber
self
dengan nama kelas. ;)Ini juga terjadi jika Anda lupa
self
deklarasi di dalam metode kelas.Contoh:
Gagal menyebutnya seperti
self.is_overlapping(x1=2, x2=4, y1=3, y2=5)
dengan:KARYA :
sumber
self
argumen di dalam deklarasi fungsi. yaitu apa yang seharusnyadef myFunction(self, a, b, c='123')
ditulis sebagaidef myFunction(a, b, c='123')
. Dan karenab
mengambil daftar danc
mengambil skalar, ketika hilang sendiri argumen kacau dan akhirnya inputb
masukc
, menyebabkan kesalahan "beberapa argumen". Saya membuat kesalahan ini karena saya menguji metode internal ini di luar kelas dan lupa menambahkanself
kembali. Semoga bermanfaat bagi orang lain!@staticmethod
yang mungkin merupakan pendekatan yang lebih baik ketikaself
tidak diperlukan secara inheren.Masalah saya mirip dengan Q --- sepuluh, tetapi dalam kasus saya adalah bahwa saya lupa untuk memberikan argumen diri ke fungsi kelas:
Harus menjadi
Implementasi yang salah ini sulit dilihat ketika memanggil metode kelas sebagai:
Yang akan menghasilkan a
TypeError: got multiple values for argument
. Mudah-mudahan, sisa jawaban di sini cukup jelas bagi siapa saja untuk dapat dengan cepat memahami dan memperbaiki kesalahan. Jika tidak, harap jawaban ini membantu Anda!sumber
Sederhananya Anda tidak dapat melakukan hal berikut:
Karena Anda meneruskan variabel 'y' ke fungsi dua kali: sekali sebagai kwargs dan sekali sebagai deklarasi fungsi.
sumber
Saya dibawa ke sini karena alasan yang tidak disebutkan secara eksplisit dalam jawaban sejauh ini, sehingga untuk menyelamatkan orang lain dari masalah:
Kesalahan juga terjadi jika argumen fungsi telah berubah urutan - untuk alasan yang sama seperti dalam jawaban yang diterima: argumen posisi bentrok dengan argumen kata kunci.
Dalam kasus saya itu karena urutan argumen
set_axis
fungsi Pandas berubah antara 0,20 dan 0,22:Menggunakan contoh yang biasa ditemukan untuk set_axis menghasilkan kesalahan membingungkan ini, sejak saat Anda menelepon:
sebelum 0.22,
['a', 'b', 'c']
ditugaskan ke sumbu karena itu argumen pertama, dan kemudian argumen posisional memberikan "beberapa nilai".sumber