Common Language Runtime tüm .NET dillerinin altında çalıştığı gibi IronPythonda da kullanılmaktadır. CLR modülünün import edilmesi IronPython’un en önemli özelliklerinden birisindir. clr bildiğimiz gibi .NET ‘in üzerinde bulundurduğu CLR (Common Language Runtime)dir. IronPython da .NET kütüphaneleri ile bağlantı kurmamızı sağlayacak ve istediğimiz .NET kütüphanesini rahatlıkla çağırabileceğiz.
Jython ile Python’u JVM ‘de çalışmasını sağlayan Jim Hugunin, Python’u .NET platformuna taşımak için Microsoftta başlattığı IronPython projesi ile C#’ın da geleceğini değiştirdi. C# 4.0 Tasarım takımında yer alarak özellikle Statik olarak kodlanan fakat dinamik gibi davranmasını sağlayarak çok önemli bir özellik getirdi. C# ‘ın IronPython ile çok rahat bir şekilde haberleşmesinin de çok büyük katkılar sağladı ve daha ne gibi ekstra özellikler bizi bekliyor önümüzdeki günlerde göreceğiz.
IronPython , 2.0 sürümü ile DLR (Dynamic Language Runtime) üzerinde çalışmaktadır; bu da CLR’nin benzeri bir yapı olup,Dinamik diller için özel olarak tasarlanan bir yapıdır. DLR ile birlikte dinamik dillerin çalışmaları hem daha hızlı olacak hem de .NET ailesi birbiri ile daha rahat haberleşip ve iletişim sağlıyacak.
Şekildeki diagramdaki gibi diller DLR üzerindeçalışacak ve .NET, silverlight, python, ruby, COM nesnelerine rahatlıkla erişebilecek.
.NET 4.0 da hazır olarak gelecek olan DLR sayesinde C# 4.0 ile static bir dil olan C#ta dynamic gibi davranan tipler tanımlamak çok kolaylaşacak.
.NET Kütüphanelerine Erişim
Şimdi de .NET Kütüphanelerine erişime bir göz atalım. Uygulamalarımızı ve örneklerimizi "IronPyton Console" ile yapacağız. Eğer sisteminizde yüklü değilse
buradan IronPython 2.0 kararlı sürümünü indirebilirsiniz.
Python ve IronPython da dışardan modüller yüklemek içim "
import" kullanılır
import System.String # Bu şekilde System.String'teki tüm modülleri yükleri
from System import String # bu kalıpla da Namespace'ten istediğimiz fonksiyonu veya modülü tek olarak yükleyebiliriz.
import System.String komutu ile ilgili kütüphaneyi çalışma alanımıza almış olduk ve System.String kütüphanesindeki tüm işlemleri artık IronPython üzerinde uygulayabiliriz.
Yukarıdaki gibi Sadece ilgili kütüphaneyi yükleyerek yapabilecekken; CLR ‘ı da yükleyerek işlemlerimimizi gerçekleştirebiliriz.
Şimdide Python ve .NET string metodlarına bir göz atalım; Python
da bulunan “str” modülü ve .NET de bulunan System.String
namespacesindeki string özelliklerini kullanalım.
"str" modülü IronPython’ın orjinalinde bulunurken; System.String modülü
“import clr” komutunun ardından yüklenecektir. Bu .NET modülünün
yüklenmesi ardından python’un "str" modülü de bulunmaya devam edecektir.
clr modülünü import etmeden:
>>>kelime = "İBRAHİMKİVANC"
>>>kelime.lower()
'ibrahimkivanc'
>>>kelime.ToLower() # .NET kütüphaneleri yüklü olmadığı için aşağıdaki hatayı verecek
Traceback (most recent call last):
Filer “<stdin>”, line 1, in <module>
AttributeError: 'str' object has no attribute 'ToLower'
import clr
komutu ile clr miz IronPython çalışma alanımıza alınmış oldu. Şimdide
buna bir örnekle göz atalım;
clr modülünü import ettikten sonra:
>>>
import clr
>>>
kelime.lower() # python methodu clr ile de çalışmakta
'ibrahimkivanc'
>>>
kelime.ToLower() # artık çalışıyor
'ibrahimkivanc'
Not: Python ve IronPythonda yorum satırı "#" işaretinden sonra yazılmaktadır.
Görüldüğü gibi clr'ı yüklemeden hata aldık, clr 'ı import ettikten sonra ToLower() fonksiyonumuz çalışmakta.
Console da yaptığımız örneği aşağıdaki gibi “lib.py” dosyasından istenilen özelliği "app.py" uygulamamıza çekebiliriz.
# lib.py
import clr
def kucult(kelime): return kelime.ToLower()
# app.py
import lib
kelime = "MERHABA"
print lib.kucult(kelime) # ekrana “merhaba” yazdırır
#print kelime.ToUpper() # clr modülü diğer dosyamızda yüklendiği için burada hata verecektir.
Bu yazımızda herhangi bir .Net kütüphanesinin nasıl IronPython’a nasıl yükleneceğini ve System.String kütüphanesinin kullanımını gördük. IronPython 2.0 ile bizi bekleyen güzelliklerden ve mimarisinden de bahsettik. Takıldığınız, sormak istediğiniz veya düzeltmek istediğiniz yerleri
ibrahim.kivanc@msakademik.net
mail adresime iletebilirsiniz
.
Hepinize Kolay gelsin..