Introduction to Python/tr: Difference between revisions

From FreeCAD Documentation
(Created page with "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...")
(Updating to match new version of source page)
 
(109 intermediate revisions by 3 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
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">
{{docnav/tr|[[Macros/tr|Makrolar]]|[[Python scripting tutorial/tr|Python betik kılavuzu]]}}
</div>

{{TOCright}}

==Introduction==

<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>


<span id="The_interpreter"></span>
==The interpreter==
== Yorumlayıcı ==


<div class="mw-translate-fuzzy">
Usually, when writing computer programs, you simply open a text editor or your special programming environment, (which is usually a text editor with several additional tools) write your program, then compile and execute. Usually, one or more errors were made during entry, so your program won't work. You may even get an error message telling you what went wrong. Then you go back to your text editor, correct the mistakes, run again, repeating until your program works as intended.
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">
That whole process, in Python, can be done transparently inside the Python interpreter. The interpreter is a Python window with a command prompt, where you can simply type Python code. If you install Python on your computer (download it from the [http://www.python.org Python website] if you are on Windows or Mac, install it from your package repository if you are on GNU/Linux), you will have a Python interpreter in your start menu. But FreeCAD also has a Python interpreter in its lower window:
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">
(If you don't have it, click on View --> Panels --> Python console.)
(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:
</div>


The interpreter shows the Python version, then a >>> symbol, which is the command prompt, that is, where you enter Python code. Writing code in the interpreter is simple: one line is one instruction. When you press Enter, your line of code will be executed (after being instantly and invisibly compiled). For example, try writing this:
{{Code|code=
{{Code|code=
print "hello"
print("hello")
}}
}}

<code>print</code> is a special Python keyword that means, obviously, to print something on the screen. When you press Enter, the operation is executed, and the message "hello" is printed. If you make an error, for example let's write:
<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:
</div>

{{Code|code=
{{Code|code=
print hello
print(hello)
}}
}}
Python will tell us that it doesn't know what hello is. The " characters specify that the content is a string, which is simply, in programming jargon, a piece of text. Without the ", the print command believed hello was not a piece of text but a special Python keyword. The important thing is, you immediately get notified that you made an error. By pressing the up arrow (or, in the FreeCAD interpreter, CTRL+up arrow), you can go back to the last command you wrote and correct it.


<div class="mw-translate-fuzzy">
The Python interpreter also has a built-in help system. Try typing:
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.
{{Code|code=
</div>
help

}}
<div class="mw-translate-fuzzy">
or, for example, let's say we don't understand what went wrong with our print hello command above, we want specific information about the "print" command:
Python yorumlayıcı ayrıca dahili bir yardım sistemine sahiptir. Yazmayı deneyin:
</div>

{{Code|code=
{{Code|code=
help("print")
help("print")
}}
}}
You'll get a long and complete description of everything the print command can do.


<div class="mw-translate-fuzzy">
Now that we totally dominate our interpreter, we can begin with the serious stuff.
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.
</div>
{{Top}}
<span id="Variables"></span>
== Değişkenler ==


<div class="mw-translate-fuzzy">
==Variables==
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>


Of course, printing "hello" is not very interesting. More interesting is printing stuff you didn't know before, or let Python find for you. That's where the concept of the variable comes in. A variable is simply a value that you store under a name. For example, type this:
{{Code|code=
{{Code|code=
a = "hello"
a = "hello"
print a
print(a)
}}
}}

I guess you understood what happened, we "saved" the string "hello" under the name "a." Now, "a" is not an unknown name any more! We can use it anywhere, for example in the print command. We can use any name we want, just follow some simple rules, like not using spaces or punctuation. For example, we could write:
<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:
</div>

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

See? now hello is not an undefined word any more. What if, by terrible bad luck, we choose a name that already exists in Python? Let's say we want to store our string under the name "print":
<div class="mw-translate-fuzzy">
{{Code|code=
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:
print = "hello"
</div>
}}

Python is very intelligent and will tell us that this is not possible. It has some "reserved" keywords that cannot be modified. But our variables can be modified any time, that's why they are called variables, the contents can vary. For example:
{{Code|code=
{{Code|code=
myVariable = "hello"
myVariable = "hello"
print myVariable
print(myVariable)
myVariable = "good bye"
myVariable = "good bye"
print myVariable
print(myVariable)
}}
}}

We changed the value of myVariable. We can also copy variables:
<div class="mw-translate-fuzzy">
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)
}}
}}
Note that it is important to give meaningful names to your variables. After a while you won't remember what your variable named "a" represents. But if you named it, for example myWelcomeMessage, you'll easily remember its purpose. Plus your code is a step closer to being self-documenting.


