İleti ile çağrılan bir günlük işlevini ve ardından yazdırılacak bir veya daha fazla değişkeni tanımlamak istiyorum. Yani, böyle bir şey şu:Değişken argümanlarını önceki yığından gelen adlarla nasıl yazdırırım?
log("Oh no, error.", x, d)
günlük sorta tanımlanmış olacaktır istiyorum:
Oh no, error.
x = 5
d = { foo: "Foo", goo: "Goo" }
bu hiç yapılabilir:
def log(msg, *arg):
# Loop through arg, printing caller's variable's name and value.
Bu aşağıdaki dosyaya giriş yapacaktır ? İncelemeyi kullanarak yerlileri ve argümanları yazdırabilirim, ancak önceki karenin değişken adlarını kullanarak mevcut karedeki değerler arasında yineleyip yineleyemediğimi bilmiyorum. (inspect.getargvalues(previousFrame)
yılında locals
çok isim, ancak diğer isimlerin çok vardır.)
Değişken adlarını benzersiz olarak nasıl belirlersiniz? Arayan isim alanında 'y' olsaydı ve değeri de '5' olsaydı ne olurdu? Eğer arayan kişi 'd ['foo']' gibi bir şey geçerse? Arayanın ad alanındaki nesnelere rasgele tekrarlamanız gerekiyor mu? Bir işlev çağrısının sonucunu geçerse ne olur? log ('mesaj', x.bar()) '? Burada çözmek oldukça zor olan bir sürü durum var ... ama muhtemelen kümeyi inceleyebilir ve arayanın yerel değişkenlerinin _all_'ini yazdırabilirsiniz. – mgilson
* iç çek * Evet, sanırım doğru mgilson. Peki ne yapmalıyım? Bu yazıyı silmeli miyim? Ya da belki de benim arzulu düşüncem, sadece verdiğim değişkenleri kaydeden bir günlük fonksiyonu istiyorum. Bu hiç bitmeyecek mi? Yani, eğer 5'i geçirirse, 5 = 5 basar, eğer y geçirirse, y = 5'i basar. Eğer bir nesneyi geçirirse, object = str (object) basar. – Bitdiot
@Bitdiot, neden? Kötü yazılmadı ya da kötü organize edilmedi. Ve şahsen benim için soru ilginç – ForceBru