piton

Referansa Göre Geçiş. Python'da Değer

Referansa Göre Geçiş. Python'da Değer
Python'u öğrendikten sonra, özellikle diğer birçok bilgisayar diline aşina iseniz, tahmin ettiğiniz gibi işlevlerin argümanları bir noktada değiştirmediği örnekleri bulabilirsiniz. Birçok dil, referans olarak geçerli değişkenlere referans olarak iletmek olarak tanımlanan yöntem bağımsız değişkenlerini kullanır. Python'un yöntem argümanlarını ele almanın özel yolunu kavramak isteyen ileri düzey bir Python geliştiricisiyseniz, bu kılavuz gerçekten sizin için.

Python, Nesne Referansına Göre Geçişi Destekler

Referansa göre geçiş ve değere göre geçiş, inkar edilemez bir şekilde programlama dilleri arasında geçişi parametrelendirmenin en iyi tanınan ve kolay anlaşılır iki yoludur. Python, ne yazık ki, 'nesneye göre referans'tır, ne "Değere Göre Geçer" ne de "Referansla Geçer", genellikle "Nesneye Göre Çağrı" ve "Paylaşıma Göre Çağrı" olarak adlandırılır.” Referans ile geçmenin teknik özelliklerine girerken, onu segmentlere ayırarak kavramın kendisine daha yakından bakmakta fayda var:

Geçmek: bu, bir argümanla bir yöntem sağlamak anlamına gelir.

Referans olarak: bu, yönteme geçtiğiniz argümanın, o değişkenin farklı bir kopyası yerine artık depoda bulunan bir değişkene atıfta bulunduğu anlamına gelir.

Yönteme tanımlanmış bir değişkene bir referans atadığınızda, karşılık geldiği değişken bu Referans üzerindeki tüm işlemlerden açıkça etkilenir. Şimdi bunun pratikte nasıl çalıştığına dair bir örnek ele alalım. Bu örnekte, bir değişken tanımladık 'arg' değerine sahip 4. Bu senaryo boyunca, değişken 'arg' onun yerine değiştirilmedi. Python, mevcut bir değişkene bağımsız bir değer olarak referans vermek yerine, sağladığınız argümanı ele alıyor gibi görünüyor.

Bu, Python'un Referans yerine argümanları değere göre hareket ettirdiği anlamına mı gelir?? Python, argümanları atama yoluyla hareket ettirir, yani ne Referans ne de değer ile. Bunun mantığı iki yönlüdür:

Şu anda, geçen parametre bir nesneye işaretçidir. Bazı veri türleri değiştirilebilir ve bazıları değiştirilemez.

Değişken bir nesneyi bir işleve taşırsak, işlev aynı nesneye bir referans alır, böylece hepsini ruhunuzu tatmin edecek şekilde değiştirebilirsiniz; ancak, işlevdeki Referans'a yeniden katılmadan önce dış kapsam hiçbir şey bilmez. Bitirdiğinizde, harici Referans yalnızca asıl nesneyi hedefleyecektir. Değişmez bir nesneyi bir işleve taşırsanız, harici Referans her zaman yeniden bağlanamaz ve nesneyi yalnızca değiştiremezsiniz. İşleri çok daha basit hale getirmek için, tek tek anlayalım.

Referansa Göre Geç

Her şeyden önce, 'mylist' değişkeninin kendisinin bir liste olmadığını, değerleri olan bir listeye atıfta bulunduğunu anlamalısınız. 'mylist' değişkenini, içinde değerleri olan bir kap olarak adlandırabilirsiniz. Liste değerleri nesnelerdir. 'mylist' değişkeni, içeriğiyle birlikte doğrudan işleve teslim edildi.

Aşağıdaki kod örneğinde hem "liste" hem de "listem" aynı depolama değişkeni gibi görünüyor ve bu nedenle aynı depolama nesnesi için geçerli. Bu yüzden çıktıda 'Saeed' yazıyor.'

Değişken veya varlık üzerinde yapılan herhangi bir işlem, hemen arayan yöntemine yansıtılacaktır. Yöntem, değişkenin değerini tamamen değiştirebilir ve onu tamamen farklı bir nesneye hedefleyebilir. 'set_list' fonksiyonunda görebileceğiniz gibi, liste içeriğini değiştirdik ve 'Aqsa' elementine sahip yepyeni bir liste yazdırdık.' Bunun nedeni, değiştirilen listeyi geri döndürmemiz ve arayanla aynı satırda yazdırmamızdır.

Yöntem ayrıca aşağıdaki gibi aynı sonuç için değişkenin öğelerini yeniden tahsis edebilir. Listeye yeni bir değer eklediğimizi ve değişikliğin yansıtıldığını görebilirsiniz. Bir listeye benzersiz bir dize ekledik ve onu arayan kişiye geri gönderdik. Sonuç olarak, yöntem ve arayan, geçiş ilişkisi boyunca aynı değişkeni ve nesneyi kullanıyor.

Değere Göre Geçiş

Değere göre geçiş yoluyla, yöntem, arayanın kendisine atadığı argüman nesnesinin bir kopyası ile sağlanır. Bu, orijinal öğenin değişmeden kalmasını ve yapılan tüm değişikliklerin aynı nesnenin bir kopyasında ayrı bellek konumlarında tutulmasını sağlar.

Yöntem tarafından bir değişken veya varlık üzerinde yürütülen herhangi bir işlem için eşit derecede geçerlidir. Çağıran yöntemin kapsamındaki değişkenlerin ve nesnelerin kopyaları, bunları özetlemek için tamamen ayrılır.

Referansa Göre Nesneyi Geç

Bu durum boyunca, Python farklı olduğundan, Python'un yöntemleri, arayanın başvurduğu gibi depodaki çok benzer nesne referansını elde eder. Tersine, teknik 'mylist' (kap) değişkenini elde etmez. Çağıran yöntemi aynı nesneyi depolar; yöntem, kişinin kapsayıcısını oluşturur ve tıpkı değer geçişinde olduğu gibi, kendisi için tamamen yeni bir dizin oluşturur.

Çağıran ve yöntem, depolamadaki aynı nesneden bahseder, ancak eklenen yöntem bir listeye harici bir öğe uyguladığında, arayan varlık değiştirilir. Birden fazla etiketleri var, ancak aynı şeyler. Her iki değişken de çok benzer bir nesneyi tutar. Nesne tarafından hareket ettirilmesiyle olan ilişkisinin ardındaki anlam budur. Depolamada, yöntem ve arayan benzer bir nesne kullanır, ancak bunları birden çok değişken aracılığıyla yakalar. Çağıran değişken (kap), yöntem değişkeninde (kapsayıcı) yapılan herhangi bir değişiklikle değiştirilmeyecektir; yalnızca veriler veya içerik değiştirilir.

Sonuç

Python, Referans veya argümanların değerine göre hareket etmeyi kabul eden dillerden bağımsız olarak çalışır. Yöntem bağımsız değişkenleri, yönteme aktarılan her bir değere tahsis edilmiş yerel değişkenlerdir. Ancak bu yine de, argümanları proxy ile taşırken diğer dillerde bulacağınız sonuçları elde etmenizi engellemez.

How to Install and Play Doom on Linux
Introduction to Doom The Doom Series originated in the 90s after the release of the original Doom. It was an instant hit and from that time onwards th...
Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...