<div class="mw-translate-fuzzy">
Case is very important. myVariable is not the same as myvariable, the difference in the upper/lower case '''v'''. If you were to enter ''print myvariable'' it would come back with an error as not defined.
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">
==Numbers==
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.
</div>
{{Top}}
<span id="Numbers"></span>
== Sayılar ==


<div class="mw-translate-fuzzy">
Of course you must know that programming is useful to treat all kinds of data, and especially numbers, not only text strings. One thing is important, Python must know what kind of data it is dealing with. We saw in our print hello example, that the print command recognized our "hello" string. That is because by using the ", we told specifically the print command what follows next is a text string.
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:
</div>


We can always check the data type of a variable with the special Python keyword type:
{{Code|code=
{{Code|code=
myVar = "hello"
myVar = "hello"
type(myVar)
type(myVar)
}}
}}

It will tell us the contents of myVar is 'str', short for string in Python jargon. We have also other basic types of data, such as integer and float numbers:
<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
</div>

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

This is much more interesting, isn't it? Now we have a powerful calculator! Look at how well it worked, Python knows that 10 and 20 are integer numbers. So they are stored as "int", and Python can do with them everything it can do with integers. Look at the results of this:
<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:
</div>

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

See? We forced Python to consider that our two variables are not numbers but mere pieces of text. Python can add two pieces of text together, but it won't try to find out any sum. But we were talking about integer numbers. There are also float numbers. The difference is that integer numbers don't have decimal part, while float numbers can have a decimal part:
<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:
</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))
}}
}}

Int and Floats can be mixed together without problem:
<div class="mw-translate-fuzzy">
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))
}}
}}

Of course the total has decimals, right? Then Python automatically decided that the result is a float. In several cases such as this one, Python automatically decides what type to use. In other cases it doesn't. For example:
<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:
</div>

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

This will give us an error, varA is a string and varB is an int, and Python doesn't know what to do. However, we can force Python to convert between types:
<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:
</div>

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

Now both are strings, the operation works! Note that we "stringified" varB at the time of printing, but we didn't change varB itself. If we wanted to turn varB permanently into a string, we would need to do this:
<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:
</div>

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

We can also use int() and float() to convert to int and float if we want:
<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:
</div>

{{Code|code=
{{Code|code=
varA = "123"
varA = "123"
print int(varA)
print(int(varA))
print float(varA)
print(float(varA))
}}
}}
'''Note on Python commands'''


<div class="mw-translate-fuzzy">
You must have noticed that in this section we used the print command in several ways. We printed variables, sums, several things separated by commas, and even the result of other Python command such as type(). Maybe you also saw that doing those two commands,
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))
}}
}}

have exactly the same result. That is because we are in the interpreter, and everything is automatically printed. When we write more complex programs that run outside the interpreter, they won't print automatically, so we'll need to use the print command. From now on, let's stop using it here, it'll go faster. So we can simply write:
<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:
</div>

{{Code|code=
{{Code|code=
myVar = "hello friends"
myVar = "hello friends"
myVar
myVar
}}
}}
{{Top}}
You must have seen that most of the Python commands (or keywords) type(), int(), str(), etc. have parenthesis to limit the command contents. The only exception is the print command, which in fact is not really an exception, as it also works normally: print("hello"). However, since it is used often, the Python designers allowed a simpler version.
<span id="Lists"></span>
== Listeler ==


<div class="mw-translate-fuzzy">
==Lists==
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>


Another interesting data type is a list. A list is simply a collection of other data. The same way that we define a text string by using " ", we define a list by using [ ]:
{{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]
}}
}}

You see that it can contain any type of data. Lists are very useful because you can group variables together. You can then do all kinds of things within that group, for example counting them:
<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:
</div>

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

or retrieving one item of a list:
<div class="mw-translate-fuzzy">
veya listedeki bir öğeyi almak:
</div>

