Degisken ismini cekmek

isim = ‘muxtar’ gibi bir kod var diyelim benim icin gerekli ola
isim sozunu ‘isim’ yani string olaraq geri almak mumkunmu acaba boyle birsey?

globals fonksiyonu veriyordu

Siz sanırım değişkenin ismine erişmek istiyorsunuz, bunu yapmaktaki amacınız ne?

Nereden geri almak?

"isim" veya 'isim' demek yetiyor sorunun bu haliyle.

1 Beğeni

evet ismine erismek istiyorum yani name = “ekrem” dediyim zaman ben name kendisine erismek istiyorum

ben azeriyim belkide tam iyi anlatamadim sozleri bulmakda zorlaniyorum. Istediyim sey degiskenin ismini bulmak onun degerini yok

Niçin kendi yazdığınız kodda böyle bir ihtiyaç duyuyorsunuz, asıl amacınız ne? Bu değişkenin ismini elde edince ne yapacaksınız?

Bunları soruyorum çünkü garip bir şey istiyorsunuz, bence bir XY problemi var burada:

@EkremDincel’in bahsettiği gibi buna neden ihtiyaç duyuyorsunuz bilmiyorum ama şöyle yapabilirsiniz.

from collections.abc import Hashable

degisken = "değer"
liste = [1, 2]

get_identifier_name = lambda x: None if not isinstance(x, Hashable) else \
    {v: k for k, v in globals().items() if isinstance(v, Hashable)}.get(x)

print(get_identifier_name("değer"))
print(get_identifier_name([1, 2]))

Ama yukarıdaki kodların şöyle bir handikapı var, eğer aynı değere sahip iki değişken varsa, son tanımlanmış olan değişkeni alırsınız.

1 Beğeni

Aslinda ne icin gerekli oldugunu suan bende aciklayamam bir kod yaziyordum aklima o anda geldi o yuzden sordum sonra baska yontemle cozdum, ama yinede boyle bir ozllik varmi diye buraya yazdm illaki bir yerde gerekli olacakdir diye dusunuyorum c#-dada boyle ozellik var az ocne gordum googlede ararken

Sorunun tam olarak çözüme kavuşması için amacınızı bilmemiz lazım.

amacima ulasdim sayilir bazi zamanlarda kod yazarken elinde olan veya olmayan seylere ihtiyyac duyuyorsun bendede oyle birsey yarandi ve onu cozdum ama boyle bir seye gereksinim duydum ve python-da bu ozellik olduguna gore illaki ihtiyyac duydugumuz yerlerde vardi. Eger benim neden sordugumu bilmek istiyorsaniz kodumu inceler neden bunu sordugumu tam net soylerim

Degiskenin ismi “isim”, degismiyor. Yani su yeter:

def degiskenin_ismini_al():
    return 'isim'
print(isim)

yazarak çıktı olarak

muxtar

elde edebilirsiniz

@Muxtar_Bayramov 'un dedği tanımlı değişkenler arasından istediği değişkenin ismini çekmek
@dildeolupbiten de bunun çözümünü gösterdi sizin yaptığınız ise "isim" değerini döndürmek

Benim yaptığım tam anlamıyla bir çözüm sayılmaz. Çünkü aynı değere sahip iki değişken için get_identifier_name fonksiyonu son tanımlanmış olan değişkenin ismini döndürecek.

from collections.abc import Hashable

degisken1 = "değer"
degisken2 = degisken1

get_identifier_name = lambda x: None if not isinstance(x, Hashable) else \
    {v: k for k, v in globals().items() if isinstance(v, Hashable)}.get(x)

print(get_identifier_name("değer"))

Çıktı:

degisken2

Ama kodları şöyle değiştirirsek, sorun çözülür.

degisken1 = "değer"
degisken2 = degisken1
degisken3 = {"a": 1}


def get_identifier_name(x):
    if len(result := [k for k, v in globals().items() if x == v]) == 1:
        return result[0]
    else:
        return result
                

print(get_identifier_name("değer"))
print(get_identifier_name({"a": 1}))

Çıktı:

['degisken1', 'degisken2']
degisken3

Tanimli degiskenler arasindan hangisinin ismini cekmek?

“isim” isimlinin ismini cekmek istiyorsa benim kodum dogru

1 Beğeni

programa girdi şeklinde değer girilir eğer o değere sahip bir değişken varsa o değişkenin ismi çekilir şeklinde olabilir buda kısmen @dildeolupbiten in yaptığı şey yani aslında @Muxtar_Bayramov un istedği şey

Peki ayni degere sahip iki degisken oldugunda ne yapmak istiyor?
Veya verdigi degere sahip olan degisken olmadiginda?

Şu ana kadar, değerden, değişkeni bulmamı gerektirecek hiçbir durumla karşılaşmadım. Veya karşılaştıysam bile hatırlamıyorum. Tahminim o ki, eğer aklınıza böyle bir yol geldiyse, muhtemelen izlemeye çalıştığınız yola alternatif bazı yollar vardır. Ve bu konuda @EkremDincel’in bahsettiği bir XY problemiyle karşı karşıya olduğumuzu düşünüyorum.

Belki de OP, sadece merakından soruyordur diyeceğim ama kendisi bir amacının olduğundan bahsetmişti. Dolayısıyla bizimle kodlarını paylaşırsa ve bu kodlardaki hangi kısımda değerden değişkene ulaşmaya çalıştığını gösterirse, belki alternatif bir çözüm önerebiliriz.

3 Beğeni