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

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

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

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

Δημοσίευσηαπό Ilias95 » 16 Νοέμ 2014, 16:53

Όχι, δεν υπάρχουν στατικοί πίνακες (arrays).
Χρησιμοποίησε λίστες.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

Ωραία καλά κατάλαβα, απλώς είπα να πάρω και μια ακόμη γνώμη.
Για δυναμική μνήμη από την heap σε python 3 ;

Ευχαριστώ.
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

Δημοσίευσηαπό Ilias95 » 16 Νοέμ 2014, 22:23

Δεν είμαι σίγουρος αν ρώτησες κάτι τώρα, αλλά εάν ναι δεν κατάλαβα την ερώτηση.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

Δημοσίευσηαπό Tassos10 » 16 Νοέμ 2014, 22:33

Ναι ίσος είπα "πατάτα" τώρα, αλλά επειδή δε το έχω δει κάπου να αναφέρετε ξεκάθαρα στην Python, ο χώρος αποθήκευσης για λίστες δύνεται από το τμήμα μνήμης σωρού ( heap segment ), σωστά;
( Χαζή και ευνόητη ερώτηση λόγο της δυναμικότητας της, αλλά οκ :mrgreen: )
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

Δημοσίευσηαπό Ilias95 » 16 Νοέμ 2014, 23:37

Ναι, και όχι μόνο οι λίστες αλλά όλες οι δομές αποθηκεύονται στο heap μιας και στην python τα πάντα είναι αντικείμενα.
https://docs.python.org/3.4/c-api/memory.html
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

Ooo!!! Δε το ήξερα πως ΌΛΑ στην Python αποθηκεύονται στο τμήμα μνήμης σωρού και πως για αυτό φροντίζεις για εμάς η Python αυτόματα. Φοβερό και να κάτι καινούριο τελικά που δεν γνώριζα και έμαθα.

Ευχαριστώ πάρα πολύ! :)
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 » 18 Νοέμ 2014, 02:57

Ilias95 έγραψε:Όχι, δεν υπάρχουν στατικοί πίνακες (arrays).
Χρησιμοποίησε λίστες.


και όμως υπάρχουν

https://docs.python.org/3.4/library/array.html

να υπενθυμίσω ότι ο cpython είναι χτισμένος με C και τα πάει μάλιστα και πολύ κάλα μιας και αύτος είναι ένας απο του λόγους δημιουργίας του python η απλοποίηση του προγραμματισμού C. Οποιοδήποτε κώδικας C μπορεί να χρησιμοποιηθεί απο python είτε μέσω ctypes, Python C API , cython κτλ.
Γνώσεις ⇛ 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 » 18 Νοέμ 2014, 09:03

kilon έγραψε:
Ilias95 έγραψε:Όχι, δεν υπάρχουν στατικοί πίνακες (arrays).
Χρησιμοποίησε λίστες.


και όμως υπάρχουν

https://docs.python.org/3.4/library/array.html

να υπενθυμίσω ότι ο cpython είναι χτισμένος με C και τα πάει μάλιστα και πολύ καλά μιας και αυτός είναι ένας απο του λόγους δημιουργίας του python η απλοποίηση του προγραμματισμού C. Οποιοδήποτε κώδικας C μπορεί να χρησιμοποιηθεί απο python είτε μέσω ctypes, Python C API , cython κτλ.


Μάλιστα, μεγάλε είναι πάρα πολύ ενδιαφέρον αυτά που μας λες. Εγώ δε γνώριζα καν για τον cPython και πως η Python φτιάχτηκε για να απλοποίηση την C ( αν και το υποψιαζόμουν ).
Αλλά είναι άλλη η cPython και άλλη η Python; ( Έτσι όπως μας τα λες παραπάνω υποψιάζομαι πως διαφέρει )
Και μπορείς να συνδυάσεις Python με C σχετικά εύκολα;

Αν μπορείς κατατόπισες μας, είναι πολύ ενδιαφέροντα αυτά.
Επίσης εγώ για ctypes, Python C API , cython δε γνωρίζω τίποτα.

