Python Syntax (Söz dizimi) - Mustafa Sabri OĞUZ

Duyurular

26 Mayıs 2019 Pazar

Python Syntax (Söz dizimi)

Her programlama dilinde olduğu gibi Python dilinin de kendine has bir söz dizimi (syntax) bulunmaktadır. Python'u öğrendikçe ve kullandıkça fark edeceksiniz ki, diğer programlama dillerine göre yazımı daha kolay ve basittir.

Bu yazımda Python kodlarının nasıl yazılıp, kullanılabileceğini göreceğiz.

Python Programlama Yöntemleri

Önce ki yazımda Python kodlarının nasıl derlenip, çalıştırılacağından bahsetmiştim. Bu yazım da interaktif programlama modunu da işleyerek ufak bir tekrar yapacağız. 

İnteraktif Programlama

Bu mod kodlarımızın doğrudan yazıp, uygulayabildiğimiz moddur.
Komut istemcisi üzerinden Python'u parametresiz olarak çağırıyoruz. Ardından öğreneceğimiz Python kodlarını yazabiliriz.
print("Merhaba Dünya")
Üstte ki python ifadesi ile "Merhaba Dünya" yazdırmış olduk.

Script Programlama

Python kodlarımızı Python uzantılı bir dosyaya kayıt ederek, çalıştırma işlemine script programlama denir. Önce ki yazımda anlattığım gibi bir Python dosyası oluşturmamız gerekiyor.
print("Merhaba Dünya")
Oluşturmuş olduğumuz Python dosyasına üstte ki print ifadesini yazıp, dosyayı kayıt ediyoruz.

python dosyaadi.py
Yine Komut İstemcisi (cmd, powershell veya terminal) ile üstte ki komutla dosyayı Python üzerinde çalışıyoruz.

Python Tanımlayıcıları

İfadeleri oluşturduğumuz değişkenler, sabitler, fonksiyonlar, sınıflar ve aklıma gelmeyen bir çok şey Python için tanımlayıcı anlamını taşır. Bu tanımlayıcılar belirli kurallara uygun olarak yazılmalı.

Bu kurallar ise şunlar;
  • "_" Alt çizgi haricinde herhangi bir özel karakter (?, =, *, -, vs...) kullanamazsınız.
  • "_" Alt çizginin başta ve sonda kullanılmasına göre özel durumları bulunmaktadır. Bunları zaman içerisinde öğreneceğiz.
  • Tanımlayıcılar sayı ile başlayamaz. Yani 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 sayıları ile şöyle bir tanımlayıcı oluşturamazsınız; "2sayi = 123"
  • Python büyük-küçük harfe duyarlı bir dildir. def fonksiyon(): ile def Fonskiyon(): tanımlayıcılar Python için farklı tanımlayıcılardır.
  • Dilin temelini oluşturan anahtar kelimeleri kullanamazsınız. Bu anahtar kelimeler Python tarafından rezerve edilmiştir. 

Rezerve Edilen Kelimeler

Tanımlayıcı olarak kullanamayacağınız anahtar kelimeleri aşağıda ki tablodan görebilirsiniz;

anddefFalseimportnotTrue
asdelfinallyinortry
assertelifforispasswhile
breakelsefromlambdaprintwith
classexceptglobalNoneraiseyield
continueexecifnonlocalreturn

Satırlar ve Girintiler

Satır ve girintilerin Python'da yeri oldukça önemlidir. Çünkü Python diğer diller gibi kod bloğu oluşturmak için süslü parantezler kullanmıyor. Bu nedenle Python'a alışana kadar satır ve girintilere dikkat etmemiz gerekiyor.
Örnek;
if (2 == 3):
    print("Bu yazı görüntülenmeyecektir.")
print("Bu yazı görüntülenecektir.")
Bunların arasında ki fark, bahsettiğimiz gibi birinin if bloğunda olduğunu ifade ettiğimiz girintiye sahip olması, diğerinin de girintisiz olması. İlk print ifadesi, if şartı sağlanmadığı için çıktı oluşturmayacaktır.. İkinci print ifadesi ise girintisiz olduğundan global seviyede (normal düzende) işlem görmektedir ve çıktı oluşturmaktadır.

