İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Python - Eval Fonksiyonu

ArViX - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
02/2013
Nereden:
cos a=cos bc
Mesajlar:
1.255
Konular:
83
Teşekkür (Etti):
118
Teşekkür (Aldı):
264
Ticaret:
(0) %
3 Hafta önce
#1
Python - Eval Fonksiyonu
Bugün ki konumuzda eval fonksiyonunu işleyeceğiz. Genellikle python programlamaya başlayan yeni arkadaşlarımız bu fonksiyonu kullanarak hesaplama işlemleri yapmaktadır oysa ki eval komutu filtrelemeden geçirmeden kullanmak büyük bir hatadır aşağıda örnek olarak yazdığım eval kullanılmamış bir hesap makinesini inceleyelim ve evalda ki gibi sınırsız veri girişi yapalım(tabi ki toplama fonksiyonunu çağırdıktan sonra bu kodda aynı anda toplama dışında ki diğer işlemleri yapamıyoruz ufak tefek eklemelerle gayet rahat yapılabilir)
Kod:
class arvix_hesapmakinesi():
    def toplama(self,*args):
        toplam =0
        for i in args:
            toplam+=i
        return toplam
    def carpma(self,*args):
        carpim=1
        for i in args:
            carpim *=i
        return carpim
    def bolme(self,a,b):
        return a/b
    def cikarma(self,*args):
        toplam =0
        for i in args:
            toplam+=i
        return toplam-2*toplam

a = arvix_hesapmakinesi().cikarma(4,5,6)
print(a)
yukarıda basitçe classtan ürettiğimiz fonksiyona istediğimiz kadar veri girişi yapıp toplama çıkarma ve çarpma yapabiliyoruz. (bölmeyi bilerek eklemedim saçma olmasından dolayı).Eval kullanmadan hemen hemen bu kadar kod satırı ile işlemlerimizi gerçekleştirebiliyoruz peki neden

bu kadar kısa kod satırı ile işimizi halletmiyoruz ?
İngilizce de evaluate kelimesinden dönüşmüştür işleme sokmak çalıştırmak anlamına gelir yani kısaca bu fonksiyonun görevi karnına gelen değerleri çalıştırmak ve işlemektir yukarıda gördüğümüzde gayet masumhane şekilde çalışmaktadır.Peki biz bu eval fonksiyonu ile yazdığımızı düşündüğümüz hesap makinesine
Kod:
__import__("os").getlogin()
komutunu gönderirsek ne olur ? Şuanda oturumunu açtığımız kullanıcı adımızı bize söylemektedir.Biz bu programı hesap makinesi yapmak için yazmıştık oysa ki artık program amacından saptı ve farklı şekilde çalıştırabiliyor.Bir web sunucumuz üzerinde arka plan işlemi yaptırdığımızı düşünelim bu fonksiyonu biz ne kadar iyi niyetle yazsak da bu şekilde istismar edilebilir sunucuda dosya açılabilir silinebilir/okunabilir/yazılabilir o saatten sonra her şey saldıran kişinin hayal gücüne kalmıştır.

Ee ben peki bu güzelim fonksiyonu kullanamayacak mıyım?Tabi ki kullanacaksanız ancak gerekli filtreleme işlemleri yaptıktan sonra. Örneğin sayıların bulunduğu bir karakter dizisi tanımlayıp tek tek eşleştirip bunlarla uyuşmayan bi karakter dizisi geldiğinde programı direkt olarak sonlandırabilirsiniz

---------------------

Bilmediklerimi ayaklarımın altına alsaydım, başım göğe ererdi.
Evrimin bir parçasıyım, durmak bitmek demektir


8/N3n1K1/6B1/1Pk2p2/2b2P2/6P1/7P/8 b - -
Konu ArViX tarafından ( 3 Hafta önce Saat 01:05 ) değiştirilmiştir.
Kerberum, Rhotav, Rozzz, 1071malazgirt Teşekkür etti.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı