Τα πάντα για την Python

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την Python

Δημοσίευσηαπό kilon » 18 Νοέμ 2014, 16:17

η Python arrays δεν ειναι ούτε builtin , ουτε static. Αλλά και τα δύο αυτά γεγονότα είναι μικρής πρακτικής σημασία γιατι :

α) αν και η python array δεν ειναι Builtin type < είναι όμως μέλος της Python Standard Library, Που είναι η βιβλιοθήκη που περιλαμβάνεται με τον cpython , Που σημαίνει ότι αν χρησιμοποιείς Python τότε αναγκαστικά περιλαμβάνει και arrays μιας και ο cpython είναι το στανταρτ για όλα τα implementation python.

b) αν και η C array ειναι static size , αυτό έχει να κάνει με τα στοιχεία της , ενώ τα δεδομένα της μπορεί να είναι dynamic sized, επειδή μπορείς να έχει ενα array δεικτών . Οι δείκτες απλά δείχνουν σημεία στην μνήμα διαφορετικών μεγεθών και ανα πάσα στιγμή μπορούν να αλλάξουν. Αν πχ 4 δείκτες μέσα ένα array 4 στοιχείων δίχνουν ένα array 10 στοιχείων αργότερα οι ίδιοι 4 δείκτες μπορεί να δείχνουν σε array 100 στοιχείων. Με αυτό τον τρόπο έχεις την δυνατότητα αν και δεν μπορείς να αλλάξεις καθαυτο το μέγεθος στοιχείων της array να αλλάξεις τον αριθμό συνολικών στοιχείων που κάνει reference. Δηλαδή δεν αλλάξε στο παράδειγμα μας το μεγεθος των δεικτών , παραμένουν 4 αλλά απο την άλλη δείχνουν απο 40 στοιχεία (4 *10) σε 400 (4*100). Και αυτό είναι απλό παράδειγμα, η χρήση δεικτών είναι τεράστιο κεφάλαιο και τι μπορείς να κάνεις μαζί τους. Υπόψην οτι το array καθαυτό είναι ενας δεικτης πχ myarray[10] είναι ιδιο με (*myarray+10)

O python μπορεί να φαίνεται απο άλλο πλανήτη όσον αφορά την C αλλά μην σε ξεγελάει είναι 100% C μια και ο cpython κανεί συνεχή χρήση των δεικτών. Απλά δεν σε βάζει σε διαδικάσια να μπερδεύεσαι και απλά σου δίνει απλές εντολές που τα κάνουν όλα αυτά πισω απο την πλάτη σου συν πολλα άλλα.
Γνώσεις ⇛ Linux: Λίγα πράγματα┃ Προγραμματισμός: Pharo, Python, C++ , Delphi ┃ Αγγλικά: Πολύ Καλά
Ubuntu 14.04 64 bit
16 GB Ram
NVIDIA GTX 650 1 GB
Άβαταρ μέλους
kilon
babeTUX
babeTUX
 
Δημοσιεύσεις: 34
Εγγραφή: 17 Νοέμ 2014, 17:37
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Tassos10 » 25 Νοέμ 2014, 01:09

kilon έγραψε:.....
To Python C Api , είναι ένα σύνολο C εντολών (functions) που επιτρέπουν στην c να μιλάει στον cpython και αντίστροφα.

Το ctypes κανεις το ίδιο πράγμα αλλά επείδη δουλεύει με δυναμικές βιβλιοθήκες C , δηλαδή βιβλιοθήκες C που υπάρχουν ήδη στο συστημα σου , σου δίνει την δυνατότητα να μην χρειαστεί να γράψεις ουτε μια σειρά κώδικα σε C. Tα κάνεις όλα με Python.Αλλά είναι πολυ πιο αργό επείδη κάνει το όλο wrapping real time .

το Cython είναι μεση λύση, οπως το Python C API , θέλει να μεταγλωτίσεις τις βιβλιοθήκες C που θα χρησιμοποιήσεις με cpython αλλά αντίθετως τα κάνεις όλα με Python syntax και κάποιες επιλέον επεκτάσεις στην σύνταξη του Python για να μπορεί να κάνει ότι κάνει και η c. Όποτε έχει και μεγάλη ταχύτητα και δεν γράφεις C.

Ακούγετε πάρα πολύ καλό αυτό.


kilon έγραψε:.....
Υπόψην οτι στα λέω πολύ περιληπτικά, υπάρχουν και βιβλιοθήκες τρίτων όπως το numpy που δίνει τεράστια πληθώρα τύπων δεδομένων που σε κάποια σημεία μοίαζον με την C και το ίδιο σημβαίνει και με την C. Γενικά ο προγραμματισμός είναι ένα πολύ βαθή αντικείμενο.

Ωπ το numpy το είδα τώρα πρόσφατα καθώς έψαχνα κάτι για μια εργασία που έχω αναλάβει.

kilon έγραψε:.....
πχ εγώ φτιάχνω ένα τρόπο επικοινωνία της γλώσσας pharo με τον Python, και πολλά προγράμματα είναι φτιαγμένα σε πολλές γλώσσες.

:shock: Μπράβο!, φαίνεται μία όχι και τόσο εύκολη δουλειά, μπράβο σου ;)


kilon έγραψε:ότι απορία έχεις ρώτα μου , χαρά μου να βοηθάω Έλληνες στην κατανόηση της τεχνολογίας γιατί ότι διδάσκεται στα σχολεία είναι το μαύρο χάλι.


Σε ευχαριστώ πάρα πάρα πολύ για την προτροπή τον χρόνο σου και την καλοσύνη σου, πραγματικά με όλα αυτά που μου λες προσπαθώ να τα αφομοιώσω και ψάχνω ταυτόχρονα ώστε να μάθω και ότι ακόμη μπορώ. Πρώτη φορά τα ακούω όλα αυτά, δεν είχα ιδέα.
Σε ευχαριστούμε πραγματικά για τις πολύ ενδιαφέρουσες γνώσεις που μας μοιράζεις, που δε τις βρίσκει κανείς εύκολα. Μπράβο σου. :thumbup: :bow:
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό kilon » 27 Νοέμ 2014, 11:46

Tassos10 έγραψε:
kilon έγραψε:Σε ευχαριστώ πάρα πάρα πολύ για την προτροπή τον χρόνο σου και την καλοσύνη σου, πραγματικά με όλα αυτά που μου λες προσπαθώ να τα αφομοιώσω και ψάχνω ταυτόχρονα ώστε να μάθω και ότι ακόμη μπορώ. Πρώτη φορά τα ακούω όλα αυτά, δεν είχα ιδέα.
Σε ευχαριστούμε πραγματικά για τις πολύ ενδιαφέρουσες γνώσεις που μας μοιράζεις, που δε τις βρίσκει κανείς εύκολα. Μπράβο σου. :thumbup: :bow:


Τις πληροφορίες αυτές τις βρίσκεις εύκολα απλά απαιτεί μια άλφα γνώση της γλώσσας. Αν είσαι αρχάριος είναι λογικό να μην τα γνωρίζεις αλλά όσο περισσότερο χρησιμοποιείς και μαθαίνεις python θα συνειδητοποιήσεις ότι τα πιο πάνω είναι πολύ βασικά εργαλεία που χρησιμοποιούνται απο τους περισσότερους έμπειρους προγραμματιστές python. Όλα βήμα βήμα μαθαίνονται.
Γνώσεις ⇛ Linux: Λίγα πράγματα┃ Προγραμματισμός: Pharo, Python, C++ , Delphi ┃ Αγγλικά: Πολύ Καλά
Ubuntu 14.04 64 bit
16 GB Ram
NVIDIA GTX 650 1 GB
Άβαταρ μέλους
kilon
babeTUX
babeTUX
 
Δημοσιεύσεις: 34
Εγγραφή: 17 Νοέμ 2014, 17:37
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Tassos10 » 29 Νοέμ 2014, 11:21

Γίνεται να συνδυάσει κανείς python3 με python2 ;
π.χ. το κυρίως πρόγραμμα μου να είναι γραμμένο σε python 3 και ένα κομμάτι μια συνάρτηση μονάχα ας πούμε να είναι γραμμένη σε python 2 .
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό kamar » 29 Νοέμ 2014, 11:27

Tassos10 έγραψε:Γίνεται να συνδυάσει κανείς python3 με python2 ;
π.χ. το κυρίως πρόγραμμα μου να είναι γραμμένο σε python 3 και ένα κομμάτι μια συνάρτηση μονάχα ας πούμε να είναι γραμμένη σε python 2 .


Θεωρητικά γίνεται μέσω import και ελέγχων. Πρακτικά όμως, μάλλον είναι συνταγή για καταστροφή.
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 14.04 trusty 3.13.0-91-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD A6-5400K APU with Radeon HD Graphics ‖ RAM 3347 MiB ‖ ASUS F2A55-M LK2 PLUS
4 Advanced Micro Devices, Inc. [AMD/ATI] Trinity [Radeon HD 7540D] [1002:9991] {radeon}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09)
Άβαταρ μέλους
kamar
punkTUX
punkTUX
 
Δημοσιεύσεις: 166
Εγγραφή: 10 Μάιος 2008, 20:24
Τοποθεσία: Χανιά
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό kilon » 29 Νοέμ 2014, 11:33

όχι out of the box. Τον κώδικα θα τον τρέξει ένας python interpreter και όχι πολλοι. Υπάρχουν κάποιες εξαιρέσεις όμως.

1) Αν χρησιμοποιήσεις cpython 2.7 θα σου δώσει πρόσβαση σχεδόν σε όλα τα features του python 3.

2) κώδικας γραμμένος σε python 2 μπορεί να μετατραπεί σε python 3 με το 2to3 conversion tool και αν δεν κάνω λάθος υπάρχει και το αντίθετο 3to2 . Στην ουσία είναι προγρμαμματάκια που μετατρέπουν κώδικα

3) μπορεί να δημιουργήσεις μια μορφή επικοινωνίας πχ μέσω sockets (έτσι δουλεύει το πρόγραμμα μου ΗΦΑΙΣΤΟΣ) όπου το πρόγραμμα σου που τρέχει κάτω απο cpython 2 μιλάει στο πρόγραμμα που τρέχει κάτω απο cpython 3. Μεινέκτημα : θέλει δουλεία και γνώσεις αλλά δεν είναι δύσκολο. Πλεονέκτημα : μπορείς να το χρησιμοποιήσεις για να μιλήσεις σε οποιαδήποτε γλώσσα προγραμματισμού οπότε οι δυνατότητες του είναι ατελείωτες.
Γνώσεις ⇛ Linux: Λίγα πράγματα┃ Προγραμματισμός: Pharo, Python, C++ , Delphi ┃ Αγγλικά: Πολύ Καλά
Ubuntu 14.04 64 bit
16 GB Ram
NVIDIA GTX 650 1 GB
Άβαταρ μέλους
kilon
babeTUX
babeTUX
 
Δημοσιεύσεις: 34
Εγγραφή: 17 Νοέμ 2014, 17:37
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Tassos10 » 29 Νοέμ 2014, 11:53

Εγώ π.χ. που ξέρω Python3 και θέλω να βάλω σε ένα πρόγραμμα μου το networkx για γραφήματα που όπως βλέπω είναι για python 2, τι είναι ευκολότερο να κάνω;
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό kilon » 29 Νοέμ 2014, 12:47

αν διαβάσει το documentation στον κεφάλαιο installing λέει

"To use NetworkX you need Python 2.6, 2.7, 3.2 or later."

http://networkx.github.io/documentation ... quirements

είναι πλέον σπάνιο βιβλιοθήκες python να μην τρέχουν σε python 3.

σε αυτό το λίνκ θα δείς πόσες βιβλιοθήκες πήγαν απο python 2 σε python 3 (με πράσινο)

https://python3wos.appspot.com/

και πόσες όχι (με κόκκινο). Εννοείται πριν μερικά χρόνια ο πίνακας ήταν κατα κόκκινος αλλά τα πράγματα έχουν βελτιωθεί πάρα πολύ τελευταία.
Γνώσεις ⇛ Linux: Λίγα πράγματα┃ Προγραμματισμός: Pharo, Python, C++ , Delphi ┃ Αγγλικά: Πολύ Καλά
Ubuntu 14.04 64 bit
16 GB Ram
NVIDIA GTX 650 1 GB
Άβαταρ μέλους
kilon
babeTUX
babeTUX
 
