Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
Gelişmiş Fonksiyonlar
Kısmi Fonksiyonlar
Amaç
Kısmi fonksiyonlar kullanılarak iskeleye teslim edilen yapı malzemelerini paketleyin ve yerleştirin.
Bazı malzemeler iskeleye teslim edildi, paketlenmeli ve inşaat malzemesi olarak kullanılabilmeleri için depolanmalıdır. Malzemelerin bez ile sarılıp ip ile bağlanması gerekmektedir. Malzemeleri paketlerken tüm öğelerin tartılması, daha sonra etkili bir şekilde taşınabilmeleri için önemlidir. Bunu kolaylaştırmak adına, bu süreci Kısmi Fonksiyonlar kullanarak optimize edebiliriz.
Kısmi Fonksiyon, büyük ölçüde sabit olan argüman değerlerini eklemenize gerek kalmadan kısaltılmış özel bir fonksiyondur. Bu, birden fazla argüman alan fonksiyonların sadece tek argüman veya istediğiniz sayıda argüman ile çalıştırılabilmesini sağlar.
from functools import partial
Başlamak için, kod düzenleyicinin en üstüne yerleştirilecek olan functools modülünden partial'ı içe aktarmanız gerekmektedir; bu, Kısmi Fonksiyonlar oluşturmanıza olanak tanır.
weight adında bir fonksiyon oluşturun ve bu fonksiyon üç (3) argüman alsın: thread, cloth ve material. Bu fonksiyon, paketlenmiş malzemelerin ağırlığının hesaplanmasını sağlayacaktır, bu süreci daha da optimize etmek için kısmi bir fonksiyona yönlendirebiliriz.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
package adında bir Kısmi Fonksiyon oluşturun, bu lambda fonksiyonlarına benzer şekilde ayarlanır. partial() kullanarak fonksiyonu oluşturun ve fonksiyonun adını, atamak istediğiniz argümanlar için sabit değerlerle birlikte ekleyin.
Orijinal fonksiyondan atamadığınız herhangi bir argüman, Kısmi Fonksiyon tarafından atanması gereken argüman haline gelecektir. package() Kısmi Fonksiyonu durumunda bu material argümanıdır.
Sandıkların önündeki koyu X işaretlerine doğru ilerleyin ve paketleme malzemelerini alınız. Sarı halı üzerindeki X işaretinde, collect() fonksiyonunu kullanarak "thread" toplayın ve mor halı üzerindeki X işaretinde, collect() fonksiyonunu kullanarak "cloth" toplayın. Bu öğeler, malzemeleri paketlemek için kullanılacaktır.
İskele boyunca yürüyün ve tüm inşaat malzemelerini toplayın, bunlar: bricks, planks, red_bricks ve wood'dur. Topladıktan sonra, her biri için topladığınız sayı kadar değeri, malzemenin adıyla oluşturulmuş bir değişkene ekleyin, örneğin: bricks = 3.
Sonrasında, sandıkların önündeki aydınlık X işaretlerine doğru ilerleyin ve inşaat malzemelerinin ağırlığını depolamadan önce hesaplayın. package() Kısmi Fonksiyonu ile birlikte speak() fonksiyonunu kullanarak ağırlığı hesaplayın. package() fonksiyonuna malzeme değişkenlerini argüman olarak verin, örneğin:
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
Bunu takiben, place() fonksiyonunu kullanarak malzemeyi sandıklara yerleştirin, yukarıdaki örnekteki gibi package() fonksiyonunu da kullanın.
Kırmızı halı üzerindeki aydınlık X işaretinde bricks, mavi halı üzerindeki aydınlık X işaretinde planks, turuncu halı üzerindeki aydınlık X işaretinde red_bricks ve yeşil halı üzerindeki aydınlık X işaretinde wood malzemelerini tartın ve depolayın. Seviyeyi tamamlamak için dört (4) malzemenin de doğru sandıklarda tartılıp depolandığından emin olun.