Çok Satırlı İfadeler

Eğer bir ifadeniz fazlasıyla uzun ve okunurluğu olumsuz yönde etkiliyorsa, ifadeyi birden fazla satıra yayarak yazabilirsiniz.
degisken = 12+ \
           a + \
           b + \
           c
Örnekte görüldüğü üzere Ters Slash ("\") karakterini satırın sonuna ekliyoruz. Böylece Python ifadenin sonra ki satırda devam ettiğini anlıyor.

Python'da String İfadelerin Kullanımı

Python'da bir string ifade oluşturmak, diğer dillerden pek farklı değildir. 2 adet kullanım şekli bulunmaktadır.
Tek Tırnak Kullanımı
string_yazi = 'Bu bir test yazısıdır.'
Çift Tırnak Kullanımı
string_yazi = "Bu bir deneme yazısıdır"
Dikkat edilmesi gereken husus; tek tırnak ile yazıya başladı iseniz tek tırnak ile bitirmeniz gerekiyor. Tek tırnak ile başlayıp, çift tırnak ile sonlandırılamaz. Aşağıda ki örnek hatalıdır.
string_yazi = "kafamıza göre hareket edemiyoruz.'
Bu konuda daha anlatılacak birçok detay var ama şimdilik bunları bilsek kafi...
Not: Bu konu Stringler konusunda detaylı olarak anlatılacaktır.

Yorum Satırları

Her programlama dilinde olduğu gibi Python'da yorum satırları oldukça önemlidir. Yazdığımız değişkenlerin, fonksiyonların veya sınıfların ne işe yaradığını diğer yazılımcı ve yazılımcı adaylarına belirtmemiz gerekiyor. Bunun için Python'da # (Diyez) işareti kullanılır. Örnek;
# Özel Çıktı Alan Fonksiyon
def ciktiAl(deger):
     print(deger)

Dokümantasyon Satırı (Python Docstring)

Python geliştirici için yazdığınız fonksiyon veya metotları doğru bir şekilde kullanabilmelerine yardımcı olacak dokümantasyon yorum satırları bulunmaktadır. Bu yorumlara ise Docstring yorum satırları denir.
def fonksiyon(a, b):
    """
    Bu bir çoklu yorum satırıdır.
    """
    return a + b
Yukarıda ki kod örneğini kendinize uyarlayarak bir dosya da kullanabilirsiniz.
Örnek Kullanım;
Daha önceden tanımladığımız fonksiyonu, kullanmak üzere çağıracağımız zaman fonksiyon ifadesi ve yazdığımız açıklama, kullandığımız editör tarafından görüntülenecektir.
Uyarı: Python'u geliştirmede kullandığınız IDE veya editörünüzün bu özelliği desteklediğinden emin olun!

Boş Satırlar

Boş satırlar, Python için herhangi bir anlam ifade etmemektedir. Python bu satırları direk es geçse de, geliştiriciler için kod blokları-mızı ayırmada ve kodun okunurluğunu attırma da kullanılması gereken bir detay! İlk olarak boş satır içermeyen kullanımı görelim.
import datetime
def ZamaniGoster():
    print(datetime.datetime.now())
ZamaniGoster()
Şimdi boş satırlı kullanımı görelim.
import datetime

def ZamaniGoster():
    print(datetime.datetime.now())

ZamaniGoster()
Sizinde fark edeceğiniz üzere boş satırlı kodlama öncekine göre daha düzenli görünüyor.

Kullanıcıdan Veri Bekleme (Programı Bekletme)

C dil ailesinde olduğunda gibi programın hemen kapanmaması için kullanıcıdan bir işlem yapmasını bekleriz. Bunun için;
deger = input("Programı sonlandırmak için \"Enter\" tuşuna basın.")
üstte ki ifade örneğini kullanıyoruz.

Birden Fazla İfadenin Tek Satırda Yazılması

Python kodlarımızda oluşturduğumuz ifadeleri tek bir satır üzerinde yazabiliriz. Bu kodumuzun biraz daha düzenli durmasına yardımcı olacaktır. Bunu yapabilmek için her ifademizin sonuna ";" (noktalı virgül) karakteri ekliyoruz.
import datetime; TarihveZaman = datetime.datetime.now(); print(TarihveZaman)
Bu şekilde basit ve kısa kodları tek satırda toplayabilirsiniz.

Kod Bloğu Oluşturmak

if, else, while, for, class, def, vs... anahtar kelimeleri ile kod bloğu oluşturabilmek için ":" (iki nokta üst üste) karakterini ifademizin sonuna ekliyoruz. Ardından kod bloğumuzun içerisinde yer alacak ifadelerimizi girintili olarak yazıyoruz. Örnek;
if kosul: 
Çalıştırılacak İfade(ler)
elif kosul:
Çalıştırılacak İfade(ler)
else :
Çalıştırılacak İfade(ler)

Komut Satırı Argümanları

Bir çok programda olduğu gibi Python'un da komut satırı argümanları bulunmaktadır. Bu argümanlar, Python'un çalışmasını değiştiren özellikler sunmaktadır. Python'un kullanılabilir argümanları görmek için "Python -h" komutunu kullanabilirsiniz.
PS C:\Mso-Python-Dersleri> python -h
usage: C:\Users\Lanet Adam\AppData\Local\Programs\Python\Python35\python.exe [option] ... [-c cmd | -m mod | file | -] [arg] ...Options and arguments (and corresponding environment variables):
-b : issue warnings about str(bytes_instance), str(bytearray_instance) and comparing bytes/bytearray with str. (-bb: issue errors)
-B : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser; also PYTHONDEBUG=x
-E : ignore PYTHON* environment variables (such as PYTHONPATH)
-h : print this help message and exit (also --help)
-i : inspect interactively after running script; forces a prompt even
if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-I : isolate Python from the user's environment (implies -E and -s)
-m mod : run library module as a script (terminates option list)
-O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x
-OO : remove doc-strings in addition to the -O optimizations
-q : don't print version and copyright messages on interactive startup
-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE
-S : don't imply 'import site' on initialization
-u : unbuffered binary stdout and stderr, stdin always buffered;
also PYTHONUNBUFFERED=x
see man page for details on internal buffering relating to '-u'
-v : verbose (trace import statements); also PYTHONVERBOSE=x
can be supplied multiple times to increase verbosity
-V : print the Python version number and exit (also --version)
-W arg : warning control; arg is action:message:category:module:lineno
also PYTHONWARNINGS=arg
-x : skip first line of source, allowing use of non-Unix forms of #!cmd
-X opt : set implementation-specific option
file : program read from script file
- : program read from stdin (default; interactive mode if a tty)
arg ...: arguments passed to program in sys.argv[1:]

Other environment variables:
PYTHONSTARTUP: file executed on interactive startup (no default)
PYTHONPATH : ';'-separated list of directories prefixed to the
default module search path. The result is sys.path.
PYTHONHOME : alternate <prefix> directory (or <prefix>;<exec_prefix>).
The default module search path uses <prefix>\lib.
PYTHONCASEOK : ignore case in 'import' statements (Windows).
PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.
PYTHONFAULTHANDLER: dump the Python traceback on fatal errors.
PYTHONHASHSEED: if this variable is set to 'random', a random value is used
to seed the hashes of str, bytes and datetime objects. It can also be
set to an integer in the range [0,4294967295] to get hash values with a
predictable seed.
Şimdilik söz dizimi (syntax) hakkında yaptığım araştırmalar ve aklıma gelenler bunlardı. Eğer sizinde sormak veya eklemek istediğiniz ayrıntılar varsa, bunu yorumlar bölümünden dile getirebilirsiniz.
Kaynaklar:
https://www.tutorialspoint.com/python/python_basic_syntax.htm
https://www.e-adys.com/python/2-python-temel-sozdizimi/

Hiç yorum yok:

Yorum Gönderme