Και οπότε υπάρχουν πίνακες και στην Python, είναι σαν τις λίστες απλώς όμως με στανταρ χώρο που ορίζετε από την αρχή; Και κυρίως χρησιμοποιούνται στους χαρακτήρες ή τα strings ;

Ευχαριστούμε πάρα πάρα πολύ.
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 » 18 Νοέμ 2014, 12:25

Tassos10 έγραψε:
Μάλιστα, μεγάλε είναι πάρα πολύ ενδιαφέρον αυτά που μας λες. Εγώ δε γνώριζα καν για τον cPython και πως η Python φτιάχτηκε για να απλοποίηση την C ( αν και το υποψιαζόμουν ).
Αλλά είναι άλλη η cPython και άλλη η Python; ( Έτσι όπως μας τα λες παραπάνω υποψιάζομαι πως διαφέρει )
Και μπορείς να συνδυάσεις Python με C σχετικά εύκολα;


O όρισμός της γλώσσας είναι η μορφή και ο κώδικας που βλέπεις εσύ ως python. Απο μόνος του όμως ο ορισμός δεν κάνεις τίποτα απλά σου λέει τι είναι τι, το πρόγραμμα καθαυτό της γλώσσα δηλαδή το VM , interpreter , standard libraries κτλ είναι αυτό που ονομάζουμε implementation ή αλλιώς "υλοποίηση". Έτσι λοιπόν ο Python που έχει φτιαχτεί με C ονομάζεται cpython , αυτό που δημιουργήθηκε με java - jython , αυτός που δημιουργήθηκε με .net ironpython, κτλ .

Αν γνωρίζεις τον python καλα και τα εργαλεία του και την C ναι ο συνδυασμός είναι αρκετά εύκολος για αυτό είναι και τόσο δημοφιλής ο cpython. Για να σου δώσω μια εικόνα, το 50% του cpython είναι γραμμένο σε C , ένα μεγάλο ποσοστό των βιβλιοθήκων απο τρίτους είναι επίσης C βιβλιοθήκες. Όποτε μπορείς να πείς οτι η C και Python συνεργάζονται άνετα.


Αν μπορείς κατατόπισες μας, είναι πολύ ενδιαφέροντα αυτά.
Επίσης εγώ για ctypes, Python C API , cython δε γνωρίζω τίποτα.


Google is your best friend ;)

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.

Υπόψην ότι υποστηρίζεται και η C++ με όλες τις παραπάνω λύσεις.

Και από εκεί και πέρα εξαρτάται το implementation , px ο jython τρέχει βιβλιοθήκες java σαν να είναι βιβλιοθήκες Python χωρίς έξτρα δουλειά, το ανάλογο κάνεις και ο ironpython για C#, κτλ .

Και οπότε υπάρχουν πίνακες και στην Python, είναι σαν τις λίστες απλώς όμως με στανταρ χώρο που ορίζετε από την αρχή; Και κυρίως χρησιμοποιούνται στους χαρακτήρες ή τα strings ;


άμα δεις το λινκ σου δείχνει οτι μπορείς να προσθέσεις και να αφαιρέσεις , εξάλλου και στην C αν χρησημοποιείς δείκτες η ποσότητα χώρου δεν είνα στάνταρ . Επίσης είναι συγκεκριμένος ο τύπος των δεδομένω απο την αρχή της δημιουργίας του όπως αντιλαμβάνεσαι είναι το ανάλογο της C, χωρίς τον πονοκέφαλο των δεικτών.

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

Να επισημάνω εδώ ότι τα παραπάνω δεν ίσχύουν μόνο για Python , όλες οι γλώσσες έχω τρόπους επικοινωνίας μεταξύς τους , πχ εγώ φτιάχνω ένα τρόπο επικοινωνία της γλώσσας pharo με τον 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

Δημοσίευσηαπό Ilias95 » 18 Νοέμ 2014, 15:34

@kilon
Εννοούσα ότι δεν υπάρχουν σαν built-in types. Δεν θεωρούνται built-ins έτσι;

Κατ' τα άλλα πάλι δεν είναι στατικές δομές μιας και δεν έχουν προκαθορισμένο μέγεθος.
Επίσης σε αντίθεση με τις συνηθισμένες arrays τα δεδομένα μπορούνε να είναι μόνο float ή int.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

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

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

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