{{Code|code=
{{Code|code=
myName = myOtherList[0]
myName = myOtherList[0]
myFriendsName = myOtherList[1]
myFriendsName = myOtherList[1]
}}
}}
You see that while the len() command returns the total number of items in a list, their "position" in the list begins with 0. The first item in a list is always at position 0, so in our myOtherList, "Bob" will be at position 2. We can do much more with lists, you can read [http://www.diveintopython.net/native_data_types/lists.html here], such as sorting contents, removing or adding elements.


<div class="mw-translate-fuzzy">
A funny and interesting thing: a text string is very similar to a list of characters! Try doing this:
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:
</div>

{{Code|code=
{{Code|code=
myvar = "hello"
myvar = "hello"
Line 171: Line 289:
myvar[2]
myvar[2]
}}
}}
Usually, what you can do with lists can also be done with strings. In fact both lists and strings are sequences.


<div class="mw-translate-fuzzy">
Outside strings, ints, floats and lists, there are more built-in data types, such as [http://www.diveintopython.net/native_data_types/index.html#d0e5174 dictionaries], or you can even create your own data types with [http://www.freenetpages.co.uk/hp/alan.gauld/tutclass.htm classes].
Genellikle, listelerde yapabileceğinizi dizelerle de yapabilirsiniz. Aslında hem listeler hem de diziler dizilerdir.
</div>


<div class="mw-translate-fuzzy">
==Indentation==
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}}
<span id="Indentation"></span>
== 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:
</div>


One big cool use of lists is also browsing through them and do something with each item. For example look at this:
{{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")
}}
}}
We iterated (programming jargon) through our list with the "for ... in ..." command and did something with each of the items. Note the special syntax: the '''for''' command terminates with ''':''' indicating the following will be a block of one of more commands. In the interpreter, immediately after you enter the command line ending with :, the command prompt will change to ... which means Python knows that a colon (:) ended line has happened and more is coming.


<div class="mw-translate-fuzzy">
How will Python know how many of the next lines will be to be executed inside the for...in operation? For that, Python uses indentation. That is, your next lines won't begin immediately. You will begin them with a blank space, or several blank spaces, or a tab, or several tabs. Other programming languages use other methods, like putting everything inside parenthesis, etc.
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.
As long as you write your next lines with the '''same''' indentation, they will be considered part of the for-in block. If you begin one line with 2 spaces and the next one with 4, there will be an error.
</div>
When you finished, just write another line without indentation, or simply press Enter to come back from the for-in block


<div class="mw-translate-fuzzy">
Indentation is cool because it aids in program readability. If you use large indentations (for example use tabs instead of spaces because it's larger), when you write a big program you'll have a clear view of what is executed inside what. We'll see that commands other than for-in, can have indented blocks of code too.
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.
</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:
</div>


For-in commands can be used for many things that must be done more than once. It can, for example, be combined with the range() command:
{{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)
}}
}}
(If you have been running the code examples in an interpreter by Copying and Pasting, you will find the previous block of text will throw an error. Instead, copy to the end of the indented block, i.e. the end of the line ''total = total + number'' and then paste to the interpreter. In the interpreter issue an <enter> until the three dot prompt disappears and the code runs. Then copy the final two lines into the interpreter followed by one or more <enter> The final answer should appear.)


<div class="mw-translate-fuzzy">
If you would type into the interpreter '''help(range)''' you would see:
(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:
{{Code|code=
{{Code|code=
range(...)
range(...)
Line 210: Line 349:
range(start, stop[, step]) -> 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.
Here the square brackets denote an optional parameter. However all are expected to be integers. Below we will force the range parameters to be an integer using int()
</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
}}
}}

Or more complex things like this:
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:
</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)
}}
}}

You see that the range() command also has that strange particularity that it begins with 0 (if you don't specify the starting number) and that its last number will be one less than the ending number you specify. That is, of course, so it works well with other Python commands. For example:
<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:
</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])
}}
}}

Another interesting use of indented blocks is with the if command. If executes a code block only if a certain condition is met, for example:
<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:
</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!!!")
}}
}}

Of course this will always print the first sentence, but try replacing the second line by:
<div class="mw-translate-fuzzy">
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:
}}
}}

Then nothing is printed. We can also specify an else: statement:
<div class="mw-translate-fuzzy">
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}}
<span id="Functions"></span>
== Fonksiyonlar ==


