Python (zimanê bernamesaziyê)

**Python** ([ˈpʰaɪθn̩], bi kurdî [ˈpʰajtoːn]) zimanekî astbilind û înteraktîv ê bernamesaziyê ye ku di 1991ê de ji aliyê Guido van Rossum ve hate çêkirin.

Fîlosofiya çêkirina Python bi karanîna xwe ya berbiçav a qada spî (*whitespace*) ya *sîgnîfîkant* girîngiyê dide xwendina kodê. ''Konstrûktên zimanê'' wî û *object-oriented* wî armanc dike ku alîkariya bernamesazan bike ku koda lojîkî û zelal ji bo projeyên piçûk û mezin-pîvan binivîsin.

Python bi dînamîkî tête nivîsandin û zibil tête berhev kirin (Garbage Collection). Ew piştgirî li gelek paradîgmayên programkirinê dike, di nav de programên damezrandinî (bi taybetî, prozedûral), objekt-orîentkirî û fonksiyonelî. Python ji ber pirtûkxaneya standard a berfireh, timûtim wek zimanekî "bataryayên tê de" (bi înglîzî "batteries included") têne vegotin.
## Dîrok
[thumb|150px|[Guido van Rossum li OSCONê 2006]]

Ziman di destpêka 1990an de ji hêla Guido van Rossum ve li Centrum Wiskunde & Informatica li Amsterdam wek serkarê zimanê programkirinê ABC hate pêşve xistin û orijînal ji bo pergala xebitandinê ya Amoeba belavkirî hate armanc kirin.

Nav ne vedigere (wek logo pêşnîyar dike) ser cinsê marê bi navê (pythons), lê orijînal li ser navê komedyenê înglîzî Monty Python hetiya bi nav kirin. Yekemîn versiyon di çilê 1994an de bi navê Python derket. li gorî versiyonên pêşîn, hin konseptên programkirina fonksiyonelî hatin împlêment kirin, lê piştra vana hatin terikandin.

Python 2.0 di 16ê cotmeha 2000an de hate weşandin. Di fonksiyonên nû de Garbage Collection'eke fûl-fonksiyonelî hebû û piştgiriya koma karakterê Unicode bûn. Di fonksiyona 2.6an de, arîkariyek hate ava kirin, ku dikare were bikar anîn ka kîjan rêzikên kodê ji hêla Pythonê 3ê ya pê re piştgirî nayên girtin û ji ber vê yekê di versiyonên li ser bingeha wê de nema têne meşandin.

Python 3.0 (bi Python 3000 jî bi nava) jî di 3ê Kanûna 2008an de piştî demeke dirêj a pêşveçûnê xuya bû. Ew hin guhartinên kûr ên li ser ziman, wek rakirina redundansan di komikên rêwerzê û konstrûktên kevin de digire nav xwe. Ji ber ku Python 3.0 bi qismî bi versiyonên berê re înkompatîbel e, Python Software Foundation biryar da ku piştgiriya Python 2.7 bi paralel bi Python 3 re bi versiyonên nû re heya dawiya 2019 berdewam bike.
## Felsefe
Bikarhênerên Python timûtim behsa felsefeya Python dikin ku bi felsefeya Unix re pir dişibihe. Koda ku prensîbên Python dişopîne tê gotin ku *pythonîk* e. Van prensîban ji hêla pêşvebirê Python Tim Peters ve di Zen a Python de hate vegotin.
* Xweşik ji pîsiyê çêtir e.
* eksplîsît ji împlîsît çêtir e.
* Hêsan ji Kompleksê çêtir e.
* Kompleks ji komplîke çêtir e.
* Xwendin tê hesibandin.

## Syntaks û semantîk
Wateya Python ew e ku bibe zimanekî bihêsanî tê xwendin. Formatkirina wê bivîzuelî netêkçûyî ye, û ew gelek caran keyworedên înglîzî bikar tîne ku zimanên din xalbendî bikar tînin. Berevajî gelek zimanên din, ew ji bo veqetandina blokan kevanên kurîşkî bikar nayîne, û semîkolonên piştî daxuyaniyan opsiyonelî ne. Ji C an Pascal kêmtir îstîsnayên syntaktîkî û bûyerên taybetî hene.

### Indentasiyon
Python ji bo sînorkirina blokan indentasiyona qada vala (bi înglîzî: whitespace)ji dêla kevanên kurîşkî an keyworedan, bikar tîne. Piştî hin daxuyaniyan zêdekirinek li indentasiyonê tê; kêmbûnek li indentasiyonê de li dawiya bloka heyî nîşan dide. Ji ber vê yekê, strûktûra vîzuelî ya programê bi durustî strûktûra semantîkî a programê represent dike. Vê taybetmendiyê carinan wekî rola off-sideê tê binavkirin, ku hin zimanên din parve dikin, lê li gelek zimanan de wateyeke semantîkî a indentasiyonê nîne.

### Daxuyanî û herikîna kontrolê
* Daxuyaniya peywirê (nîşana '=', nîşana wekhev).
* Daxuyaniya `[[if-then-else|if]]` bişertî blokekî kodê digel `else` û `elif` (kurtbûneke else-if) pêk tîne.
* Daxuyaniya `[[Foreach#Python|for]]` li ser objektekî îterebar îtere dike, her elementekê digire varîableke lokalî ku ji hêla bloka pêvekirî ve tê bikar anîn.
* Daxuyaniya `[[While loop#Python|while]]` blokekî kodê pêk tîne heta ku şertê wê rast be.
* Daxuyaniya `[[Exception handling syntax#Python|try]]` dihêle ku îstisnayên di bloka koda pêvekirî de hatine rakirin ji bilî hevokan werin girtin û bi rêve birin; her weha ew misoger dike ku koda paqijkirinê di `finally`-blok de wê her gav were xebitandin bêyî ku blok çawa derkeve.
* Daxuyaniya `raise` ji bo bilindkirina îstîsnayeke diyarkirî an ji nû rakirina îstîsnayeke girtî tê bikar anîn.
* Daxuyaniya `class` blokekî kodê dimeşîne û namespace'ê xwe yê lokalî bi klasekê ve girêdide, ji bo karanîna di programkirina objekt-orîentkirî de.
* Daxuyaniya `def` fonksiyonekê an metodekê defîne dike.
* Daxuyaniya <code>break</code> ji xelekê derdikeve.
* Daxuyaniya `continue` vê îteresiyonê derbas dike û bi xala duyemîn re berdewam dike.
* Daxuyaniya `del` varîablekê radike, av tê vê wateyê ku referansa ji nav heta nirxê tête jêbirin û hewl dide ku wê varîablê bikar bîne dibe sedema şaşiyekê. Varîabla jêbirî dikare paşê weke normal ji nû ve were peywirdarkirin.
* Daxuyaniya `pass` wekî NOP-ê kar dike. Bisyntaktîkî pêdivî ye blokeke kodeke vala çêbibe.
* Daxuyaniya `assert` tê bikar anîn di dema debuggkirinê de ji bo şertên ku divê werin sepandin.
* Daxuyaniya `yield` ku ji fonksiyoneke generator nirxekî vedigire. Ji Python 2.5, `yield` operator jî ke. Ev ji bo împlêmentkirina Koroutînan tê bikar anîn.
* Daxuyaniya `return` tê bikar anîn ji bo vegerandina nirxekî ji fonksiyonê.
* Daxuyaniya `import` tê bikar anîn jo bo importkirina modûlên ke fonksiyonên an varîablên wan di programa heyî de têne bikar anîn.
* Daxuyaniya `print` di Python 3ê de bû fonksiyona `print()`.

### Tîpkirin
thumb|Hiyerarşiya tîpa standard li Python 3 de
Python duck typing bikar tîne û objektên tîpkirî lê navên varîablên netîpkirî heyne. Astengiyên tipê di dema-compiler'ê de nayên kontrol kirin; berevajî, dibe ku operasyonên li ser objektekî têk biçin, nîşana ku objekta danê ne ji tîpekî minasib e. Tevî ku dînamîkî hatî nivîsandin jî, Python bi tundî hatî tîp kirin, qedexe dike ku operasyonên ku baş nehatine terîf kirin (mînakî, hejmarekê li zincîrekê (string) zêde bike) ji dîlva ku bi bêdengî hewl bide wan bide fam kirin.

Python dihêle ku programer tîpên xwe bi karanîna klassan, ku pir caran ji bo programkirina objekt-orîentkirî têne bikar anîn, diyar bikin. Înstansên nû ên klassan bi bangkirina klassê têne çêkirin (mînakî, `SpamClass()` an `EggsClass()`), û klass jî înstansên celebê mêtaklass in (bixwe înstanseke ji xwe), ku destûrê dide programkirina mêtaiyê û refleksiyonê.

Berî versiyona 3.0, klassên Python du tîp hebûn: *şêwaza kevn* û *şêwaza nû*. syntaksa her du şêwazan yek e, cûdahî ev e ka gelo objekta klassê ji dîrekt an indîrekt ji mîras tê hiştin (hemî klassên şêwaza nû ji `object` mîras in û înstansên `type` in). Di guhertoyên Python 2 de ji Python 2.2 û pê ve, her du cûreiyên klassan dikarin werin bikar anîn. Dersên şêwaza kevn di Python 3.0 de hatin hilweşandin.

Plana demdirêj piştgirîkirina tîpîkirina gav bi gav e û ji Python 3.5, syntaksa ziman dihêle ku cûreiyên statîk diyar bike lê ew di implementasiyona standard de, CPython nayên kontrol kirin. Vebijêrkek eksprîmentelî a opsiyonelî a statîkî a bi navê mypy piştgiriyê dide kontrolkirina celebê a dema-compiler.

## Mînakên bernamekirinê
Programa hello Dinya!

```python
print('Hello, Dinya!')
```

Di vê Mînakê de tête check kirin ka hejmareke pozîtîv, nêgatîv an 0 e.

```python
num = float(input("Hejmarekê binivîse: "))
if num > 0:
   print("Hejmara pozîtîv")
elif num == 0:
   print("Sifir")
else:
   print("Hejmara nêgatîv")
```


## Pirtûkxaneya standard
Pirtûkxaneya standard a bihêz yek ji mezintirîn hêzên Python e, ku wê ji bo gelek bikaranînan minasib dike. Piraniya wê platform-serbixwe ye, da ku programên Python ên hê mezintir jî timûtim li Unix, Windows, macOS û platformên din bê guhertin dimeşin. Modulên pirtûkxaneya standard dikarin bi modulên ku bi C an Python hatine nivîsandin werin temam kirin.
Pirtûkxaneya standard bi taybetî ji bo pirjimar format û protokolên standard (wekî MIME û HTTP), ji bo bikaranînên înternetê bi taybetî hatî çêkirin. Modulên ji bo afirandina navrûyên bikarhênerên grafîkî, ji bo girêdana bi databasên relasiyonelî û ji bo manîpulekirina vegotinên regular jî tê de ne.

## Implementasiyon

### Implementasiyona referansê
CPython implementasiyona referansa Python e. Ew bi C hatî nivîsandin, bi gelek taybetmendiyên C99 yên selektkirî re standarda C89 bicîh tîne. Ew programên Python di nav bytecode a navîn de berhev dike ku paşê ji hêla makîneya xweya virtual ve tê xebitandin. CPython bi pirtûkxaneyek standard a mezin tête belav dibe, a ku di têkelê C û Python-a natîvî de hatî nivîsandin. Ew ji bo gelek platforman, bi Windowsê jî heye (ji ber ku guhertoya Python 3.9.1, Python "bi çalak sazkirina li ser Windows 7 nahêle"; û piştgirî dida Windows XP û kevntir, bi Python 2.7-a ku naha nayê piştgirî kirin) û sîstemên moderntirîn ên wekî Unix-like, di nav de macOS (û Apple M1 Macs, ji Python 3.9.1, bi sazkerê ezmûnî) û piştgiriya nefermî ji bo mînak VMS. Portabiliteya platformê, di Python 1 û 2-dem-çarçove de, heya ku OS/2 û Solaris piştgirî dike jî yek ji wan prîorîteyên pêşîn bû. piştgirî ji hingê ve ji bo gelek platforman hat avêtin.

