Sys.settrace çağrısının içindeki işlev argümanlarının değerlerini nasıl kontrol edebilirim? Ben argümanlar dışında hemen hemen her şeyi (satır, dosya isimleri, yığınlar, dönüş değerleri, vb.) Elde etme şansım var gibi görünüyor. Fonksiyon argüman değerleri de izlememi sağlayacak bir geçici çözüm var mı?python'da sys.settrace içindeki işlev argümanlarını yazdırma
7
A
cevap
9
Kod Nesneleri ve Çerçeve Nesneleri bileşimini kullanabilirsiniz.
Python Data-Model Reference'da bunlara ait açıklamalara bakın.
import sys
def fn(frame, msg, arg):
if msg != 'call': return
# Filter as appropriate
if frame.f_code.co_filename.startswith("/usr"): return
print("Called", frame.f_code.co_name)
for i in range(frame.f_code.co_argcount):
name = frame.f_code.co_varnames[i]
print(" Argument", name, "is", frame.f_locals[name])
sys.settrace(fn)
def hai(a, b, c):
print(a, b, c)
hai("Hallo", "Welt", "!")
gerçekleştirmek için en önemli şey
- biz
f_locals
olarak çerçeve içinde tüm yerel değişkenleri görebilirsiniz olmasıdır. - Parametre listesindeki değişkenlerin isimlerini
f_code.co_varnames
'dan ayıklayabiliriz.
İlgili konular
- 1. update.formula işlev argümanlarını kullanma
- 2. Perl içindeki yazdırma karma
- 3. Sfenks'te Python işlev argümanlarını gizlemek mümkün mü?
- 4. Python - Özgün işlev argümanlarını dekoratörde alın
- 5. Parçalı değişkenle işlev gövdesi yazdırma
- 6. C++ - İşlev kapsamları içindeki işlev bildirimleri?
- 7. Swift 2.0 içindeki yazdırma (Nesne) görüntülerini değiştirme
- 8. Dizinin içindeki dizileri Laravel blade ile yazdırma
- 9. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 10. Dize içindeki işlev işlevini LESS
- 11. İşlev, yazdırma ile yinelenir, ancak geri dönülmez
- 12. PHP: Yöntemin argümanlarını alın?
- 13. Bir işlev javascript/nodejs içindeki bir işlev nasıl döndürülür?
- 14. Python: Bir işlev içindeki bir işlevin bir işlev içindeki ismini döndürür.
- 15. Python içindeki sınıftaki her işlev için
- 16. `statik` anahtar sözcüğü içindeki işlev nedir?
- 17. Wscript argümanlarını anlamadı
- 18. Varsayılan JVM argümanlarını Gradle
- 19. Python: Basit bir işlev içinde beklenmeyen yazdırma değerleri
- 20. 2B dizisini yazdırma
- 21. Haskell girinti, fonksiyon argümanlarını sıraya koymuyor
- 22. Elastic Topbeats, proses argümanlarını gösterir
- 23. Python'da HTTP GET argümanlarını alma
- 24. komut satırı argümanlarını antite göre
- 25. CSS Yazdırma Düzeni - Tek Sayfada Yazdırma
- 26. GDB'de yazdırma yerine errno` adını yazdırma
- 27. monitör yazdırma
- 28. JavaFX yazdırma
- 29. sml olarak yazdırma int list
- 30. Jenkins Pipeline config içindeki işlev nasıl tanımlanır ve kullanılır?
Ve her izlenen işlevin dönüş değeri nasıl yazdırılır? – river
Dönüş değerlerini yakalamak için, [docs] (https://docs.python.org/3.5/library/sys.html#sys.settrace) adresindeki 'msg == 'return' i işaretleyin. Döndürülen değer 'arg'de olacaktır. – marc