Fonksiyonel Programlama (2) # Python

in #blog4 years ago

Bir önceki yazımda fonksiyonel programlamadan bahsetmiş genel olarak yaşadığım sorunları anlatmıştım.

Fonksiyonel programlama biraz geleneksel programlamaya alışkın olanlar için sıradışı bir kavram.


Source

Düşünsenize normalde 4-5 satırlık programı tek bir satırda yazıyorsunuz.

Neyse uzatmayım. Bugün fonksiyonel programlama ile alakalı iki örnek paylaşacağım bunlardan birincisi for döngüsü ile diğeri ise lambda ifadesi ile alakalı olacak.

lambda ifadesi

Lambda ifadesi, fonksiyon tanımlaması yapmak için kullanılan bir yapı.

Yani lambda anahtar kelimesini kullanarak matematiksel bir formül yazar gibi fonksiyon yazmanızı sağlıyor.

Şimdi basit bir fonksiyon nasıl tanımlanır görelim. Sonrasında aynı fonksiyonu lambda anahtar kelimesi ile tekrar yazalım :

Görüldüğü gibi fonksiyon tanımlamak için def anahtar kelimesi kullanılır. Eğer fonksiyon parametre alan bir fonksiyon ise parametreler, parantez içerisine aralarına virgül koyularak yazılır.

Fonksiyonun gövdesi ise iki nokta üst üste işaretinden sonra yazılır. Sistem genel olarak böyle.

Bu ifadeyi şimdi de lambda anahtar kelimesi ile yazalım :

Görüldüğü gibi fonksiyonu tek satırda yazmış olduk. lambda ifadesini yazdıktan sonra ilk yazılanlar parametreler operatorden sonra yazılanlar ise fonksiyonun gövdesi oluyor.

Yani lambda ifadesi bu şekilde basit fonksiyonları tek satırda yazmamıza imkan veriyor. Bu ifade sanırım eski programlama dillerine de yeni sürümlerinde geldi.

lambda anahtar kelimesi ile genel olarak map() fonksiyonu kullanılıyor. map() fonksiyonu aldığı fonksiyonu tüm liste elemanlarına uygulamak için kullanılıyor.

Bir örnek yapalım :

Evet evet örnek bu :) Şimdi tek satırda gördüğünüze şaşırmayın.

O tek satır içerisinde lambda ile her sayının küpünü alan bir fonksiyon ve range ile oluşturulmuş bir listenin yanı sıra bu fonksiyonu her bir liste elemanına uygulayan bir map() fonksiyonu bulunuyor.

Açıklaması ile koddan uzun sürdü :S Neyse çıktısına bakınca daha iyi anlaşılacaktır :

Son olarak for() döngüsü ile alakalı bir örnek vereyim ve yazımı bitireyim.

Bu döngünün çıktısı ise aşağıdaki gibidir :

[(4, 1), (4, 3), (4, 5), (5, 1), (5, 3), (5, 4), (2, 1), (2, 3), (2, 4), (2, 5), (3, 1), (3, 4), (3, 5)]

İki adet for döngüsü görüyorsunuz değil mi? Bu döngülerden en başta olanı en dıştaki for döngüsü demektir. Sonraki gelen for döngüsü ise dıştaki for() döngüsünün içinde yer almaktadır.

Açıklamak gerekirse x’in her bir değeri için y değerlerini kontrol et ve x ile aynı olmayan y leri al demek. E durum bu olunca birbirinin aynı olmayan (x,y) ikilileri geliyor.

Tabi bu uzun işin tek satırda yazılıyor olması yine fonksiyonel programlama ile açıklanıyor.

Sort:  

Congratulations @bpn! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You got your First payout

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

You got a 50.00% upvote from @bid4joy courtesy of @bpn!

You got a 50.00% promotion boost from @shares courtesy of @bpn! Thank you for following @Shares rules of promoting your articles.

Have a nice day.
@Shares - Keep steeming good articles to help Steem network grow.

You got a 50.00% upvote from @whalecreator courtesy of @bpn! Delegate your Steem Power to earn 100% payouts.

You got a 50.00% upvote from @whalepromobot courtesy of @bpn!

Thank you for using @sleepagent bid bot serves.
This post has received a 100 % upvote from @sleepagent.

You got a 50.00% upvote from @redlambo courtesy of @bpn! Make sure to use tag #redlambo to be considered for the curation post!

Coin Marketplace

STEEM 0.24
TRX 0.11
JST 0.031
BTC 61585.79
ETH 3005.19
USDT 1.00
SBD 3.68