Δημοσιεύσεις: 34
Εγγραφή: 17 Νοέμ 2014, 17:37
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό Tassos10 » 29 Νοέμ 2014, 13:00

Ευχαριστώ πολύ για το πολύ ενδιαφέρον και χρήσιμο σύνδεσμο.
Το έχω δει και εγώ, πως "και καλά τρέχει" και σε python3, όμως αυτό εδώ πως το εξηγείς :
Κώδικας: Επιλογή όλων
:~/graph$ python gr.py
...τρέχει κανονικά το πρόγραμμα που χρησιμοποιεί γράφους με την βοήθεια του networkx..


Όταν όμως λέω να τρέξει με python 3 :
Κώδικας: Επιλογή όλων
:~/graph$ python3 gr.py
Traceback (most recent call last):
  File "gr.py", line 4, in <module>
    import networkx as nx
ImportError: No module named networkx


Αν έχει δοκιμάσει κάποιος κάποια άλλη "βιβλιοθήκη" παρόμοια με την networkx ( για δημιουργία γράφων - γραφημάτων ) και τρέχει και σε python 3 ας μου προτείνει με χαρά θα το δοκιμάσω.
Μου αρέσει που με την παραπάνω βιβλιοθήκη μπορώ να χρησιμοποιήσω και την Matplotlib για την γραφική απεικόνιση των γραφημάτων ;)
Spoiler: show
1 Γνώσεις Linux: Πρώτα βήματα ┃ Προγραμματισμού: Πρώτα βήματα ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-50-generic 64bit (el_GR.UTF-8, Unity ubuntu), Ubuntu 3.2.0-49-generic
3 Intel Core2 Quad CPU Q9400 2.66GHz ‖ RAM 3954 MiB ‖ ASRock G31M-S
4 nVidia G92 [GeForce 9800 GT] [10de:0614] {nvidia}
5 eth0: Realtek RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
Tassos10
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 472
Εγγραφή: 29 Μαρ 2010, 10:43
Εκτύπωση

Re: Τα πάντα για την Python

Δημοσίευσηαπό kilon » 29 Νοέμ 2014, 13:17

αν είχε θέμα με το γεγονός ότι έτρεχε μια βιβλιοθήκη python 2 σε python 3 θα σου πετούσε syntax errors. Έδω σου λέει ξεκάθαρα ότι δεν μπορεί να βρεί το αρχείο άρα δυο πράγματα συμβαίνουν

α) Δεν έκανες σωστά το install , πώς ακριβώς εγκατέστησες την βιβλιοθήκη ?

β) δεν έκανε κάτι σωστά το install

Tο πρόβλημα είναι , απο ότι φαίνεται, ότι τα αρχεία δεν είναι σε path τα οποία μπορεί να δεί ο python. Γενικά ο python έχει συγκεκριμένα path που κοιτάει τα οποία μπορείς να ορίσεις με μεταβλητές.

Σε κάθε περίπτωση όταν υπάρχει πρόβλημα με κώδικα ο οποίος έχει github repository πας github εφόσον έχεις λογαριασμό εκεί στο repository του κώδικα και κάνεις open issue στο οποίο εξηγείς το πρόβλημα σου και ένας απο τους προγραμματιστές της βιβλιοθήκης θα σου απαντήσει και θα σε βοηθήσει μιας και κάνεις δεν ξέρει μια βιβλιοθήκη καλήτερα απο αυτόν που την προγραμμάτισε. Ένα ακόμα απο τα μεγάλα πλεονεκτήματα του ανοιχτού κώδικα ;)
Γνώσεις ⇛ Linux: Λίγα πράγματα┃ Προγραμματισμός: Pharo, Python, C++ , Delphi ┃ Αγγλικά: Πολύ Καλά
Ubuntu 14.04 64 bit
16 GB Ram
NVIDIA GTX 650 1 GB
Άβαταρ μέλους
kilon
babeTUX
babeTUX
 
Δημοσιεύσεις: 34
Εγγραφή: 17 Νοέμ 2014, 17:37
Εκτύπωση

ΠροηγούμενηΕπόμενο

  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι