Introduction to Python/tr: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
<languages/>
<languages/>

<div class="mw-translate-fuzzy">
{{docnav/tr|[[Macros/tr|Makrolar]]|[[Python scripting tutorial/tr|Python betik kılavuzu]]}}
{{docnav/tr|[[Macros/tr|Makrolar]]|[[Python scripting tutorial/tr|Python betik kılavuzu]]}}
</div>


{{TOCright}}
{{VeryImportantMessage | (Kasım 2018) FreeCAD aslında Python 2 ile çalışmak üzere tasarlandı. Birçok özellik Python 3 ile çalışıyor, ancak bazıları çalışmıyor. Python 3'ün FreeCAD'i tamamen desteklemesi bir süreçtir. Buradaki bilgiler Python 2'yi açıklamaktadır, ancak kodun çoğu Python 3 ile aynı şekilde çalışmalıdır. Özellikle, {{incode | print ()}} işlevi eski {{incode | print}} deyimine göre tercih edilir}}


==Introduction==
Bu Python'a yeni başlayanlar için kısa bir rehberdir. [http://en.wikipedia.org/wiki/Python_%28programming_language%29 Python], açık kaynaklı, çoklu bir platformdur [http://en.wikipedia.org/wiki/Programming_language programlama dili]. Python, onu diğer yaygın programlama dillerinden çok farklı kılan ve sizin gibi yeni kullanıcıların erişebildiği birçok özelliğe sahiptir:


<div class="mw-translate-fuzzy">
Bu Python'a yeni başlayanlar için kısa bir rehberdir. [http://en.wikipedia.org/wiki/Python_%28programming_language%29 Python], açık kaynaklı, çoklu bir platformdur [http://en.wikipedia.org/wiki/Programming_language programlama dili]. Python, onu diğer yaygın programlama dillerinden çok farklı kılan ve sizin gibi yeni kullanıcıların erişebildiği birçok özelliğe sahiptir:
</div>

<div class="mw-translate-fuzzy">
* Özellikle insanlar tarafından okunması kolay olacak şekilde tasarlandı ve bu yüzden öğrenmesi ve anlaması çok kolay.
* Özellikle insanlar tarafından okunması kolay olacak şekilde tasarlandı ve bu yüzden öğrenmesi ve anlaması çok kolay.
* Yorumlanır, yani C gibi derlenmiş dillerden farklı olarak, programınızın yürütülmeden önce derlenmesi gerekmez. İsterseniz yazdığınız kod, satır satır hemen çalıştırılabilir. Yavaş yavaş adım adım ilerleyebildiğiniz için, kodunuzdaki hataları öğrenmek ve hataları bulmak son derece kolaydır.
* Yorumlanır, yani C gibi derlenmiş dillerden farklı olarak, programınızın yürütülmeden önce derlenmesi gerekmez. İsterseniz yazdığınız kod, satır satır hemen çalıştırılabilir. Yavaş yavaş adım adım ilerleyebildiğiniz için, kodunuzdaki hataları öğrenmek ve hataları bulmak son derece kolaydır.
* Kodlama dili olarak kullanılmak üzere diğer programlara gömülebilir. FreeCAD'in yerleşik bir Python yorumlayıcısı vardır; Python kodunu FreeCAD'e yazabilir, örneğin FreeCAD'in parçalarını değiştirebilir, örneğin geometri oluşturmak için. Bu, bazı programcıların kodladığı "küre yarat" etiketli bir düğmeyi tıklamak yerine, son derece güçlüdür; Programcının öngöremeyeceği şekilde veya istediğiniz şekilde tam olarak istediğiniz geometriyi oluşturarak kendi aracınızı kolayca oluşturma özgürlüğüne sahipsiniz.
* Kodlama dili olarak kullanılmak üzere diğer programlara gömülebilir. FreeCAD'in yerleşik bir Python yorumlayıcısı vardır; Python kodunu FreeCAD'e yazabilir, örneğin FreeCAD'in parçalarını değiştirebilir, örneğin geometri oluşturmak için. Bu, bazı programcıların kodladığı "küre yarat" etiketli bir düğmeyi tıklamak yerine, son derece güçlüdür; Programcının öngöremeyeceği şekilde veya istediğiniz şekilde tam olarak istediğiniz geometriyi oluşturarak kendi aracınızı kolayca oluşturma özgürlüğüne sahipsiniz.
* Genişletilebilirdir, Python kurulumunuzdaki yeni modülleri kolayca takabilir ve işlevselliğini artırabilirsiniz. Örneğin, Python'un jpg görüntüleri okuyup yazmasına, twitter ile iletişim kurmasına, işletim sisteminiz tarafından gerçekleştirilecek görevleri zamanlamasına, vb. İzin veren modüllere sahipsiniz.
* Genişletilebilirdir, Python kurulumunuzdaki yeni modülleri kolayca takabilir ve işlevselliğini artırabilirsiniz. Örneğin, Python'un jpg görüntüleri okuyup yazmasına, twitter ile iletişim kurmasına, işletim sisteminiz tarafından gerçekleştirilecek görevleri zamanlamasına, vb. İzin veren modüllere sahipsiniz.
</div>


<div class="mw-translate-fuzzy">
Aşağıdaki kod parçacıklarını bir Python yorumlayıcısına girmenizi kesinlikle öneririz. Tartışmalarımızın çoğu için önemli olan, pasajın çalıştırılmasından sonraki satırdır, ortaya çıkar. Kodu çalıştırmamak yumruk çizgisi olmadan tümüyle oluşturulur. Öyleyse eller! Aşağıdakiler çok basit bir giriştir ve hiçbir şekilde tam bir eğitim değildir. Ancak bizim umudumuz, bunun FreeCAD mekanizmalarını daha derinlemesine keşfetmek için yeterli temelleri sağlayacağıdır.
Aşağıdaki kod parçacıklarını bir Python yorumlayıcısına girmenizi kesinlikle öneririz. Tartışmalarımızın çoğu için önemli olan, pasajın çalıştırılmasından sonraki satırdır, ortaya çıkar. Kodu çalıştırmamak yumruk çizgisi olmadan tümüyle oluşturulur. Öyleyse eller! Aşağıdakiler çok basit bir giriştir ve hiçbir şekilde tam bir eğitim değildir. Ancak bizim umudumuz, bunun FreeCAD mekanizmalarını daha derinlemesine keşfetmek için yeterli temelleri sağlayacağıdır.
</div>


== Yorumlayıcı ==
== Yorumlayıcı ==


<div class="mw-translate-fuzzy">
Genellikle, bilgisayar programları yazarken, sadece bir metin editörünü veya özel programlama ortamınızı (genellikle birkaç ek araç içeren bir metin editörüdür) açarsınız, programınızı yazıp derler ve çalıştırırsınız. Genellikle, kod yazma sırasında bir veya daha fazla hata yapıldı ise programınız çalışmayacaktır. Neyin yanlış gittiğini söyleyen bir hata mesajı bile alabilirsiniz. Ardından metin editörünüze döner, hataları düzeltir, tekrar çalıştırırsınız, programınız istenen şekilde çalışıncaya kadar tekrarlarsınız.
Genellikle, bilgisayar programları yazarken, sadece bir metin editörünü veya özel programlama ortamınızı (genellikle birkaç ek araç içeren bir metin editörüdür) açarsınız, programınızı yazıp derler ve çalıştırırsınız. Genellikle, kod yazma sırasında bir veya daha fazla hata yapıldı ise programınız çalışmayacaktır. Neyin yanlış gittiğini söyleyen bir hata mesajı bile alabilirsiniz. Ardından metin editörünüze döner, hataları düzeltir, tekrar çalıştırırsınız, programınız istenen şekilde çalışıncaya kadar tekrarlarsınız.
</div>


<div class="mw-translate-fuzzy">
Python'daki bu işlem Python yorumlayıcısının içinde şeffaf bir şekilde yapılabilir. Yorumlayıcı, yalnızca Python kodunu yazabileceğiniz bir komut istemi içeren bir Python penceresidir. Bilgisayarınıza Python yüklerseniz (Windows veya Mac’te iseniz [http://www.python.org Python web sitesinden indirin], eğer Windows veya Mac’te iseniz, GNU / Linux’taysanız paket deponuzdan yükleyin) Başlat menünüzde bir Python yorumlayıcısı var. Ancak FreeCAD'in alt penceresinde bir Python yorumlayıcısı da vardır:
Python'daki bu işlem Python yorumlayıcısının içinde şeffaf bir şekilde yapılabilir. Yorumlayıcı, yalnızca Python kodunu yazabileceğiniz bir komut istemi içeren bir Python penceresidir. Bilgisayarınıza Python yüklerseniz (Windows veya Mac’te iseniz [http://www.python.org Python web sitesinden indirin], eğer Windows veya Mac’te iseniz, GNU / Linux’taysanız paket deponuzdan yükleyin) Başlat menünüzde bir Python yorumlayıcısı var. Ancak FreeCAD'in alt penceresinde bir Python yorumlayıcısı da vardır:
</div>


[[Image:FreeCAD_Python_console.png]]
<div class="mw-translate-fuzzy">
[[Image:Screenshot_pythoninterpreter.jpg]]
[[Image:Screenshot_pythoninterpreter.jpg]]
</div>


<div class="mw-translate-fuzzy">
(Eğer bulamadıysanız, Görünüm -> Paneller -> Python konsolu'nu tıklayın.)
(Eğer bulamadıysanız, Görünüm -> Paneller -> Python konsolu'nu tıklayın.)
</div>


<div class="mw-translate-fuzzy">
Yorumlayıcı, Python versiyonunu ve ardından Python kodunu girdiğiniz komut istemi olan >>> sembolünü gösterir. Yorumlayıcıya kod yazmak basittir: bir satır bir talimattır. Enter tuşuna bastığınızda, kod satırınız yürütülür (hemen ve görünmez bir şekilde derlendikten sonra). Örneğin, şunu yazmayı deneyin:
Yorumlayıcı, Python versiyonunu ve ardından Python kodunu girdiğiniz komut istemi olan >>> sembolünü gösterir. Yorumlayıcıya kod yazmak basittir: bir satır bir talimattır. Enter tuşuna bastığınızda, kod satırınız yürütülür (hemen ve görünmez bir şekilde derlendikten sonra). Örneğin, şunu yazmayı deneyin:
</div>

{{Code|code=
{{Code|code=
print "hello"
print("hello")
}}
}}

<div class="mw-translate-fuzzy">
<code> print </code>, açıkça ekranda bir şey yazdırmak için kullanılan özel bir Python anahtar kelimesidir. Enter tuşuna bastığınızda, işlem yürütülür ve "merhaba" mesajı yazdırılır. Bir hata yaparsanız, örneğin yazalım:
<code> print </code>, açıkça ekranda bir şey yazdırmak için kullanılan özel bir Python anahtar kelimesidir. Enter tuşuna bastığınızda, işlem yürütülür ve "merhaba" mesajı yazdırılır. Bir hata yaparsanız, örneğin yazalım:
</div>

{{Code|code=
{{Code|code=
print hello
print(hello)
}}
}}

<div class="mw-translate-fuzzy">
Python bize merhaba'yı bilmediğini söyleyecek. "Karakterler içeriğin sadece bir jargon, bir metin parçası olan bir dize olduğunu belirtir. " Olmadan, baskı komutu merhaba bir metin parçası değil, özel bir Python anahtar sözcüğüdür. Önemli olan, hemen bir hata yaptığınız konusunda bilgilendirilmenizdir. Yukarı okuna basarak (veya FreeCAD yorumlayıcısında, CTRL yukarı okunda) yazdığınız son komuta geri dönebilir ve düzeltebilirsiniz.
Python bize merhaba'yı bilmediğini söyleyecek. "Karakterler içeriğin sadece bir jargon, bir metin parçası olan bir dize olduğunu belirtir. " Olmadan, baskı komutu merhaba bir metin parçası değil, özel bir Python anahtar sözcüğüdür. Önemli olan, hemen bir hata yaptığınız konusunda bilgilendirilmenizdir. Yukarı okuna basarak (veya FreeCAD yorumlayıcısında, CTRL yukarı okunda) yazdığınız son komuta geri dönebilir ve düzeltebilirsiniz.
</div>


<div class="mw-translate-fuzzy">
Python yorumlayıcı ayrıca dahili bir yardım sistemine sahiptir. Yazmayı deneyin:
Python yorumlayıcı ayrıca dahili bir yardım sistemine sahiptir. Yazmayı deneyin:
</div>
{{Code|code=

help
}}
veya örneğin, yukarıda basılan merhaba komutumuzda neyin yanlış gittiğini anlamadığımızı varsayalım, "baskı" komutu hakkında özel bilgiler istiyoruz:
{{Code|code=
{{Code|code=
help("print")
help("print")
}}
}}

<div class="mw-translate-fuzzy">
Print komutunun yapabileceği her şeyin uzun ve eksiksiz bir açıklamasını alırsınız.
Print komutunun yapabileceği her şeyin uzun ve eksiksiz bir açıklamasını alırsınız.
</div>


<div class="mw-translate-fuzzy">
Artık yorumlayıcıya hükmettiğimize göre, ciddi şeylerle başlayabiliriz.
Artık yorumlayıcıya hükmettiğimize göre, ciddi şeylerle başlayabiliriz.
</div>

[[#top|top]]


== Değişkenler ==
== Değişkenler ==


<div class="mw-translate-fuzzy">
Tabii ki, "merhaba" yazdırmak çok ilginç değil. Daha ilginç olanı, daha önce bilmediğiniz şeyler basmak ya da Python'un sizin için bulmasına izin vermek. Değişken kavramının devreye girdiği yer burasıdır. Bir değişken, yalnızca bir ad altında sakladığınız bir değerdir. Örneğin, şunu yazın:
Tabii ki, "merhaba" yazdırmak çok ilginç değil. Daha ilginç olanı, daha önce bilmediğiniz şeyler basmak ya da Python'un sizin için bulmasına izin vermek. Değişken kavramının devreye girdiği yer burasıdır. Bir değişken, yalnızca bir ad altında sakladığınız bir değerdir. Örneğin, şunu yazın:
</div>

{{Code|code=
{{Code|code=
a = "hello"
a = "hello"
print a
print(a)
}}
}}

<div class="mw-translate-fuzzy">
Sanırım ne olduğunu anladınız, biz "merhaba" dizesini "a" adı altında "kaydettik". Şimdi, "a" artık bilinmeyen bir isim değil! Herhangi bir yerde, örneğin baskı komutunda kullanabiliriz. İstediğimiz herhangi bir ismi kullanabiliriz, sadece boşluk veya noktalama işareti kullanmama gibi basit kurallara uyun. Örneğin, şunu yazabiliriz:
Sanırım ne olduğunu anladınız, biz "merhaba" dizesini "a" adı altında "kaydettik". Şimdi, "a" artık bilinmeyen bir isim değil! Herhangi bir yerde, örneğin baskı komutunda kullanabiliriz. İstediğimiz herhangi bir ismi kullanabiliriz, sadece boşluk veya noktalama işareti kullanmama gibi basit kurallara uyun. Örneğin, şunu yazabiliriz:
</div>

{{Code|code=
{{Code|code=
hello = "my own version of hello"
hello = "my own version of hello"
print hello
print(hello)
}}
}}

<div class="mw-translate-fuzzy">
Gördünüz mü? şimdi merhaba artık tanımsız bir kelime değil. Ya, kötü şansla, Python'da zaten var olan bir ismi seçersek? Dizimizi "print" adı altında saklamak istediğimizi varsayalım:
Gördünüz mü? şimdi merhaba artık tanımsız bir kelime değil. Ya, kötü şansla, Python'da zaten var olan bir ismi seçersek? Dizimizi "print" adı altında saklamak istediğimizi varsayalım:
</div>
{{Code|code=

print = "hello"
}}
Python çok zeki ve bize bunun mümkün olmadığını söyleyecek. Değiştirilemeyen bazı "ayrılmış" anahtar kelimelere sahiptir. Ancak değişkenlerimiz her zaman değiştirilebilir, bu yüzden değişkenler olarak adlandırılır, içerikleri değişebilir. Örneğin:
{{Code|code=
{{Code|code=
myVariable = "hello"
myVariable = "hello"
print myVariable
print(myVariable)
myVariable = "good bye"
myVariable = "good bye"
print myVariable
print(myVariable)
}}
}}

<div class="mw-translate-fuzzy">
MyVariable'ın değerini değiştirdik. Ayrıca değişkenleri de kopyalayabiliriz:
MyVariable'ın değerini değiştirdik. Ayrıca değişkenleri de kopyalayabiliriz:
</div>

{{Code|code=
{{Code|code=
var1 = "hello"
var1 = "hello"
var2 = var1
var2 = var1
print var2
print(var2)
}}
}}

<div class="mw-translate-fuzzy">
Değişkenlerinize anlamlı adlar vermenin önemli olduğunu unutmayın. Bir süre sonra "a" isimli değişkeninizin neyi temsil ettiğini hatırlamayacaksınız. Fakat eğer ismini verdiyseniz, örneğin myWelcomeMessage, amacını kolayca hatırlarsınız. Ayrıca, kodunuz kendi kendini belgelemeye bir adım daha yakın.
Değişkenlerinize anlamlı adlar vermenin önemli olduğunu unutmayın. Bir süre sonra "a" isimli değişkeninizin neyi temsil ettiğini hatırlamayacaksınız. Fakat eğer ismini verdiyseniz, örneğin myWelcomeMessage, amacını kolayca hatırlarsınız. Ayrıca, kodunuz kendi kendini belgelemeye bir adım daha yakın.
</div>


<div class="mw-translate-fuzzy">
Harf boyutu çok önemli. myVariable, myvariable ile aynı değildir; büyük / küçük harf farkı '''v'''.
Harf boyutu çok önemli. myVariable, myvariable ile aynı değildir; büyük / küçük harf farkı '''v'''.
''print myvariable'' yazarsanız, tanımlanmayan bir hatayla geri dönecektir.
''print myvariable'' yazarsanız, tanımlanmayan bir hatayla geri dönecektir.
</div>

[[#top|top]]


== Sayılar ==
== Sayılar ==


<div class="mw-translate-fuzzy">
Elbette, programlamanın yalnızca metin dizeleri için değil, her türlü verinin ve özellikle sayıların işlenmesinde yararlı olduğunu bilmelisiniz. Bir şey önemlidir, Python ne tür verilerle uğraştığını bilmelidir. Merhaba örneğimizde, print komutunun "merhaba" dizgimizi tanıdığını gördük. Bunun nedeni, " kullanarak, özellikle baskı komutunun bundan sonra gelenlerin bir metin dizesi olduğunu söylemiş olmamızdır.
Elbette, programlamanın yalnızca metin dizeleri için değil, her türlü verinin ve özellikle sayıların işlenmesinde yararlı olduğunu bilmelisiniz. Bir şey önemlidir, Python ne tür verilerle uğraştığını bilmelidir. Merhaba örneğimizde, print komutunun "merhaba" dizgimizi tanıdığını gördük. Bunun nedeni, " kullanarak, özellikle baskı komutunun bundan sonra gelenlerin bir metin dizesi olduğunu söylemiş olmamızdır.
</div>


<div class="mw-translate-fuzzy">
Özel bir Python anahtar kelime türüyle bir değişkenin veri türünü her zaman kontrol edebiliriz:
Özel bir Python anahtar kelime türüyle bir değişkenin veri türünü her zaman kontrol edebiliriz:
</div>

{{Code|code=
{{Code|code=
myVar = "hello"
myVar = "hello"
type(myVar)
type(myVar)
}}
}}

<div class="mw-translate-fuzzy">
Bize myVar'ın içeriğinin Pyrhon jargonundaki string için kısa olan str olduğunu söyleyecektir. Tam sayı ve değişken sayılar gibi diğer temel veri türlerimiz de vardır
Bize myVar'ın içeriğinin Pyrhon jargonundaki string için kısa olan str olduğunu söyleyecektir. Tam sayı ve değişken sayılar gibi diğer temel veri türlerimiz de vardır
</div>

{{Code|code=
{{Code|code=
firstNumber = 10
firstNumber = 10
secondNumber = 20
secondNumber = 20
print firstNumber + secondNumber
print(firstNumber + secondNumber)
type(firstNumber)
type(firstNumber)
}}
}}

<div class="mw-translate-fuzzy">
Bu çok daha ilginç, değil mi? Şimdi güçlü bir hesap makinemiz var! Ne kadar iyi çalıştığına bakın, Python 10 ve 20'nin tam sayı olduğunu biliyor. Böylece "int" olarak depolanırlar ve Python onlarla tamsayılarla yapabileceği her şeyi yapabilir. Bunun sonuçlarına bakın:
Bu çok daha ilginç, değil mi? Şimdi güçlü bir hesap makinemiz var! Ne kadar iyi çalıştığına bakın, Python 10 ve 20'nin tam sayı olduğunu biliyor. Böylece "int" olarak depolanırlar ve Python onlarla tamsayılarla yapabileceği her şeyi yapabilir. Bunun sonuçlarına bakın:
</div>

{{Code|code=
{{Code|code=
firstNumber = "10"
firstNumber = "10"
secondNumber = "20"
secondNumber = "20"
print firstNumber + secondNumber
print(firstNumber + secondNumber)
}}
}}

<div class="mw-translate-fuzzy">
Gördünüz mü? Python'u iki değişkenimizin sayı değil, sadece metin parçaları olduğunu düşünmeye zorladık. Python iki parçayı bir araya getirebilir, ancak toplamı bulmaya çalışmaz. Fakat biz tamsayılardan bahsediyorduk. Kayan noktalı sayılar da vardır. Fark, tam sayıların ondalık bölüm içermemesi, kayan noktalı sayıların ise ondalık bölüm içermesidir:
Gördünüz mü? Python'u iki değişkenimizin sayı değil, sadece metin parçaları olduğunu düşünmeye zorladık. Python iki parçayı bir araya getirebilir, ancak toplamı bulmaya çalışmaz. Fakat biz tamsayılardan bahsediyorduk. Kayan noktalı sayılar da vardır. Fark, tam sayıların ondalık bölüm içermemesi, kayan noktalı sayıların ise ondalık bölüm içermesidir:
</div>

{{Code|code=
{{Code|code=
var1 = 13
var1 = 13
var2 = 15.65
var2 = 15.65
print "var1 is of type ", type(var1)
print("var1 is of type ", type(var1))
print "var2 is of type ", type(var2)
print("var2 is of type ", type(var2))
}}
}}

<div class="mw-translate-fuzzy">
Int ve Floats birlikte sorunsuzca karıştırılabilir:
Int ve Floats birlikte sorunsuzca karıştırılabilir:
</div>

{{Code|code=
{{Code|code=
total = var1 + var2
total = var1 + var2
print total
print(total)
print type(total)
print(type(total))
}}
}}

<div class="mw-translate-fuzzy">
Elbette hepsi ondalık sayıdır, değil mi? Sonra Python otomatik olarak sonucun bir kayan noktalı sayı olduğuna karar verdi. Bunun gibi bazı durumlarda, Python hangi tipin kullanılacağına otomatik olarak karar verir. Diğer durumlarda değil. Örneğin:
Elbette hepsi ondalık sayıdır, değil mi? Sonra Python otomatik olarak sonucun bir kayan noktalı sayı olduğuna karar verdi. Bunun gibi bazı durumlarda, Python hangi tipin kullanılacağına otomatik olarak karar verir. Diğer durumlarda değil. Örneğin:
</div>

{{Code|code=
{{Code|code=
varA = "hello 123"
varA = "hello 123"
varB = 456
varB = 456
print varA + varB
print(varA + varB)
}}
}}

<div class="mw-translate-fuzzy">
Bu bize bir hata verecektir, varA bir dizedir ve varB bir int'dir ve Python ne yapacağını bilemez. Ancak, Python'u türler arasında dönüştürmeye zorlayabiliriz:
Bu bize bir hata verecektir, varA bir dizedir ve varB bir int'dir ve Python ne yapacağını bilemez. Ancak, Python'u türler arasında dönüştürmeye zorlayabiliriz:
</div>

{{Code|code=
{{Code|code=
varA = "hello"
varA = "hello"
varB = 123
varB = 123
print varA + str(varB)
print(varA + str(varB))
}}
}}

<div class="mw-translate-fuzzy">
Şimdi her ikisi de dizgedir, işlem çalışır! Baskı sırasında varB'yi "dizeledik", ancak varB'nin kendisini değiştirmediğimizi unutmayın. VarB'yi kalıcı olarak bir dizgeye çevirmek isteseydik, bunu yapmamız gerekirdi:
Şimdi her ikisi de dizgedir, işlem çalışır! Baskı sırasında varB'yi "dizeledik", ancak varB'nin kendisini değiştirmediğimizi unutmayın. VarB'yi kalıcı olarak bir dizgeye çevirmek isteseydik, bunu yapmamız gerekirdi:
</div>

{{Code|code=
{{Code|code=
varB = str(varB)
varB = str(varB)
}}
}}

<div class="mw-translate-fuzzy">
İsterseniz int () ve float () işlevini int'ye dönüştürmek için int () ve float () işlevini de kullanabiliriz:
İsterseniz int () ve float () işlevini int'ye dönüştürmek için int () ve float () işlevini de kullanabiliriz:
</div>

{{Code|code=
{{Code|code=
varA = "123"
varA = "123"
print int(varA)
print(int(varA))
print float(varA)
print(float(varA))
}}
}}
'''Python komutları ile ilgili not'''


<div class="mw-translate-fuzzy">
Bu bölümde print komutunu birkaç şekilde kullandığımızı fark etmiş olmalısınız. Değişkenleri, toplamları, virgülle ayrılmış birçok şeyi ve hatta type () gibi diğer Python komutlarının sonuçlarını bastık. Şu iki emri yerine getirdiğini de farkettiniz,
Bu bölümde print komutunu birkaç şekilde kullandığımızı fark etmiş olmalısınız. Değişkenleri, toplamları, virgülle ayrılmış birçok şeyi ve hatta type () gibi diğer Python komutlarının sonuçlarını bastık. Şu iki emri yerine getirdiğini de farkettiniz,
</div>

{{Code|code=
{{Code|code=
type(varA)
type(varA)
print type(varA)
print(type(varA))
}}
}}

<div class="mw-translate-fuzzy">
tam olarak aynı sonucu verir. Çünkü biz yorumlayıcıdayız ve her şey otomatik olarak basılıyor. Yorumlayıcı dışında çalışan daha karmaşık programlar yazdığımızda, otomatik olarak yazdırılmazlar, bu yüzden print komutunu kullanmamız gerekir. Şu andan itibaren, burada kullanmayı bırakalım, daha hızlı olacak. Böylece basitçe şunu yazabiliriz:
tam olarak aynı sonucu verir. Çünkü biz yorumlayıcıdayız ve her şey otomatik olarak basılıyor. Yorumlayıcı dışında çalışan daha karmaşık programlar yazdığımızda, otomatik olarak yazdırılmazlar, bu yüzden print komutunu kullanmamız gerekir. Şu andan itibaren, burada kullanmayı bırakalım, daha hızlı olacak. Böylece basitçe şunu yazabiliriz:
</div>

{{Code|code=
{{Code|code=
myVar = "hello friends"
myVar = "hello friends"
myVar
myVar
}}
}}

Komut içeriğini sınırlandırmak için Python komutlarının (veya anahtar sözcüklerin) type (), int (), str () vb. Öğelerinin parantez içerdiğini görmüş olmalısınız. Tek istisna, normalde çalıştığı için aslında bir istisna olmayan print komutudur: print ("merhaba"). Ancak, sık kullanıldığından, Python tasarımcıları daha basit bir versiyona izin verdi.
[[#top|top]]


== Listeler ==
== Listeler ==


<div class="mw-translate-fuzzy">
Bir başka ilginç veri tipi de bir liste. Bir liste sadece başka bir veri topluluğudur. "" Kullanarak bir metin dizesini tanımladığımız şekilde, [] kullanarak bir liste tanımlarız:
Bir başka ilginç veri tipi de bir liste. Bir liste sadece başka bir veri topluluğudur. "" Kullanarak bir metin dizesini tanımladığımız şekilde, [] kullanarak bir liste tanımlarız:
</div>

{{Code|code=
{{Code|code=
myList = [1,2,3]
myList = [1, 2, 3]
type(myList)
type(myList)
myOtherList = ["Bart", "Frank", "Bob"]
myOtherList = ["Bart", "Frank", "Bob"]
myMixedList = ["hello", 345, 34.567]
myMixedList = ["hello", 345, 34.567]
}}
}}

<div class="mw-translate-fuzzy">
Herhangi bir tür veri içerebileceğini görüyorsunuz. Listeler çok faydalıdır çünkü değişkenleri birlikte gruplayabilirsiniz. Daha sonra o gruptaki her türlü şeyi yapabilirsiniz; örneğin, onları sayarak:
Herhangi bir tür veri içerebileceğini görüyorsunuz. Listeler çok faydalıdır çünkü değişkenleri birlikte gruplayabilirsiniz. Daha sonra o gruptaki her türlü şeyi yapabilirsiniz; örneğin, onları sayarak:
</div>

{{Code|code=
{{Code|code=
len(myOtherList)
len(myOtherList)
}}
}}

<div class="mw-translate-fuzzy">
veya listedeki bir öğeyi almak:
veya listedeki bir öğeyi almak:
</div>

{{Code|code=
{{Code|code=
myName = myOtherList[0]
myName = myOtherList[0]
myFriendsName = myOtherList[1]
myFriendsName = myOtherList[1]
}}
}}

<div class="mw-translate-fuzzy">
en () komutu bir listedeki toplam öğe sayısını döndürürken, listedeki "konumları" 0 ile başlar. Listedeki ilk öğe her zaman 0 konumunda, yani myOtherList "Bob" da 2. konumda olacaksınız. Listelerle çok daha fazlasını yapabiliriz, içerikleri sıralama, öğeleri kaldırma veya ekleme gibi [http://www.diveintopython.net/native_data_types/lists.html] adresini okuyabilirsiniz.
en () komutu bir listedeki toplam öğe sayısını döndürürken, listedeki "konumları" 0 ile başlar. Listedeki ilk öğe her zaman 0 konumunda, yani myOtherList "Bob" da 2. konumda olacaksınız. Listelerle çok daha fazlasını yapabiliriz, içerikleri sıralama, öğeleri kaldırma veya ekleme gibi [http://www.diveintopython.net/native_data_types/lists.html] adresini okuyabilirsiniz.
</div>


<div class="mw-translate-fuzzy">
Komik ve ilginç bir şey: bir metin dizesi karakter listesine çok benzer! Bunu yapmayı deneyin:
Komik ve ilginç bir şey: bir metin dizesi karakter listesine çok benzer! Bunu yapmayı deneyin:
</div>

{{Code|code=
{{Code|code=
myvar = "hello"
myvar = "hello"
Line 176: Line 291:
myvar[2]
myvar[2]
}}
}}

<div class="mw-translate-fuzzy">
Genellikle, listelerde yapabileceğinizi dizelerle de yapabilirsiniz. Aslında hem listeler hem de diziler dizilerdir.
Genellikle, listelerde yapabileceğinizi dizelerle de yapabilirsiniz. Aslında hem listeler hem de diziler dizilerdir.
</div>


<div class="mw-translate-fuzzy">
Dizeler, ints, floats ve listeler dışında, [http://www.diveintopython.net/native_data_types/index.html#d0e5174 sözlükleri] gibi daha yerleşik veri türleri vardır veya kendi veri türlerinizi bile oluşturabilirsiniz [http://www.freenetpages.co.uk/hp/alan.gauld/tutclass.htm sınıfları] ile.
Dizeler, ints, floats ve listeler dışında, [http://www.diveintopython.net/native_data_types/index.html#d0e5174 sözlükleri] gibi daha yerleşik veri türleri vardır veya kendi veri türlerinizi bile oluşturabilirsiniz [http://www.freenetpages.co.uk/hp/alan.gauld/tutclass.htm sınıfları] ile.
</div>

[[#top|top]]


== Girinti ==
== Girinti ==


<div class="mw-translate-fuzzy">
Listelerin büyük ve harika bir kullanımı da, içinde gezinmek ve her öğeyle bir şeyler yapmaktır. Örneğin şuna bakın:
Listelerin büyük ve harika bir kullanımı da, içinde gezinmek ve her öğeyle bir şeyler yapmaktır. Örneğin şuna bakın:
</div>

{{Code|code=
{{Code|code=
alldaltons = ["Joe", "William", "Jack", "Averell"]
alldaltons = ["Joe", "William", "Jack", "Averell"]
for dalton in alldaltons:
for dalton in alldaltons:
print dalton + " Dalton"
print(dalton + " Dalton")
}}
}}
Listemiz boyunca "for ... in ..." komutunu kullanarak yineledik (programlama jargonu) ve her bir öğe için bir şeyler yaptık. Özel sözdizimine dikkat edin: '' 'için' '' komutu '' ':' 'ile sonlanır ve aşağıdakilerin birden fazla komuttan birinin bir bloğu olacağını belirtir. Tercümanda, biten komut satırına girdikten hemen sonra: komut istemi ... olarak değişecektir, bu da Python'un iki nokta üst üste (:) son satırın gerçekleştiğini ve daha fazlasının geldiğini bildiği anlamına gelir.


<div class="mw-translate-fuzzy">
Listemiz boyunca "for ... in ..." komutunu kullanarak yineledik (programlama jargonu) ve her bir öğe için bir şeyler yaptık. Özel sözdizimine dikkat edin: '' 'için' '' komutu '' ':' 'ile sonlanır ve aşağıdakilerin birden fazla komuttan birinin bir bloğu olacağını belirtir. Tercümanda, biten komut satırına girdikten hemen sonra: komut istemi ... olarak değişecektir, bu da Python'un iki nokta üst üste (:) son satırın gerçekleştiğini ve daha fazlasının geldiğini bildiği anlamına gelir.
</div>

<div class="mw-translate-fuzzy">
Python, for ... operasyonunun içinde bir sonraki satırın kaç tanesinde yürütüleceğini nasıl bilecek? Bunun için Python girintiyi kullanır. Yani, bir sonraki satırınız hemen başlamayacak. Onlara bir boşlukla ya da birkaç boşlukla ya da bir sekmeyle ya da birkaç sekmeyle başlayacaksınız. Diğer programlama dilleri, her şeyi parantez içine koymak vb. Gibi diğer yöntemleri kullanır. Sonraki satırlarınızı '' 'aynı' '' girintiyle yazdığınız sürece for-in bloğunun bir parçası olarak kabul edilirler. Bir satıra 2 boşlukla, bir başkasını da 4 ile başlarsanız, bir hata olacaktır. İşiniz bittiğinde, girintisiz başka bir satır yazın veya for-in bloğundan geri dönmek için Enter tuşuna basın
Python, for ... operasyonunun içinde bir sonraki satırın kaç tanesinde yürütüleceğini nasıl bilecek? Bunun için Python girintiyi kullanır. Yani, bir sonraki satırınız hemen başlamayacak. Onlara bir boşlukla ya da birkaç boşlukla ya da bir sekmeyle ya da birkaç sekmeyle başlayacaksınız. Diğer programlama dilleri, her şeyi parantez içine koymak vb. Gibi diğer yöntemleri kullanır. Sonraki satırlarınızı '' 'aynı' '' girintiyle yazdığınız sürece for-in bloğunun bir parçası olarak kabul edilirler. Bir satıra 2 boşlukla, bir başkasını da 4 ile başlarsanız, bir hata olacaktır. İşiniz bittiğinde, girintisiz başka bir satır yazın veya for-in bloğundan geri dönmek için Enter tuşuna basın
</div>


<div class="mw-translate-fuzzy">
Girinti kullanışlıdır, çünkü programın okunabilirliğine yardımcı olur. Büyük girintiler kullanırsanız (örneğin, boşluklar yerine sekmeler kullanın), büyük bir program yazdığınızda neyin içinde yürütüldüğünün net bir görüntüsünü görürsünüz. For-in dışındaki komutların da girilen kod bloklarını içerebileceğini göreceğiz.
Girinti kullanışlıdır, çünkü programın okunabilirliğine yardımcı olur. Büyük girintiler kullanırsanız (örneğin, boşluklar yerine sekmeler kullanın), büyük bir program yazdığınızda neyin içinde yürütüldüğünün net bir görüntüsünü görürsünüz. For-in dışındaki komutların da girilen kod bloklarını içerebileceğini göreceğiz.
</div>


<div class="mw-translate-fuzzy">
For-in komutları, bir defadan fazla yapılması gereken birçok şey için kullanılabilir. Örneğin, range () komutuyla birleştirilebilir:
For-in komutları, bir defadan fazla yapılması gereken birçok şey için kullanılabilir. Örneğin, range () komutuyla birleştirilebilir:
</div>

{{Code|code=
{{Code|code=
serie = range(1,11)
serie = range(1, 11)
total = 0
total = 0
print "sum"
print("sum")
for number in serie:
for number in serie:
print number
print(number)
total = total + number
total = total + number
print "----"
print("----")
print total
print(total)
}}
}}

<div class="mw-translate-fuzzy">
(Kod örneklerini Kopyalama ve Yapıştırma yoluyla bir yorumlayıcı da çalıştırıyorsanız, önceki metin bloğunun bir hata vereceğini göreceksiniz. Bunun yerine, girintili bloğun sonuna, yani satırın sonuna '' toplamı kopyalayın = toplam sayı '' ve ardından yorumlayıcıya yapıştırın. Yorumlayıcı da üç nokta istemi kaybolup kod çalıştırılana kadar bir <enter> basın. Sonra son iki satırı yorumlayıcıya kopyalayın, ardından bir veya daha fazla <enter> cevap görünmelidir.)
(Kod örneklerini Kopyalama ve Yapıştırma yoluyla bir yorumlayıcı da çalıştırıyorsanız, önceki metin bloğunun bir hata vereceğini göreceksiniz. Bunun yerine, girintili bloğun sonuna, yani satırın sonuna '' toplamı kopyalayın = toplam sayı '' ve ardından yorumlayıcıya yapıştırın. Yorumlayıcı da üç nokta istemi kaybolup kod çalıştırılana kadar bir <enter> basın. Sonra son iki satırı yorumlayıcıya kopyalayın, ardından bir veya daha fazla <enter> cevap görünmelidir.)
</div>


<div class="mw-translate-fuzzy">
Eğer yorumlayıcıya '''help(range)''' yazarsanız şunu görürsünüz:
Eğer yorumlayıcıya '''help(range)''' yazarsanız şunu görürsünüz:
{{Code|code=
{{Code|code=
Line 214: Line 353:
}}
}}
Burada köşeli parantez isteğe bağlı bir parametreyi gösterir. Ancak hepsinin tamsayı olması bekleniyor. Aşağıda, range parametrelerini int () kullanarak bir tam sayı olmaya zorlayacağız.
Burada köşeli parantez isteğe bağlı bir parametreyi gösterir. Ancak hepsinin tamsayı olması bekleniyor. Aşağıda, range parametrelerini int () kullanarak bir tam sayı olmaya zorlayacağız.
</div>

{{Code|code=
{{Code|code=
range(...)
decimales = 1000 # for 3 decimales
range(stop) -> list of integers
#decimales = 10000 # for 4 decimales ...
range(start, stop[, step]) -> list of integers
for i in range(int(0 * decimales),int(180 * decimales),int(0.5 * decimales)):
print float(i) / decimales
}}
}}

Here the square brackets denote an optional parameter. However all are expected to be integers. Below we will force the step parameter to be an integer using {{incode|int()}}:

{{Code|code=
number = 1000
for i in range(0, 180 * number, int(0.5 * number)):
print(float(i) / number)
}}

<div class="mw-translate-fuzzy">
Veya bunun gibi daha karmaşık şeyler:
Veya bunun gibi daha karmaşık şeyler:
</div>

{{Code|code=
{{Code|code=
alldaltons = ["Joe", "William", "Jack", "Averell"]
alldaltons = ["Joe", "William", "Jack", "Averell"]
for n in range(4):
for n in range(4):
print alldaltons[n], " is Dalton number ", n
print(alldaltons[n], " is Dalton number ", n)
}}
}}

<div class="mw-translate-fuzzy">
Range () komutunun ayrıca, 0 ile başlayan (başlangıç numarasını belirtmezseniz) ve son numarasının belirttiğiniz bitiş numarasından daha az olacağını tuhaf bir özelliğe sahip olduğunu görürsünüz. Bu elbette diğer Python komutları ile iyi çalışır. Örneğin:
Range () komutunun ayrıca, 0 ile başlayan (başlangıç numarasını belirtmezseniz) ve son numarasının belirttiğiniz bitiş numarasından daha az olacağını tuhaf bir özelliğe sahip olduğunu görürsünüz. Bu elbette diğer Python komutları ile iyi çalışır. Örneğin:
</div>

{{Code|code=
{{Code|code=
alldaltons = ["Joe", "William", "Jack", "Averell"]
alldaltons = ["Joe", "William", "Jack", "Averell"]
total = len(alldaltons)
total = len(alldaltons)
for n in range(total):
for n in range(total):
print alldaltons[n]
print(alldaltons[n])
}}
}}

<div class="mw-translate-fuzzy">
Girintili blokların bir başka ilginç kullanımı if komutudur. Bir kod bloğunu yalnızca belirli bir koşul karşılandığında çalıştırırsa, örneğin:
Girintili blokların bir başka ilginç kullanımı if komutudur. Bir kod bloğunu yalnızca belirli bir koşul karşılandığında çalıştırırsa, örneğin:
</div>

{{Code|code=
{{Code|code=
alldaltons = ["Joe", "William", "Jack", "Averell"]
alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Joe" in alldaltons:
if "Joe" in alldaltons:
print "We found that Dalton!!!"
print("We found that Dalton!!!")
}}
}}

<div class="mw-translate-fuzzy">
Elbette bu her zaman ilk cümleyi yazdıracak, ancak ikinci satırı değiştirmeyi deneyin:
Elbette bu her zaman ilk cümleyi yazdıracak, ancak ikinci satırı değiştirmeyi deneyin:
</div>

{{Code|code=
{{Code|code=
if "Lucky" in alldaltons:
if "Lucky" in alldaltons:
}}
}}

<div class="mw-translate-fuzzy">
Sonra hiçbir şey basılmaz. Ayrıca başka bir ifade de belirtebiliriz: ifadesi:
Sonra hiçbir şey basılmaz. Ayrıca başka bir ifade de belirtebiliriz: ifadesi:
</div>

{{Code|code=
{{Code|code=
alldaltons = ["Joe", "William", "Jack", "Averell"]
alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Lucky" in alldaltons:
if "Lucky" in alldaltons:
print "We found that Dalton!!!"
print("We found that Dalton!!!")
else:
else:
print "Such Dalton doesn't exist!"
print("Such Dalton doesn't exist!")
}}
}}

[[#top|top]]


== Fonksiyonlar ==
== Fonksiyonlar ==


<div class="mw-translate-fuzzy">
Çok az [http://docs.python.org/reference/lexical_analysis.html#identifiers standart Python komutları] vardır. Python'un şu anki versiyonunda, yaklaşık 30 tane var ve biz zaten birkaç tanesini biliyoruz. Ama kendi komutlarımızı icat edip edemeyeceğimizi hayal edin? Yapabiliriz ve bu son derece kolay. Aslında, Python kurulumunuza ekleyebileceğiniz çoğu ek modül tam da bunu yapar, kullanabileceğiniz komutları ekler. Python'daki özel bir komut fonksiyon olarak adlandırılır ve şöyle yapılır:
Çok az [http://docs.python.org/reference/lexical_analysis.html#identifiers standart Python komutları] vardır. Python'un şu anki versiyonunda, yaklaşık 30 tane var ve biz zaten birkaç tanesini biliyoruz. Ama kendi komutlarımızı icat edip edemeyeceğimizi hayal edin? Yapabiliriz ve bu son derece kolay. Aslında, Python kurulumunuza ekleyebileceğiniz çoğu ek modül tam da bunu yapar, kullanabileceğiniz komutları ekler. Python'daki özel bir komut fonksiyon olarak adlandırılır ve şöyle yapılır:
</div>

{{Code|code=
{{Code|code=
def printsqm(myValue):
def printsqm(myValue):
print str(myValue)+" square meters"
print(str(myValue) + " square meters")

printsqm(45)
printsqm(45)
}}
}}
(Başka bir kopyalama ve yapıştırma hatası, yalnızca girintili bölümün sonuna kopyalayın, yani '''"square meters"''' yorumlayıcıya yapıştırın ve üç nokta istemi bir yol gelene kadar <enter> verin, sonra kopyalayıp yapıştırın son satır.)


<div class="mw-translate-fuzzy">
Son derece basit: def () komutu yeni bir fonksiyon tanımlar. Ona bir isim verin ve parantez içinde fonksiyonumuzda kullanacağımız argümanları tanımlayın. Bağımsız değişkenler, işleve iletilecek verilerdir. Örneğin, len () komutuna bakın. Sadece len () yazarsanız, Python size bir argüman gerektirdiğini söyleyecektir. Yani, len () bir şey istiyorum, değil mi? Sonra, örneğin, len (myList) yazacak ve myList'in uzunluğunu alacaksınız. MyList, len () fonksiyonuna ilettiğiniz bir argümandır. Len () işlevi, kendisine geçenlerle ne yapılacağını bildiği şekilde tanımlanır. Burada yaptığımız gibi.
Son derece basit: def () komutu yeni bir fonksiyon tanımlar. Ona bir isim verin ve parantez içinde fonksiyonumuzda kullanacağımız argümanları tanımlayın. Bağımsız değişkenler, işleve iletilecek verilerdir. Örneğin, len () komutuna bakın. Sadece len () yazarsanız, Python size bir argüman gerektirdiğini söyleyecektir. Yani, len () bir şey istiyorum, değil mi? Sonra, örneğin, len (myList) yazacak ve myList'in uzunluğunu alacaksınız. MyList, len () fonksiyonuna ilettiğiniz bir argümandır. Len () işlevi, kendisine geçenlerle ne yapılacağını bildiği şekilde tanımlanır. Burada yaptığımız gibi.
</div>


<div class="mw-translate-fuzzy">
"MyValue" adı herhangi bir şey olabilir ve yalnızca işlev içinde kullanılacaktır. Bu sadece argümana verdiğiniz bir isimdir, onunla bir şeyler yapabilirsiniz, ancak fonksiyona kaç tane argüman bekleneceğini de söyler. Örneğin, bunu yaparsanız:
"MyValue" adı herhangi bir şey olabilir ve yalnızca işlev içinde kullanılacaktır. Bu sadece argümana verdiğiniz bir isimdir, onunla bir şeyler yapabilirsiniz, ancak fonksiyona kaç tane argüman bekleneceğini de söyler. Örneğin, bunu yaparsanız:
</div>

{{Code|code=
{{Code|code=
printsqm(45,34)
printsqm(45, 34)
}}
}}

<div class="mw-translate-fuzzy">
Bir hata olacak. Fonksiyonumuz sadece bir argüman alacak şekilde programlandı, fakat iki, 45 ve 34 aldı. Bunun yerine şöyle bir şey yapabiliriz:
Bir hata olacak. Fonksiyonumuz sadece bir argüman alacak şekilde programlandı, fakat iki, 45 ve 34 aldı. Bunun yerine şöyle bir şey yapabiliriz:
</div>

{{Code|code=
{{Code|code=
def sum(val1,val2):
def sum(val1, val2):
total = val1 + val2
total = val1 + val2
return total
return total


sum(45,34)
myTotal = sum(45, 34)
myTotal = sum(45,34)
}}
}}

<div class="mw-translate-fuzzy">
İki argüman alan, toplayan ve bu değeri veren bir fonksiyon yaptık. Bir şeyi döndürmek çok yararlıdır, çünkü sonucunu myTotal değişkeninde saklamak gibi bir şey yapabiliriz. Elbette, biz tercüman olduğumuz ve her şey basıldığı için:
İki argüman alan, toplayan ve bu değeri veren bir fonksiyon yaptık. Bir şeyi döndürmek çok yararlıdır, çünkü sonucunu myTotal değişkeninde saklamak gibi bir şey yapabiliriz. Elbette, biz tercüman olduğumuz ve her şey basıldığı için:
</div>
{{Code|code=

sum(45,34)
[[#top|top]]
}}
sonucu ekranda yazdırır, ancak yorumlayıcının dışında, işlev içinde herhangi bir yazdırma komutu olmadığından, ekranda hiçbir şey görünmez. Yapmanız gerekenler:
{{Code|code=
print sum(45,34)
}}
bir şeyin basılması. İşlevler hakkında daha fazla bilgi edinin [http://www.diveintopython.net/getting_to_know_python/declaring_functions.html].


== Modüller ==
== Modüller ==


<div class="mw-translate-fuzzy">
Şimdi Python'un nasıl çalıştığı hakkında iyi bir fikrimiz olduğuna göre, son bir şeye ihtiyacımız var: Dosya ve modüllerle nasıl çalışılır
Şimdi Python'un nasıl çalıştığı hakkında iyi bir fikrimiz olduğuna göre, son bir şeye ihtiyacımız var: Dosya ve modüllerle nasıl çalışılır
</div>


<div class="mw-translate-fuzzy">
Şimdiye kadar, Python komutlarını yorumlayıcıya satır satır yazdık, değil mi? Birlikte birkaç satır yazabilseydik ve hepsini bir kerede yürütebilseydik? Kesinlikle daha karmaşık şeyler yapmak için çok zor olurdu. Ve biz de işimizi kurtarabiliriz. Bu da son derece kolaydır. Basitçe bir metin editörü (Windows not defteri, Linux gedit, emacs veya vi gibi) açın ve tüm Python kodlarınızı, yorumlayıcıya girdiğiniz şekilde, girintilerle vb. Yazın. Ardından, bu dosyayı bir yere kaydedin. , tercihen bir .py uzatma ile. İşte bu, tam bir Python programınız var. Tabii ki, not defterinden çok daha iyi editörler var, ama sadece size bir Python programının bir metin dosyasından başka bir şey olmadığını göstermektir.
Şimdiye kadar, Python komutlarını yorumlayıcıya satır satır yazdık, değil mi? Birlikte birkaç satır yazabilseydik ve hepsini bir kerede yürütebilseydik? Kesinlikle daha karmaşık şeyler yapmak için çok zor olurdu. Ve biz de işimizi kurtarabiliriz. Bu da son derece kolaydır. Basitçe bir metin editörü (Windows not defteri, Linux gedit, emacs veya vi gibi) açın ve tüm Python kodlarınızı, yorumlayıcıya girdiğiniz şekilde, girintilerle vb. Yazın. Ardından, bu dosyayı bir yere kaydedin. , tercihen bir .py uzatma ile. İşte bu, tam bir Python programınız var. Tabii ki, not defterinden çok daha iyi editörler var, ama sadece size bir Python programının bir metin dosyasından başka bir şey olmadığını göstermektir.
</div>


<div class="mw-translate-fuzzy">
Python'un bu programı yürütmesini sağlamak için yüzlerce yol vardır. Pencerelerde, dosyayı sağ tıklayın, Python ile açın ve çalıştırın. Ancak Python tercümandan da çalıştırabilirsiniz. Bunun için tercümanın .py programınızın nerede olduğunu bilmesi gerekir. FreeCAD'de en kolay yol, programınızı FreeCAD'in Python yorumlayıcısının FreeCAD'in bin klasörü veya Mod klasörlerinden herhangi biri gibi varsayılan olarak bildiği bir yere yerleştirmektir. (Linux'ta muhtemelen / home / <kullanıcı adı> /.FreeCAD/Mod dizininiz var, hadi metin dosyasını koyacağımız komut dosyalarına bir alt dizin ekleyelim.) Bunun gibi bir dosya yazdığımızı varsayalım:
Python'un bu programı yürütmesini sağlamak için yüzlerce yol vardır. Pencerelerde, dosyayı sağ tıklayın, Python ile açın ve çalıştırın. Ancak Python tercümandan da çalıştırabilirsiniz. Bunun için tercümanın .py programınızın nerede olduğunu bilmesi gerekir. FreeCAD'de en kolay yol, programınızı FreeCAD'in Python yorumlayıcısının FreeCAD'in bin klasörü veya Mod klasörlerinden herhangi biri gibi varsayılan olarak bildiği bir yere yerleştirmektir. (Linux'ta muhtemelen / home / <kullanıcı adı> /.FreeCAD/Mod dizininiz var, hadi metin dosyasını koyacağımız komut dosyalarına bir alt dizin ekleyelim.) Bunun gibi bir dosya yazdığımızı varsayalım:
</div>

{{Code|code=
{{Code|code=
def sum(a,b):
def sum(a,b):
return a + b
return a + b


print "myTest.py succesfully loaded"
print("myTest.py succesfully loaded")
}}
}}


<div class="mw-translate-fuzzy">
ve bunu FreeCAD/bin dizinine myTest.py olarak kaydedelim (veya Linux'ta /home/<kullanıcı adı> /.FreeCAD/Mod/scripts.) Şimdi FreeCAD'i başlatalım ve yorumlayıcı penceresinde şunu yazın:
ve bunu FreeCAD/bin dizinine myTest.py olarak kaydedelim (veya Linux'ta /home/<kullanıcı adı> /.FreeCAD/Mod/scripts.) Şimdi FreeCAD'i başlatalım ve yorumlayıcı penceresinde şunu yazın:
</div>

{{Code|code=
{{Code|code=
import myTest
import myTest
}}
}}

<div class="mw-translate-fuzzy">
.py uzantısı olmadan. Bu, tıpkı yorumlayıcıya yazdığımız gibi, dosyanın içeriğini satır satır yürütür. Toplam işlevi oluşturulacak ve mesaj yazdırılacaktır. Büyük bir fark var: import komutu sadece dosyalarımızda yazılan programları yürütmek için değil, aynı zamanda içindeki fonksiyonları yüklemek için de yapılır, böylece yorumlayıcı da kullanılabilir hale gelirler. Bizimki gibi fonksiyonlar içeren dosyalara modüller denir.
.py uzantısı olmadan. Bu, tıpkı yorumlayıcıya yazdığımız gibi, dosyanın içeriğini satır satır yürütür. Toplam işlevi oluşturulacak ve mesaj yazdırılacaktır. Büyük bir fark var: import komutu sadece dosyalarımızda yazılan programları yürütmek için değil, aynı zamanda içindeki fonksiyonları yüklemek için de yapılır, böylece yorumlayıcı da kullanılabilir hale gelirler. Bizimki gibi fonksiyonlar içeren dosyalara modüller denir.
</div>


<div class="mw-translate-fuzzy">
Normal olarak, yorumlayıcıya bir sum () işlevi yazdığımızda, onu sadece şöyle uygularız:
Normal olarak, yorumlayıcıya bir sum () işlevi yazdığımızda, onu sadece şöyle uygularız:
</div>

{{Code|code=
{{Code|code=
sum(14,45)
sum(14, 45)
}}
}}

<div class="mw-translate-fuzzy">
Daha önce yaptığımız gibi. Sum () fonksiyonumuzu içeren bir modülü içe aktardığımızda, sözdizimi biraz farklıdır. Şöyle yaparız:
Daha önce yaptığımız gibi. Sum () fonksiyonumuzu içeren bir modülü içe aktardığımızda, sözdizimi biraz farklıdır. Şöyle yaparız:
</div>

{{Code|code=
{{Code|code=
myTest.sum(14,45)
myTest.sum(14, 45)
}}
}}

<div class="mw-translate-fuzzy">
Yani, modül bir "konteyner" olarak içe aktarılır ve tüm fonksiyonları içeridedir. Bu son derece kullanışlıdır, çünkü birçok modülü içe aktarabilir ve her şeyi iyi organize edebiliriz. Yani, temelde, her yerde '''something.somethingElse'''', arada bir nokta varken, bu '''somethingElse''' '''something''' içindedir demektir.
Yani, modül bir "konteyner" olarak içe aktarılır ve tüm fonksiyonları içeridedir. Bu son derece kullanışlıdır, çünkü birçok modülü içe aktarabilir ve her şeyi iyi organize edebiliriz. Yani, temelde, her yerde '''something.somethingElse'''', arada bir nokta varken, bu '''somethingElse''' '''something''' içindedir demektir.
</div>


<div class="mw-translate-fuzzy">
Sum() fonksiyonumuzu doğrudan ana yorumlayıcı alanına da aktarabiliriz, şöyle:
Sum() fonksiyonumuzu doğrudan ana yorumlayıcı alanına da aktarabiliriz, şöyle:
</div>

{{Code|code=
{{Code|code=
from myTest import *
from myTest import *
sum(12,54)
sum(12, 54)
}}
}}

<div class="mw-translate-fuzzy">
Temel olarak tüm modüller böyle davranır. Bir modülü içe aktarırsanız, işlevlerini kullanabilirsiniz: module.function (argument). Neredeyse tüm modüller bunu yapar: yorumlayıcı da veya kendi Python modüllerinde kullanabileceğiniz işlevleri, yeni veri türlerini ve sınıflarını tanımlar, çünkü hiçbir şey sizin modülünüzün içine diğer modülleri içe aktarmanızı engellemez!
Temel olarak tüm modüller böyle davranır. Bir modülü içe aktarırsanız, işlevlerini kullanabilirsiniz: module.function (argument). Neredeyse tüm modüller bunu yapar: yorumlayıcı da veya kendi Python modüllerinde kullanabileceğiniz işlevleri, yeni veri türlerini ve sınıflarını tanımlar, çünkü hiçbir şey sizin modülünüzün içine diğer modülleri içe aktarmanızı engellemez!
</div>


<div class="mw-translate-fuzzy">
Son derece yararlı bir şey. Hangi modüllere sahip olduğumuzu, hangi fonksiyonların içinde olduğunu ve nasıl kullanılacağını (yani, ne tür argümanlara ihtiyaç duyduklarını) nasıl biliyoruz? Python'un bir help () işlevi olduğunu zaten gördük. Şunu yapın:
Son derece yararlı bir şey. Hangi modüllere sahip olduğumuzu, hangi fonksiyonların içinde olduğunu ve nasıl kullanılacağını (yani, ne tür argümanlara ihtiyaç duyduklarını) nasıl biliyoruz? Python'un bir help () işlevi olduğunu zaten gördük. Şunu yapın:
</div>

{{Code|code=
{{Code|code=
help()
help("modules")
modules
}}
}}

<div class="mw-translate-fuzzy">
Mevcut tüm modüllerin bir listesini verir. Şimdi etkileşimli yardımdan çıkmak ve bunlardan herhangi birini almak için q yazabiliriz. Hatta dir () komutuyla içeriğine göz atabiliriz.
Mevcut tüm modüllerin bir listesini verir. Şimdi etkileşimli yardımdan çıkmak ve bunlardan herhangi birini almak için q yazabiliriz. Hatta dir () komutuyla içeriğine göz atabiliriz.
</div>

{{Code|code=
{{Code|code=
import math
import math
dir(math)
dir(math)
}}
}}

<div class="mw-translate-fuzzy">
Matematik modülünde yer alan tüm fonksiyonları ve ayrıca __doc__, __dosya__, __name__ adında garip şeyleri göreceğiz. __Doc__ son derece kullanışlıdır, bir belge metnidir. (İyi yapılmış) modüllerin her işlevi, nasıl kullanılacağını açıklayan bir __doc __ işlevine sahiptir. Örneğin, matematik modülünün yanında bir sin işlevi olduğunu görüyoruz. Nasıl kullanılacağını bilmek ister misiniz?
Matematik modülünde yer alan tüm fonksiyonları ve ayrıca __doc__, __dosya__, __name__ adında garip şeyleri göreceğiz. __Doc__ son derece kullanışlıdır, bir belge metnidir. (İyi yapılmış) modüllerin her işlevi, nasıl kullanılacağını açıklayan bir __doc __ işlevine sahiptir. Örneğin, matematik modülünün yanında bir sin işlevi olduğunu görüyoruz. Nasıl kullanılacağını bilmek ister misiniz?
</div>
{{Code|code=
{{Code|code=
print math.sin.__doc__
print(math.sin.__doc__)
}}
}}

<div class="mw-translate-fuzzy">
(Açık olmayabilir, ancak dokümanın her iki tarafında iki alt çizgi karakter vardır.)
(Açık olmayabilir, ancak dokümanın her iki tarafında iki alt çizgi karakter vardır.)
</div>


<div class="mw-translate-fuzzy">
Ve son olarak son bir küçük tüyo: Yeni veya mevcut bir modül üzerinde çalışırken, dosya uzantısını py gibi bir ile değiştirmek en iyisidir: myModule.FCMacro => myModule.py. Sık sık test etmek istiyoruz, böylece yukarıdaki gibi yükleyeceğiz.
Ve son olarak son bir küçük tüyo: Yeni veya mevcut bir modül üzerinde çalışırken, dosya uzantısını py gibi bir ile değiştirmek en iyisidir: myModule.FCMacro => myModule.py. Sık sık test etmek istiyoruz, böylece yukarıdaki gibi yükleyeceğiz.
</div>

{{Code|code=
{{Code|code=
import myModule
import importlib
importlib.reload(myTest)
myModule.myTestFunction()
}}
}}
Ancak, myTestFunction () işlevinin doğru çalışmadığını görürsek ne olur? Editörümüze geri dönüyor ve değişiklikler yapıyoruz. Sonra, python yorumlayıcısını kapatmak ve yeniden açmak yerine, modülü şu şekilde güncelleyebiliriz:
{{Code|code=
reload(myModule)
}}
Bu dosyayı yeniden adlandırma, Python'un FCMacro uzantısı hakkında bilmediğindendir.


<div class="mw-translate-fuzzy">
Bununla birlikte, iki alternatif vardır: Bir makroda Python'un exec veya execfile işlevlerini kullanın.
Bununla birlikte, iki alternatif vardır: Bir makroda Python'un exec veya execfile işlevlerini kullanın.
</div>
{{Code|code=
f = open("myModule","r")
d = f.read()
exec d
}}
veya
{{Code|code=
execfile "myModule"
}}


Makrolar arasında kod paylaşmak için, FreeCAD veya FreeCADGui modülüne (veya başka bir Python modülüne) erişebilir ve buna herhangi bir öznitelik ayarlayabilirsiniz. Bu makro yürütme hayatta kalmalıdır.
{{Code|code=
{{Code|code=
exec(open("C:/PathToMyMacro/myMacro.FCMacro").read())
import FreeCAD
if hasattr(FreeCAD,"macro2_executed"):
...
else:
FreeCAD.macro2_executed = True # you can assign any value because we only check for the existence of the attribute
... execute macro2
}}
}}

[[#top|top]]


== FreeCAD ile Başlamak ==
== FreeCAD ile Başlamak ==


<div class="mw-translate-fuzzy">
Şimdi Python'un nasıl çalıştığı hakkında iyi bir fikriniz olduğunu ve FreeCAD'in neler sunabileceğini keşfetmeye başlayabileceğinizi düşünüyorum. FreeCAD'in Python fonksiyonları farklı modüllerde iyi düzenlenmiştir. FreeCAD'i başlattığınızda bazıları zaten yüklendi (içe aktarıldı). Yani, sadece yap
Şimdi Python'un nasıl çalıştığı hakkında iyi bir fikriniz olduğunu ve FreeCAD'in neler sunabileceğini keşfetmeye başlayabileceğinizi düşünüyorum. FreeCAD'in Python fonksiyonları farklı modüllerde iyi düzenlenmiştir. FreeCAD'i başlattığınızda bazıları zaten yüklendi (içe aktarıldı). Yani, sadece yap
</div>

{{Code|code=
{{Code|code=
dir()
dir()
}}
}}
ve [[FreeCAD Scripting Basics/tr|FreeCAD Betik esaslarını]] okuyun.


[[#top|top]]
<div class="mw-translate-fuzzy">
Elbette, burada Python dünyasının sadece çok küçük bir kısmını gördük. Bahsetmediğimiz birçok önemli kavram var. İnternette çok önemli üç Python referans belgesi var:
* [http://docs.python.org/3/tutorial/index.html resmi Python öğreticisi bundan daha fazla bilgi içeren]
* [http://docs.python.org/reference/ resmi Python referansı]
* [http://www.diveintopython.net Python'a dalın] wikibook / kitabı.
Yer imlerine eklediğinizden emin olun!
</div>


==Notes==


* FreeCAD was originally designed to work with Python 2. Since Python 2 reached the end of its life in 2020, future development of FreeCAD will be done exclusively with Python 3, and backwards compatibility will not be supported.
{{docnav/tr|[[Macros/tr|Makrolar]]|[[Python scripting tutorial/tr|Python betik kılavuzu]]}}
* Much more information about Python can be found in the [https://docs.python.org/3/tutorial/index.html official Python tutorial] and the [https://docs.python.org/3/reference/ official Python reference].


[[#top|top]]
{{Userdocnavi}}


<div class="mw-translate-fuzzy">
[[Category:Poweruser Documentation/tr]]
{{docnav/tr|[[Macros/tr|Makrolar]]|[[Python scripting tutorial/tr|Python betik kılavuzu]]}}
</div>


{{Powerdocnavi{{#translation:}}}}
[[Category:Python_Code{{#translation:}}]]
{{clear}}
{{clear}}

Revision as of 07:16, 28 May 2020

Introduction

Bu Python'a yeni başlayanlar için kısa bir rehberdir. Python, açık kaynaklı, çoklu bir platformdur programlama dili. Python, onu diğer yaygın programlama dillerinden çok farklı kılan ve sizin gibi yeni kullanıcıların erişebildiği birçok özelliğe sahiptir:

  • Özellikle insanlar tarafından okunması kolay olacak şekilde tasarlandı ve bu yüzden öğrenmesi ve anlaması çok kolay.
  • Yorumlanır, yani C gibi derlenmiş dillerden farklı olarak, programınızın yürütülmeden önce derlenmesi gerekmez. İsterseniz yazdığınız kod, satır satır hemen çalıştırılabilir. Yavaş yavaş adım adım ilerleyebildiğiniz için, kodunuzdaki hataları öğrenmek ve hataları bulmak son derece kolaydır.
  • Kodlama dili olarak kullanılmak üzere diğer programlara gömülebilir. FreeCAD'in yerleşik bir Python yorumlayıcısı vardır; Python kodunu FreeCAD'e yazabilir, örneğin FreeCAD'in parçalarını değiştirebilir, örneğin geometri oluşturmak için. Bu, bazı programcıların kodladığı "küre yarat" etiketli bir düğmeyi tıklamak yerine, son derece güçlüdür; Programcının öngöremeyeceği şekilde veya istediğiniz şekilde tam olarak istediğiniz geometriyi oluşturarak kendi aracınızı kolayca oluşturma özgürlüğüne sahipsiniz.
  • Genişletilebilirdir, Python kurulumunuzdaki yeni modülleri kolayca takabilir ve işlevselliğini artırabilirsiniz. Örneğin, Python'un jpg görüntüleri okuyup yazmasına, twitter ile iletişim kurmasına, işletim sisteminiz tarafından gerçekleştirilecek görevleri zamanlamasına, vb. İzin veren modüllere sahipsiniz.

Aşağıdaki kod parçacıklarını bir Python yorumlayıcısına girmenizi kesinlikle öneririz. Tartışmalarımızın çoğu için önemli olan, pasajın çalıştırılmasından sonraki satırdır, ortaya çıkar. Kodu çalıştırmamak yumruk çizgisi olmadan tümüyle oluşturulur. Öyleyse eller! Aşağıdakiler çok basit bir giriştir ve hiçbir şekilde tam bir eğitim değildir. Ancak bizim umudumuz, bunun FreeCAD mekanizmalarını daha derinlemesine keşfetmek için yeterli temelleri sağlayacağıdır.

Yorumlayıcı

Genellikle, bilgisayar programları yazarken, sadece bir metin editörünü veya özel programlama ortamınızı (genellikle birkaç ek araç içeren bir metin editörüdür) açarsınız, programınızı yazıp derler ve çalıştırırsınız. Genellikle, kod yazma sırasında bir veya daha fazla hata yapıldı ise programınız çalışmayacaktır. Neyin yanlış gittiğini söyleyen bir hata mesajı bile alabilirsiniz. Ardından metin editörünüze döner, hataları düzeltir, tekrar çalıştırırsınız, programınız istenen şekilde çalışıncaya kadar tekrarlarsınız.

Python'daki bu işlem Python yorumlayıcısının içinde şeffaf bir şekilde yapılabilir. Yorumlayıcı, yalnızca Python kodunu yazabileceğiniz bir komut istemi içeren bir Python penceresidir. Bilgisayarınıza Python yüklerseniz (Windows veya Mac’te iseniz Python web sitesinden indirin, eğer Windows veya Mac’te iseniz, GNU / Linux’taysanız paket deponuzdan yükleyin) Başlat menünüzde bir Python yorumlayıcısı var. Ancak FreeCAD'in alt penceresinde bir Python yorumlayıcısı da vardır:

(Eğer bulamadıysanız, Görünüm -> Paneller -> Python konsolu'nu tıklayın.)

Yorumlayıcı, Python versiyonunu ve ardından Python kodunu girdiğiniz komut istemi olan >>> sembolünü gösterir. Yorumlayıcıya kod yazmak basittir: bir satır bir talimattır. Enter tuşuna bastığınızda, kod satırınız yürütülür (hemen ve görünmez bir şekilde derlendikten sonra). Örneğin, şunu yazmayı deneyin:

print("hello")

print , açıkça ekranda bir şey yazdırmak için kullanılan özel bir Python anahtar kelimesidir. Enter tuşuna bastığınızda, işlem yürütülür ve "merhaba" mesajı yazdırılır. Bir hata yaparsanız, örneğin yazalım:

print(hello)

Python bize merhaba'yı bilmediğini söyleyecek. "Karakterler içeriğin sadece bir jargon, bir metin parçası olan bir dize olduğunu belirtir. " Olmadan, baskı komutu merhaba bir metin parçası değil, özel bir Python anahtar sözcüğüdür. Önemli olan, hemen bir hata yaptığınız konusunda bilgilendirilmenizdir. Yukarı okuna basarak (veya FreeCAD yorumlayıcısında, CTRL yukarı okunda) yazdığınız son komuta geri dönebilir ve düzeltebilirsiniz.

Python yorumlayıcı ayrıca dahili bir yardım sistemine sahiptir. Yazmayı deneyin:

help("print")

Print komutunun yapabileceği her şeyin uzun ve eksiksiz bir açıklamasını alırsınız.

Artık yorumlayıcıya hükmettiğimize göre, ciddi şeylerle başlayabiliriz.

top

Değişkenler

Tabii ki, "merhaba" yazdırmak çok ilginç değil. Daha ilginç olanı, daha önce bilmediğiniz şeyler basmak ya da Python'un sizin için bulmasına izin vermek. Değişken kavramının devreye girdiği yer burasıdır. Bir değişken, yalnızca bir ad altında sakladığınız bir değerdir. Örneğin, şunu yazın:

a = "hello"
print(a)

Sanırım ne olduğunu anladınız, biz "merhaba" dizesini "a" adı altında "kaydettik". Şimdi, "a" artık bilinmeyen bir isim değil! Herhangi bir yerde, örneğin baskı komutunda kullanabiliriz. İstediğimiz herhangi bir ismi kullanabiliriz, sadece boşluk veya noktalama işareti kullanmama gibi basit kurallara uyun. Örneğin, şunu yazabiliriz:

hello = "my own version of hello"
print(hello)

Gördünüz mü? şimdi merhaba artık tanımsız bir kelime değil. Ya, kötü şansla, Python'da zaten var olan bir ismi seçersek? Dizimizi "print" adı altında saklamak istediğimizi varsayalım:

myVariable = "hello"
print(myVariable)
myVariable = "good bye"
print(myVariable)

MyVariable'ın değerini değiştirdik. Ayrıca değişkenleri de kopyalayabiliriz:

var1 = "hello"
var2 = var1
print(var2)

Değişkenlerinize anlamlı adlar vermenin önemli olduğunu unutmayın. Bir süre sonra "a" isimli değişkeninizin neyi temsil ettiğini hatırlamayacaksınız. Fakat eğer ismini verdiyseniz, örneğin myWelcomeMessage, amacını kolayca hatırlarsınız. Ayrıca, kodunuz kendi kendini belgelemeye bir adım daha yakın.

Harf boyutu çok önemli. myVariable, myvariable ile aynı değildir; büyük / küçük harf farkı v. print myvariable yazarsanız, tanımlanmayan bir hatayla geri dönecektir.

top

Sayılar

Elbette, programlamanın yalnızca metin dizeleri için değil, her türlü verinin ve özellikle sayıların işlenmesinde yararlı olduğunu bilmelisiniz. Bir şey önemlidir, Python ne tür verilerle uğraştığını bilmelidir. Merhaba örneğimizde, print komutunun "merhaba" dizgimizi tanıdığını gördük. Bunun nedeni, " kullanarak, özellikle baskı komutunun bundan sonra gelenlerin bir metin dizesi olduğunu söylemiş olmamızdır.

Özel bir Python anahtar kelime türüyle bir değişkenin veri türünü her zaman kontrol edebiliriz:

myVar = "hello"
type(myVar)

Bize myVar'ın içeriğinin Pyrhon jargonundaki string için kısa olan str olduğunu söyleyecektir. Tam sayı ve değişken sayılar gibi diğer temel veri türlerimiz de vardır

firstNumber = 10
secondNumber = 20
print(firstNumber + secondNumber)
type(firstNumber)

Bu çok daha ilginç, değil mi? Şimdi güçlü bir hesap makinemiz var! Ne kadar iyi çalıştığına bakın, Python 10 ve 20'nin tam sayı olduğunu biliyor. Böylece "int" olarak depolanırlar ve Python onlarla tamsayılarla yapabileceği her şeyi yapabilir. Bunun sonuçlarına bakın:

firstNumber = "10"
secondNumber = "20"
print(firstNumber + secondNumber)

Gördünüz mü? Python'u iki değişkenimizin sayı değil, sadece metin parçaları olduğunu düşünmeye zorladık. Python iki parçayı bir araya getirebilir, ancak toplamı bulmaya çalışmaz. Fakat biz tamsayılardan bahsediyorduk. Kayan noktalı sayılar da vardır. Fark, tam sayıların ondalık bölüm içermemesi, kayan noktalı sayıların ise ondalık bölüm içermesidir:

var1 = 13
var2 = 15.65
print("var1 is of type ", type(var1))
print("var2 is of type ", type(var2))

Int ve Floats birlikte sorunsuzca karıştırılabilir:

total = var1 + var2
print(total)
print(type(total))

Elbette hepsi ondalık sayıdır, değil mi? Sonra Python otomatik olarak sonucun bir kayan noktalı sayı olduğuna karar verdi. Bunun gibi bazı durumlarda, Python hangi tipin kullanılacağına otomatik olarak karar verir. Diğer durumlarda değil. Örneğin:

varA = "hello 123"
varB = 456
print(varA + varB)

Bu bize bir hata verecektir, varA bir dizedir ve varB bir int'dir ve Python ne yapacağını bilemez. Ancak, Python'u türler arasında dönüştürmeye zorlayabiliriz:

varA = "hello"
varB = 123
print(varA + str(varB))

Şimdi her ikisi de dizgedir, işlem çalışır! Baskı sırasında varB'yi "dizeledik", ancak varB'nin kendisini değiştirmediğimizi unutmayın. VarB'yi kalıcı olarak bir dizgeye çevirmek isteseydik, bunu yapmamız gerekirdi:

varB = str(varB)

İsterseniz int () ve float () işlevini int'ye dönüştürmek için int () ve float () işlevini de kullanabiliriz:

varA = "123"
print(int(varA))
print(float(varA))

Bu bölümde print komutunu birkaç şekilde kullandığımızı fark etmiş olmalısınız. Değişkenleri, toplamları, virgülle ayrılmış birçok şeyi ve hatta type () gibi diğer Python komutlarının sonuçlarını bastık. Şu iki emri yerine getirdiğini de farkettiniz,

type(varA)
print(type(varA))

tam olarak aynı sonucu verir. Çünkü biz yorumlayıcıdayız ve her şey otomatik olarak basılıyor. Yorumlayıcı dışında çalışan daha karmaşık programlar yazdığımızda, otomatik olarak yazdırılmazlar, bu yüzden print komutunu kullanmamız gerekir. Şu andan itibaren, burada kullanmayı bırakalım, daha hızlı olacak. Böylece basitçe şunu yazabiliriz:

myVar = "hello friends"
myVar

top

Listeler

Bir başka ilginç veri tipi de bir liste. Bir liste sadece başka bir veri topluluğudur. "" Kullanarak bir metin dizesini tanımladığımız şekilde, [] kullanarak bir liste tanımlarız:

myList = [1, 2, 3]
type(myList)
myOtherList = ["Bart", "Frank", "Bob"]
myMixedList = ["hello", 345, 34.567]

Herhangi bir tür veri içerebileceğini görüyorsunuz. Listeler çok faydalıdır çünkü değişkenleri birlikte gruplayabilirsiniz. Daha sonra o gruptaki her türlü şeyi yapabilirsiniz; örneğin, onları sayarak:

len(myOtherList)

veya listedeki bir öğeyi almak:

myName = myOtherList[0]
myFriendsName = myOtherList[1]

en () komutu bir listedeki toplam öğe sayısını döndürürken, listedeki "konumları" 0 ile başlar. Listedeki ilk öğe her zaman 0 konumunda, yani myOtherList "Bob" da 2. konumda olacaksınız. Listelerle çok daha fazlasını yapabiliriz, içerikleri sıralama, öğeleri kaldırma veya ekleme gibi [1] adresini okuyabilirsiniz.

Komik ve ilginç bir şey: bir metin dizesi karakter listesine çok benzer! Bunu yapmayı deneyin:

myvar = "hello"
len(myvar)
myvar[2]

Genellikle, listelerde yapabileceğinizi dizelerle de yapabilirsiniz. Aslında hem listeler hem de diziler dizilerdir.

Dizeler, ints, floats ve listeler dışında, sözlükleri gibi daha yerleşik veri türleri vardır veya kendi veri türlerinizi bile oluşturabilirsiniz sınıfları ile.

top

Girinti

Listelerin büyük ve harika bir kullanımı da, içinde gezinmek ve her öğeyle bir şeyler yapmaktır. Örneğin şuna bakın:

alldaltons = ["Joe", "William", "Jack", "Averell"]
for dalton in alldaltons:
    print(dalton + " Dalton")

Listemiz boyunca "for ... in ..." komutunu kullanarak yineledik (programlama jargonu) ve her bir öğe için bir şeyler yaptık. Özel sözdizimine dikkat edin: 'için' komutu ':' 'ile sonlanır ve aşağıdakilerin birden fazla komuttan birinin bir bloğu olacağını belirtir. Tercümanda, biten komut satırına girdikten hemen sonra: komut istemi ... olarak değişecektir, bu da Python'un iki nokta üst üste (:) son satırın gerçekleştiğini ve daha fazlasının geldiğini bildiği anlamına gelir.

Python, for ... operasyonunun içinde bir sonraki satırın kaç tanesinde yürütüleceğini nasıl bilecek? Bunun için Python girintiyi kullanır. Yani, bir sonraki satırınız hemen başlamayacak. Onlara bir boşlukla ya da birkaç boşlukla ya da bir sekmeyle ya da birkaç sekmeyle başlayacaksınız. Diğer programlama dilleri, her şeyi parantez içine koymak vb. Gibi diğer yöntemleri kullanır. Sonraki satırlarınızı 'aynı' girintiyle yazdığınız sürece for-in bloğunun bir parçası olarak kabul edilirler. Bir satıra 2 boşlukla, bir başkasını da 4 ile başlarsanız, bir hata olacaktır. İşiniz bittiğinde, girintisiz başka bir satır yazın veya for-in bloğundan geri dönmek için Enter tuşuna basın

Girinti kullanışlıdır, çünkü programın okunabilirliğine yardımcı olur. Büyük girintiler kullanırsanız (örneğin, boşluklar yerine sekmeler kullanın), büyük bir program yazdığınızda neyin içinde yürütüldüğünün net bir görüntüsünü görürsünüz. For-in dışındaki komutların da girilen kod bloklarını içerebileceğini göreceğiz.

For-in komutları, bir defadan fazla yapılması gereken birçok şey için kullanılabilir. Örneğin, range () komutuyla birleştirilebilir:

serie = range(1, 11)
total = 0
print("sum")
for number in serie:
    print(number)
    total = total + number
print("----")
print(total)

(Kod örneklerini Kopyalama ve Yapıştırma yoluyla bir yorumlayıcı da çalıştırıyorsanız, önceki metin bloğunun bir hata vereceğini göreceksiniz. Bunun yerine, girintili bloğun sonuna, yani satırın sonuna toplamı kopyalayın = toplam sayı ve ardından yorumlayıcıya yapıştırın. Yorumlayıcı da üç nokta istemi kaybolup kod çalıştırılana kadar bir <enter> basın. Sonra son iki satırı yorumlayıcıya kopyalayın, ardından bir veya daha fazla <enter> cevap görünmelidir.)

Eğer yorumlayıcıya help(range) yazarsanız şunu görürsünüz:

range(...)
    range(stop) -> list of integers
    range(start, stop[, step]) -> list of integers

Burada köşeli parantez isteğe bağlı bir parametreyi gösterir. Ancak hepsinin tamsayı olması bekleniyor. Aşağıda, range parametrelerini int () kullanarak bir tam sayı olmaya zorlayacağız.

range(...)
    range(stop) -> list of integers
    range(start, stop[, step]) -> list of integers

Here the square brackets denote an optional parameter. However all are expected to be integers. Below we will force the step parameter to be an integer using int():

number = 1000
for i in range(0, 180 * number, int(0.5 * number)):
    print(float(i) / number)

Veya bunun gibi daha karmaşık şeyler:

alldaltons = ["Joe", "William", "Jack", "Averell"]
for n in range(4):
    print(alldaltons[n], " is Dalton number ", n)

Range () komutunun ayrıca, 0 ile başlayan (başlangıç numarasını belirtmezseniz) ve son numarasının belirttiğiniz bitiş numarasından daha az olacağını tuhaf bir özelliğe sahip olduğunu görürsünüz. Bu elbette diğer Python komutları ile iyi çalışır. Örneğin:

alldaltons = ["Joe", "William", "Jack", "Averell"]
total = len(alldaltons)
for n in range(total):
    print(alldaltons[n])

Girintili blokların bir başka ilginç kullanımı if komutudur. Bir kod bloğunu yalnızca belirli bir koşul karşılandığında çalıştırırsa, örneğin:

alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Joe" in alldaltons:
    print("We found that Dalton!!!")

Elbette bu her zaman ilk cümleyi yazdıracak, ancak ikinci satırı değiştirmeyi deneyin:

if "Lucky" in alldaltons:

Sonra hiçbir şey basılmaz. Ayrıca başka bir ifade de belirtebiliriz: ifadesi:

alldaltons = ["Joe", "William", "Jack", "Averell"]
if "Lucky" in alldaltons:
    print("We found that Dalton!!!")
else:
    print("Such Dalton doesn't exist!")

top

Fonksiyonlar

Çok az standart Python komutları vardır. Python'un şu anki versiyonunda, yaklaşık 30 tane var ve biz zaten birkaç tanesini biliyoruz. Ama kendi komutlarımızı icat edip edemeyeceğimizi hayal edin? Yapabiliriz ve bu son derece kolay. Aslında, Python kurulumunuza ekleyebileceğiniz çoğu ek modül tam da bunu yapar, kullanabileceğiniz komutları ekler. Python'daki özel bir komut fonksiyon olarak adlandırılır ve şöyle yapılır:

def printsqm(myValue):
    print(str(myValue) + " square meters")

printsqm(45)

Son derece basit: def () komutu yeni bir fonksiyon tanımlar. Ona bir isim verin ve parantez içinde fonksiyonumuzda kullanacağımız argümanları tanımlayın. Bağımsız değişkenler, işleve iletilecek verilerdir. Örneğin, len () komutuna bakın. Sadece len () yazarsanız, Python size bir argüman gerektirdiğini söyleyecektir. Yani, len () bir şey istiyorum, değil mi? Sonra, örneğin, len (myList) yazacak ve myList'in uzunluğunu alacaksınız. MyList, len () fonksiyonuna ilettiğiniz bir argümandır. Len () işlevi, kendisine geçenlerle ne yapılacağını bildiği şekilde tanımlanır. Burada yaptığımız gibi.

"MyValue" adı herhangi bir şey olabilir ve yalnızca işlev içinde kullanılacaktır. Bu sadece argümana verdiğiniz bir isimdir, onunla bir şeyler yapabilirsiniz, ancak fonksiyona kaç tane argüman bekleneceğini de söyler. Örneğin, bunu yaparsanız:

printsqm(45, 34)

Bir hata olacak. Fonksiyonumuz sadece bir argüman alacak şekilde programlandı, fakat iki, 45 ve 34 aldı. Bunun yerine şöyle bir şey yapabiliriz:

def sum(val1, val2):
    total = val1 + val2
    return total

myTotal = sum(45, 34)

İki argüman alan, toplayan ve bu değeri veren bir fonksiyon yaptık. Bir şeyi döndürmek çok yararlıdır, çünkü sonucunu myTotal değişkeninde saklamak gibi bir şey yapabiliriz. Elbette, biz tercüman olduğumuz ve her şey basıldığı için:

top

Modüller

Şimdi Python'un nasıl çalıştığı hakkında iyi bir fikrimiz olduğuna göre, son bir şeye ihtiyacımız var: Dosya ve modüllerle nasıl çalışılır

Şimdiye kadar, Python komutlarını yorumlayıcıya satır satır yazdık, değil mi? Birlikte birkaç satır yazabilseydik ve hepsini bir kerede yürütebilseydik? Kesinlikle daha karmaşık şeyler yapmak için çok zor olurdu. Ve biz de işimizi kurtarabiliriz. Bu da son derece kolaydır. Basitçe bir metin editörü (Windows not defteri, Linux gedit, emacs veya vi gibi) açın ve tüm Python kodlarınızı, yorumlayıcıya girdiğiniz şekilde, girintilerle vb. Yazın. Ardından, bu dosyayı bir yere kaydedin. , tercihen bir .py uzatma ile. İşte bu, tam bir Python programınız var. Tabii ki, not defterinden çok daha iyi editörler var, ama sadece size bir Python programının bir metin dosyasından başka bir şey olmadığını göstermektir.

Python'un bu programı yürütmesini sağlamak için yüzlerce yol vardır. Pencerelerde, dosyayı sağ tıklayın, Python ile açın ve çalıştırın. Ancak Python tercümandan da çalıştırabilirsiniz. Bunun için tercümanın .py programınızın nerede olduğunu bilmesi gerekir. FreeCAD'de en kolay yol, programınızı FreeCAD'in Python yorumlayıcısının FreeCAD'in bin klasörü veya Mod klasörlerinden herhangi biri gibi varsayılan olarak bildiği bir yere yerleştirmektir. (Linux'ta muhtemelen / home / <kullanıcı adı> /.FreeCAD/Mod dizininiz var, hadi metin dosyasını koyacağımız komut dosyalarına bir alt dizin ekleyelim.) Bunun gibi bir dosya yazdığımızı varsayalım:

def sum(a,b):
    return a + b

print("myTest.py succesfully loaded")

ve bunu FreeCAD/bin dizinine myTest.py olarak kaydedelim (veya Linux'ta /home/<kullanıcı adı> /.FreeCAD/Mod/scripts.) Şimdi FreeCAD'i başlatalım ve yorumlayıcı penceresinde şunu yazın:

import myTest

.py uzantısı olmadan. Bu, tıpkı yorumlayıcıya yazdığımız gibi, dosyanın içeriğini satır satır yürütür. Toplam işlevi oluşturulacak ve mesaj yazdırılacaktır. Büyük bir fark var: import komutu sadece dosyalarımızda yazılan programları yürütmek için değil, aynı zamanda içindeki fonksiyonları yüklemek için de yapılır, böylece yorumlayıcı da kullanılabilir hale gelirler. Bizimki gibi fonksiyonlar içeren dosyalara modüller denir.

Normal olarak, yorumlayıcıya bir sum () işlevi yazdığımızda, onu sadece şöyle uygularız:

sum(14, 45)

Daha önce yaptığımız gibi. Sum () fonksiyonumuzu içeren bir modülü içe aktardığımızda, sözdizimi biraz farklıdır. Şöyle yaparız:

myTest.sum(14, 45)

Yani, modül bir "konteyner" olarak içe aktarılır ve tüm fonksiyonları içeridedir. Bu son derece kullanışlıdır, çünkü birçok modülü içe aktarabilir ve her şeyi iyi organize edebiliriz. Yani, temelde, her yerde something.somethingElse', arada bir nokta varken, bu somethingElse something içindedir demektir.

Sum() fonksiyonumuzu doğrudan ana yorumlayıcı alanına da aktarabiliriz, şöyle:

from myTest import *
sum(12, 54)

Temel olarak tüm modüller böyle davranır. Bir modülü içe aktarırsanız, işlevlerini kullanabilirsiniz: module.function (argument). Neredeyse tüm modüller bunu yapar: yorumlayıcı da veya kendi Python modüllerinde kullanabileceğiniz işlevleri, yeni veri türlerini ve sınıflarını tanımlar, çünkü hiçbir şey sizin modülünüzün içine diğer modülleri içe aktarmanızı engellemez!

Son derece yararlı bir şey. Hangi modüllere sahip olduğumuzu, hangi fonksiyonların içinde olduğunu ve nasıl kullanılacağını (yani, ne tür argümanlara ihtiyaç duyduklarını) nasıl biliyoruz? Python'un bir help () işlevi olduğunu zaten gördük. Şunu yapın:

help("modules")

Mevcut tüm modüllerin bir listesini verir. Şimdi etkileşimli yardımdan çıkmak ve bunlardan herhangi birini almak için q yazabiliriz. Hatta dir () komutuyla içeriğine göz atabiliriz.

import math
dir(math)

Matematik modülünde yer alan tüm fonksiyonları ve ayrıca __doc__, __dosya__, __name__ adında garip şeyleri göreceğiz. __Doc__ son derece kullanışlıdır, bir belge metnidir. (İyi yapılmış) modüllerin her işlevi, nasıl kullanılacağını açıklayan bir __doc __ işlevine sahiptir. Örneğin, matematik modülünün yanında bir sin işlevi olduğunu görüyoruz. Nasıl kullanılacağını bilmek ister misiniz?

print(math.sin.__doc__)

(Açık olmayabilir, ancak dokümanın her iki tarafında iki alt çizgi karakter vardır.)

Ve son olarak son bir küçük tüyo: Yeni veya mevcut bir modül üzerinde çalışırken, dosya uzantısını py gibi bir ile değiştirmek en iyisidir: myModule.FCMacro => myModule.py. Sık sık test etmek istiyoruz, böylece yukarıdaki gibi yükleyeceğiz.

import importlib
importlib.reload(myTest)

Bununla birlikte, iki alternatif vardır: Bir makroda Python'un exec veya execfile işlevlerini kullanın.

exec(open("C:/PathToMyMacro/myMacro.FCMacro").read())

top

FreeCAD ile Başlamak

Şimdi Python'un nasıl çalıştığı hakkında iyi bir fikriniz olduğunu ve FreeCAD'in neler sunabileceğini keşfetmeye başlayabileceğinizi düşünüyorum. FreeCAD'in Python fonksiyonları farklı modüllerde iyi düzenlenmiştir. FreeCAD'i başlattığınızda bazıları zaten yüklendi (içe aktarıldı). Yani, sadece yap

dir()

top

Notes

  • FreeCAD was originally designed to work with Python 2. Since Python 2 reached the end of its life in 2020, future development of FreeCAD will be done exclusively with Python 3, and backwards compatibility will not be supported.
  • Much more information about Python can be found in the official Python tutorial and the official Python reference.

top