<div class="mw-translate-fuzzy">
==Functions==
Ç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>


There are few [http://docs.python.org/reference/lexical_analysis.html#identifiers standard Python commands]. In the current version of Python, there are about 30, and we already know several of them. But imagine if we could invent our own commands? Well, we can, and it's extremely easy. In fact, most the additional modules that you can plug into your Python installation do just that, they add commands that you can use. A custom command in Python is called a function and is made like this:
{{Code|code=
{{Code|code=
def printsqm(myValue):
def printsqm(myValue):
print str(myValue)+" square meters"
print(str(myValue) + " square meters")

printsqm(45)
printsqm(45)
}}
}}
(Another copy and paste error, only copy through the end of the indented section i.e. '''" square meters"''' Paste to the interpreter, and issue <enter> until the three dot prompt goes a way, then copy and paste the final line.)


<div class="mw-translate-fuzzy">
Extremely simple: the def() command defines a new function. You give it a name, and inside the parenthesis you define arguments that we'll use in our function. Arguments are data that will be passed to the function. For example, look at the len() command. If you just write len() alone, Python will tell you it needs an argument. That is, you want len() of something, right? Then, for example, you'll write len(myList) and you'll get the length of myList. Well, myList is an argument that you pass to the len() function. The len() function is defined in such a way that it knows what to do with what is passed to it. Same as we did here.
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:
</div>


The "myValue" name can be anything, and it will be used only inside the function. It is just a name you give to the argument so you can do something with it, but it also serves to tell the function how many arguments to expect. For example, if you do this:
{{Code|code=
{{Code|code=
printsqm(45,34)
printsqm(45, 34)
}}
}}

There will be an error. Our function was programmed to receive just one argument, but it received two, 45 and 34. We could instead do something like this:
<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:
</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)
}}
}}
We made a function that receives two arguments, sums them, and returns that value. Returning something is very useful, because we can do something with the result, such as store it in the myTotal variable. Of course, since we are in the interpreter and everything is printed, doing:
{{Code|code=
sum(45,34)
}}
will print the result on the screen, but outside the interpreter, since there is no print command inside the function, nothing would appear on the screen. You would need to:
{{Code|code=
print sum(45,34)
}}
to have something printed. Read more about functions [http://www.diveintopython.net/getting_to_know_python/declaring_functions.html here].


<div class="mw-translate-fuzzy">
==Modules==
İ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>
{{Top}}
<span id="Modules"></span>
== Modüller ==


<div class="mw-translate-fuzzy">
Now that we have a good idea of how Python works, we'll need one last thing: How to work with files and modules.
Ş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">
Until now, we wrote Python instructions line by line in the interpreter, right? What if we could write several lines together, and have them executed all at once? It would certainly be handier for doing more complex things. And we could save our work too. Well, that too, is extremely easy. Simply open a text editor (such as the windows notepad, Linux gedit, emacs, or vi), and write all your Python lines, the same way as you write them in the interpreter, with indentations, etc. Then, save that file somewhere, preferably with a .py extension. That's it, you have a complete Python program. Of course, there are much better editors than notepad, but it is just to show you that a Python program is nothing else than a text file.
Ş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:
</div>


To make Python execute that program, there are hundreds of ways. In windows, simply right-click your file, open it with Python, and execute it. But you can also execute it from the Python interpreter itself. For this, the interpreter must know where your .py program is. In FreeCAD, the easiest way is to place your program in a place that FreeCAD's Python interpreter knows by default, such as FreeCAD's bin folder, or any of the Mod folders. (In Linux, you probably have a directory /home/<username>/.FreeCAD/Mod, let's add a subdirectory to that called scripts where we will put the text file.) Suppose we write a file like this:
{{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">
and we save it as myTest.py in our FreeCAD/bin directory (or on Linux to /home/<username>/.FreeCAD/Mod/scripts.) Now, let's start FreeCAD, and in the interpreter window, write:
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
}}
}}
without the .py extension. This will simply execute the contents of the file, line by line, just as if we had written it in the interpreter. The sum function will be created, and the message will be printed. There is one big difference: the import command is made not only to execute programs written in files, like ours, but also to load the functions inside, so they become available in the interpreter. Files containing functions, like ours, are called modules.