### Implementasiyonên din
PyPy şirovekarek bilez, lihevhatî yê Python 2.7 û 3.6 ye. just-in-time compilerê wê li gorî CPython pêşkeftinek lezgîn a sîgnîfîkant tîne lê çend pirtûkxaneyên ku bi C hatine nivîsandin bi wê re nayên bikar anîn.

Stackless Python forkeke sîgnîfîkant a CPython e, ku mîkroşopan implement dike; ew stack a bîra C bikar nayîne, bi vî awayî destûr dide programên bi girseyî hevdem. Di heman demê de versiyoneke stackless a PyPy jî heye.

MicroPython û CircuitPython variyantên Python 3 ne, ên ku ji bo mîkrokontrolkeran têne optîmîze kirin. Di vê yekê de Lego Mindstorms EV3 heye.

Pyston variyanteke ji dema xebata Python e ku kompîlasiyona tenê-di-demê de bikar tîne da ku xebitandin programên Python zûtir bike.

### Cross-Compiler di zimanên din de
Gelek compiler li zimanên objekt ên level-bilind hene:

* Cython Python bi C û C++ kompîle dike.
* Nuitka Python di C++ de kompîle dike.
* Pythran Python bi C++ kompîle dike.
* Pyrex (derketina herî dawî di 2010 de) û Shed Skin (derketina herî dawî di 2013 de) bi rêzê li C û C++ komplîke dikin.
* Google's Grumpy (derketina herî dawî di 2017-an de) Python 2 bo Go kompîle dike.
* IronPython dihêle ku programên Python li ser .NET Common Language Runtime bêne xebitandin.
* Jython Python bi bytecode Java-yê komplîke dike, û dihêle ku pirtûkxaneyên Java-yê ji programeke Pythonê bikar bînin.
* MyHDL Python li VHDL komplîke dike.
* Numba LLVM bikar tîne ku Python komplîke bike ku kodê makîne bike.
* Brython, Transcrypt û Pyjs (derketina herî dawî di 2012 de) Python li JavaScript kompîle dike.
* RPython dikare bi C re were komplîke kirin, û ji bo avakirina wergêrê PyPy-ê ya Python-ê tê bikar anîn.

## Pêşveçûn

Ji bilî IDLE, ku gelek caran bi Python re tê install kirin û bi giranî ji hawîrdoreka têxte û Shell pêk tê, ji bo Python jî gelek derdorên pêşveçûnê yên bi tevahî (IDE) hatine pêşve xistin, mînakî Eric Python IDE, Spyder an PyCharm. Ji bo IDE-yên mezintir ên wekî Eclipse, Visual Studio û NetBeans jî pêvek hene. Edîtorên têxtê ên ji bo programeran wekî Vim û Emacs jî dikarin ji bo Python bêne adapte kirin: Awayek hêsan a Python jixwe ve entegre ye, û pêvekên komfortabltir dikarin werin zêdekirin. Ji bo cûrbecûr GUI-Toolkits, wekî Tkinter (GUI-Builder), WxPython (wxGlade), PyQt (Qt Designer), PySide, PyGTK (Glade), Kivy an PyFLTK hin edîtor hene ku bi wan re navrûyên bikarhênerên grafîkî bi rengekî berawirdî hêsan têne saz kirin.

## Çavkanî

Kategorî:Zimanên programkirinê
Kategorî:Zimanên programkirinê yên asta bilind
Kategorî:Zimanê bernamekirinê