<div class="mw-translate-fuzzy">
Normally when we write a sum() function in the interpreter, we execute it simply like that:
.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:
</div>

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

Like we did earlier. When we import a module containing our sum() function, the syntax is a bit different. We do:
<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:
</div>

{{Code|code=
{{Code|code=
myTest.sum(14,45)
myTest.sum(14, 45)
}}
}}
That is, the module is imported as a "container", and all its functions are inside. This is extremely useful, because we can import a lot of modules, and keep everything well organized. So, basically, everywhere you see '''something.somethingElse''', with a dot in between, that means '''somethingElse''' is inside '''something'''.


<div class="mw-translate-fuzzy">
We can also import our sum() function directly into the main interpreter space, like this:
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:
</div>

{{Code|code=
{{Code|code=
from myTest import *
from myTest import *
sum(12,54)
sum(12, 54)
}}
}}
Basically all modules behave like that. You import a module, then you can use its functions: module.function(argument). Almost all modules do that: they define functions, new data types and classes that you can use in the interpreter or in your own Python modules, because nothing prevents you from importing other modules inside your module!


<div class="mw-translate-fuzzy">
One last extremely useful thing. How do we know what modules we have, what functions are inside and how to use them (that is, what kind of arguments they need)? We saw already that Python has a help() function. Doing:
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:
</div>

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

Will give us a list of all available modules. We can now type q to get out of the interactive help, and import any of them. We can even browse their content with the dir() command
<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.
</div>

{{Code|code=
{{Code|code=
import math
import math
dir(math)
dir(math)
}}
}}
We'll see all the functions contained in the math module, as well as strange stuff named __doc__, __file__, __name__. The __doc__ is extremely useful, it is a documentation text. Every function of (well-made) modules has a __doc__ that explains how to use it. For example, we see that there is a sin function in side the math module. Want to know how to use it?
{{Code|code=
print math.sin.__doc__
}}
(It may not be evident, but on either side of doc are two underscore characters.)


<div class="mw-translate-fuzzy">
And finally one last little goodie: When we work on a new or existing module, it's best to replace the file extension with py such as: myModule.FCMacro => myModule.py. We often want to test it so we will load it as above.
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__)
import myModule
myModule.myTestFunction()
}}
}}
But what if we see that myTestFunction() doesn't work correctly? We go back to our editor and make changes. Then, instead of closing and reopening the python interpreter, we can simply update the module like this:
{{Code|code=
reload(myModule)
}}
This file renaming is because Python doesn't know about the extension FCMacro.


<div class="mw-translate-fuzzy">
However, there are two alternates: Inside the one macro use Python's exec or execfile functions.
(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.
</div>

{{Code|code=
{{Code|code=
import importlib
f = open("myModule","r")
importlib.reload(myTest)
d = f.read()
exec d
}}
or
{{Code|code=
execfile "myModule"
}}
}}


<div class="mw-translate-fuzzy">
To share code across macros, you can access the FreeCAD or FreeCADGui module (or any other Python module) and set any attribute to it. This should survive the execution of the macro.
Bununla birlikte, iki alternatif vardır: Bir makroda Python'un exec veya execfile işlevlerini kullanın.
</div>

{{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}}
<span id="Starting_with_FreeCAD"></span>
== FreeCAD ile Başlamak ==


<div class="mw-translate-fuzzy">
==Starting with FreeCAD==
Ş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>


Well, I think you now have a good idea of how Python works, and you can start exploring what FreeCAD has to offer. FreeCAD's Python functions are all well organized in different modules. Some of them are already loaded (imported) when you start FreeCAD. So, just do
{{Code|code=
{{Code|code=
dir()
dir()
}}
}}
{{Top}}
and read on to [[FreeCAD Scripting Basics]]...
==Notes==

Of course, we saw here only a very small part of the Python world. There are many important concepts that we didn't mention. There are three very important Python reference documents on the net:
* the [http://docs.python.org/3/tutorial/index.html official Python tutorial with way more information than this one]
* the [http://docs.python.org/reference/ official Python reference]
* the [http://www.diveintopython.net Dive into Python] wikibook/ book.
Be sure to bookmark them!



* 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|Macros|Python scripting tutorial}}
* 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}}


<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:}}}}
{{clear}}
[[Category:Developer Documentation{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]

Latest revision as of 14:15, 17 February 2023

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