Pernahkah Anda berpikir bahwa suatu hari Anda terlalu cepat masuk ke pemrograman web PHP?
Beberapa tahun telah berlalu, Anda telah memperoleh banyak pengalaman dan tidak bisa memikirkan cara lain untuk bekerja dengan web selain PHP. Mungkin, Anda terkadang meragukan pilihan yang Anda buat, tetapi tidak dapat mengkonfirmasi keraguan Anda di sini dan sekarang. Pada saat yang sama, Anda membutuhkan contoh nyata; Anda ingin memahami perubahan yang mungkin terjadi pada aspek tertentu dari pekerjaan Anda.
Hari ini saya akan mencoba menjawab pertanyaan berikut: "
Bagaimana jika kita menggunakan Python dan bukan PHP? ".
Saya telah mengajukan pertanyaan ini sendiri berkali-kali. Saya telah menggunakan PHP selama 11 tahun dan saya adalah spesialis PHP bersertifikat. Saya sudah menguasainya sehingga berfungsi seperti yang saya inginkan. Saya benar-benar bingung dengan beberapa artikel yang sangat mengkritik PHP (
PHP: fraktal desain yang buruk ). Namun, ketika ada kesempatan, saya beralih ke Ruby dan kemudian ke Python. Akhirnya, saya memilih yang terakhir. Sekarang saya akan mencoba menjelaskan bagaimana kita orang-orang Python hidup di sana.

Format Artikel
Cara terbaik untuk mempelajari bahasa baru adalah membandingkannya dengan bahasa yang sudah Anda bisa terapkan, kecuali bahasa baru berbeda secara drastis dari bahasa saat ini. Artikel di portal web Ruby (
Ruby dari bahasa lain ) menyediakan perbandingan seperti itu, namun tidak memiliki contoh.
Saya juga harus mencatat bahwa artikel ini hanya membandingkan aspek-aspek yang menarik perhatian Anda selama minggu-minggu pertama setelah beralih ke bahasa baru.
Mempersiapkan konsol
Saya telah melakukan yang terbaik untuk menjadikan artikel ini interaktif. Karena itu, saya sarankan menjalankan semua contoh di konsol saat membaca artikel. Anda memerlukan konsol PHP, atau Anda dapat menggunakan konsol
PsySH , yang bahkan lebih baik:
php -a
Dan konsol Python. Saya sarankan menggunakan
bpython atau
ipython , karena mereka sudah memiliki perbandingan penyelesaian kode dengan konsol default yang diintegrasikan ke dalam bahasa. Namun, opsi berikut juga berlaku:
python
Dan kemudian:
import rlcompleter import readline readline.parse_and_bind("tab: complete")
Menghindari pengulangan tindakan iniBuat file ~ / .pyrc dengan:
import rlcompleter import readline readline.parse_and_bind("tab: complete")
Tambahkan beberapa baris dalam file ~ / .bashrc:
export PYTHONSTARTUP="${HOME}/.pyrc" export PYTHONIOENCODING="UTF-8"
Dan lakukan perubahan segera tanpa login ulang:
source ~/.bashrc
Tentang bahasa
- Python adalah bahasa yang memiliki fitur pengetikan dinamis bebek yang kuat ( lihat Informasi tentang Mengetik ). Python tidak terbatas dalam hal penerapannya. Ini digunakan untuk pengembangan web, daemon, perhitungan ilmiah, atau sebagai bahasa ekstensi. Bahasa serupa dalam hal mengetik: Ruby.
- PHP adalah bahasa yang memiliki fitur pengetikan dinamis bebek lemah. PHP juga merupakan bahasa tujuan umum, namun area aplikasi sebagian besar mencakup web dan daemon. Fitur-fitur lain tidak dikerjakan dengan benar, membuatnya tidak dapat diterapkan dalam produksi. Beberapa orang percaya bahwa PHP dimaksudkan untuk mati . Bahasa serupa dalam hal pengetikan: JavaScript, Lua, Perl.
Spesifikasi umum
- Kode ditulis dalam file .py terlepas dari versi Python. Tidak ada tag pembuka seperti <? PHP diperlukan, karena Python awalnya dikembangkan sebagai bahasa pemrograman untuk tujuan umum.
- Selain itu, tidak ada php.ini untuk alasan yang sama. Ada dua lusin
variabel lingkungan , namun mereka tidak terdefinisi dalam kebanyakan kasus (terlepas dari PYTHONIOENCODING). Dengan kata lain, tidak ada koneksi default ke pangkalan, manajemen filter kesalahan, manajemen batas, ekstensi, dll., Yang alami untuk sebagian besar bahasa tujuan umum. Akibatnya, program berperilaku serupa dalam banyak kasus (perilaku mereka tidak bergantung pada pengaturan favorit dari pimpinan tim Anda). Pengaturan seperti php.ini disimpan dalam file konfigurasi utama aplikasi dalam banyak kasus. - Titik koma tidak diperlukan di akhir string. Namun, jika kita meletakkan tanda titik koma di sana, itu berfungsi seperti di PHP. Namun demikian, itu tidak perlu dan tidak diinginkan, jadi Anda bisa melupakannya.
- Variabel tidak dimulai dengan $ (yang diwariskan PHP dari Perl yang kemudian diadopsinya
dari Bash). - Penugasan dalam siklus dan kondisi tidak berlaku, sehingga tidak ada kesalahan perbandingan untuk penugasan, yang merupakan kesalahan umum (seperti yang dipercaya oleh penulis bahasa). Lihat PEP 572 untuk python 3.8 jika Anda membutuhkannya.
- Setelah mem-parsing file, Python secara otomatis menempatkan salinan file dengan ekstensi .pyc (asalkan versi Python Anda kurang dari 3,3 dan Anda belum menginstal PYTHONDONTWRITEBYTECODE ) di folder yang sama dengan kode byte Anda berada. Maka selalu mengeksekusi file ini, kecuali jika Anda mengubah sumbernya.
File-file ini secara otomatis diabaikan di semua IDE dan umumnya tidak mengganggu. Fitur ini dapat dianggap sebagai analog lengkap dari PHP APC, mengingat bahwa file .pyc kemungkinan akan terletak di memori cache file. - Alih-alih NULL, TRUE, false kita harus menggunakan Tidak, Benar, salah (khususnya dalam kasus ini).
Bersarang dan indentasi
Ini adalah sesuatu yang tidak biasa: kode bersarang ditentukan dengan lekukan alih-alih tanda kurung.
Jadi, alih-alih:
foreach($a as $value) { $formatted = $value.'%'; echo $formatted; }
Kita harus menulis yang berikut ini:
for value in a: formatted = value + '%' print(formatted)
Tunggu, tunggu! Jangan tutup artikelnya. Di sini Anda mungkin membuat kesalahan yang saya buat.
Suatu kali saya percaya bahwa ide menggunakan indentasi untuk kode bersarang adalah konyol. Seluruh sifat saya memprotes hal itu, karena semua pengembang menulis kode mereka dengan cara mereka sendiri, terlepas dari Style Guide yang berbeda.
Inilah misteri dunia: tidak ada masalah indentasi. Dalam kebanyakan kasus (99% kasus) indentasi ditempatkan secara otomatis oleh IDE seperti dalam bahasa lain. Anda hanya tidak memikirkannya sama sekali. Saya belum menghadapi masalah apa pun yang terkait dengan indentasi lebih dari 2 tahun dalam menggunakan bahasa ini.
Mengetik dengan kuat
Hal berikutnya yang harus Anda perhatikan adalah Pengetikan Kuat. Namun, beberapa kode terlebih dahulu:
print '0.60' * 5; print '5' == 5; $a = array('5'=>true); print $a[5]; $value = 75; print $value.'%'; $a='0'; if($a) print 'non zero length';
Semua contoh di atas dimungkinkan berkat pengetikan dinamis.
Ya, saya tahu deklarasi tipe tersedia untuk PHP. Tapi itu tidak diaktifkan secara default dan tidak berfungsi di mana-mana.
Namun, berikut ini tidak akan berfungsi dalam Python:
>>> print "25" + 5 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects
Kecuali ...Kecuali untuk nilai-nilai boolean tetapi
dengan desain .
Biasanya tipe data tidak akan dicampur dalam kode Anda dan efek ini tidak akan mengganggu Anda. Secara umum, ketika saya memberi kode pada PHP, hanya ada beberapa situasi per proyek ketika pengetikan dinamis benar-benar membantu. Dalam semua kasus lain, variabel dari tipe yang sama berinteraksi satu sama lain.
Pengetikan Kuat mempengaruhi penanganan kesalahan. Misalnya, jika fungsi
int mengembalikan integer, ia tidak bisa mengembalikan
None ke string, dari mana tipe ini tidak bisa diekstraksi secara eksplisit. Dalam hal ini, Pengecualian akan dimunculkan. Mungkin diperlukan konversi semua data pengguna ke tipe data yang diperlukan, jika tidak pengecualian akan dimunculkan dalam versi Produksi suatu hari.
try: custom_price = int(request.GET.get('custom_price', 0)) except ValueError: custom_price = 0
Ini tidak hanya memengaruhi fungsi standar, tetapi juga beberapa metode daftar, string, dan beberapa fungsi dari pustaka tambahan. Biasanya, pengembang Python mengingat semua pengecualian yang dapat dimunculkan, dan mempertimbangkannya. Jika pengembang tidak mengingatnya, mereka memeriksa kode perpustakaan. Tentu saja, terkadang tidak semua kasus dipertimbangkan, dan pengguna dapat menyebabkan pengecualian dalam versi Produksi. Karena ini adalah fenomena yang langka, dan biasanya kerangka kerja Web secara otomatis mengirimnya ke surat administrator, kasus-kasus seperti itu cepat diperbaiki.
Untuk menggunakan nilai dari berbagai tipe data dalam satu ekspresi, mereka harus dikonversi. Ada fungsi untuk itu:
str ,
int ,
bool ,
long . Juga, ada keputusan yang lebih nyaman untuk memformat.
String
Memformat
Dalam PHP:
$this_way = 'this_way'; echo "Currently you do it $this_way or {$this way}."; echo "Or ".$this_way."."; echo sprintf("However the following is possible: , %s or %1$'.9s.", $this_way);
Sekarang Anda harus belajar melakukannya dengan cara yang berbeda:
etot = 'this' var = 'option' print('To %s option' % etot) print(etot + ' option can also be used, but not recommended) print('Or to %s %s' % (etot, var)) print('Or to %(etot)s %(var)s' % {'etot': etot, 'var': var}) # Very useful for localization team print('Or to {} {}'.format(etot, var)) print('Or to {1} {0}'.format(var, etot)) print('Or to {etot} {var}'.format(var=var, etot=etot)) # And finally print(f'Or to {etot} {var}') # Starting from Python 3.6
Ada lebih banyak opsi dan ada opsi yang mudah untuk pelokalan.
Metode String
Python memiliki sesuatu yang hilang di PHP: metode bawaan. Mari kita bandingkan:
strpos($a, 'tr'); trim($a);
vs. a.index('tr') a.strip()
Dan seberapa sering Anda melakukan hal seperti itu?
substr($a, strpos($a, 'name: '));
vs. a[a.index('name: '):]
Dukungan Unicode
Akhirnya, Unicode. Dalam Python 2, semua string TIDAK Unicode secara default. (Dalam Python 3, semua string adalah Unicode secara default). Namun, saat Anda menambahkan karakter
u di awal string, karakter itu secara otomatis menjadi Unicode. Dan kemudian semua metode string Python bawaan (dan bukan bawaan) akan bekerja dengan baik.
>>> len(' ')

Dalam PHP, pemrosesan Unicode alami dikembangkan untuk PHP 6 tetapi PHP 6 dibatalkan ( Andrei Zmievski: Waht terjadi pada Unicode dan PHP 6 ).
Di PHP, omong-omong, Anda bisa menggunakan fungsi MBString overloading untuk menerima efek yang sama tetapi sudah usang.
Namun, Anda tidak akan bisa bekerja dengan string biner menggunakan fungsi-fungsi overload, tetapi Anda masih bisa bekerja dengan string sebagai array.
Tentang string mentah (opsional)String mentah
Anda harus tahu perbedaan antara string yang dikutip tunggal dan string yang dikutip ganda:
$a = 'Hello.\n'; $a[strlen($a)-1] != "\n";
Fitur serupa di Python disebut string mentah. Untuk menggunakannya, tempatkan karakter
r sebelum string yang dikutip tunggal.
a = r'Hello.\n' a[-1] != '\n'
Array
Sekarang saatnya untuk array. Di PHP Anda bisa menggunakan integer atau string sebagai kunci:
var_dump([0=>1, 'key'=>'value']);

Dalam PHP, array bukan array standar ( daftar ), tetapi array asosiatif ( kamus ). Array standar juga tersedia dalam PHP, yaitu SPLFixedArray . Mereka membutuhkan lebih sedikit memori, berpotensi bekerja lebih cepat, tetapi karena kerumitan membuat dan memperluas, jarang digunakan.
Dalam Python, empat tipe data digunakan untuk sebuah array:
- daftar
a = [1, 2, 3]
- kamus - kamus. Kamus tidak memiliki urutan penyimpanan data (seperti yang mereka lakukan dalam PHP).
d = {'a': 1, 'b': 2, 'c': 3}
- tuple. Sesuatu seperti array tetap dari nilai-nilai non-homogen. Sangat cocok untuk mengembalikan beberapa nilai dari suatu fungsi dan untuk penyimpanan konfigurasi yang ringkas.
t = (True, 'OK', 200, )
- diatur. Pada dasarnya, ini adalah daftar nilai unik yang tidak memiliki urutan penyimpanan.
s = set([1,3,4]) s[0] = False
Dalam PHP, array adalah semacam pisau tentara Swiss - mereka dapat melayani semua tujuan. Adapun Python, Anda perlu menggunakan array data yang asli untuk Ilmu Komputer. Selain itu, Anda perlu menggunakan array data yang sesuai untuk setiap kasus. Anda dapat mengatakan bahwa ini adalah kesulitan yang tidak perlu yang tidak harus dihadapi oleh programmer. Yah, bukan itu intinya.
- Pertama: kemungkinan untuk memilih antara tuple, set, list, dan dict tidak membuat hal-hal sulit - itu hanya menjadi kebiasaan bawah sadar seperti mengubah persneling.
- Kedua: daftar atau dikte digunakan dalam banyak kasus.
- Ketiga: dalam kebanyakan kasus, ketika Anda perlu menyimpan pasangan nilai-kunci, urutannya tidak penting, namun ketika Anda harus menjaga urutannya, dalam kebanyakan kasus hanya ada nilai alih-alih pasangan nilai kunci.
- Keempat: Python memiliki kamus pesanan - OrderedDict .
Impor
Ini adalah fitur yang sangat menarik. Ini semacam konsep alternatif ruang nama yang harus digunakan.
Di PHP, Anda menulis
require_once dan tetap tersedia sampai akhir sesi eksekusi PHP. Umumnya ketika menggunakan CMS, pengembang memasukkan semuanya ke dalam kelas, menempatkannya di lokasi khusus, menulis fungsi kecil yang mengetahui lokasi ini, dan mendaftarkan fungsi ini melalui
spl_autoload_register di awal file.
Namun, dalam Python, setiap file memiliki ruang namanya sendiri. Akibatnya, file hanya akan berisi objek yang Anda impor di sana. Secara default, hanya pustaka Python standar yang tersedia (sekitar 80 fungsi).
Lihat contoh di bawah ini:
Mari kita asumsikan, Anda telah membuat file
tools / logic.py :
def is_prime(number): max_number = int(sqrt(number)) for multiplier in range(2, max_number + 1): if multiplier > max_number: break if number % multiplier == 0: return False return True
Sekarang, Anda ingin menggunakannya dalam file
main.py. Dalam hal ini, Anda perlu mengimpor seluruh file atau entitas file yang Anda perlukan di file target yang sedang Anda kerjakan.
from tools.logic import is_prime print(is_prime(79))
Aturan ini berlaku lebar Python. Dalam kebanyakan kasus, ketika Anda mulai bekerja pada file apa pun, pertama-tama Anda perlu mengimpor objek Python tambahan ke file Anda: perpustakaan Anda sendiri dan terintegrasi. Seolah-olah fungsi PHP seperti mysqli_ *, pdo_ *, memcached_ *, serta seluruh kode Anda, disimpan dalam ruang nama dan Anda harus mengimpornya ke setiap file yang bekerja dengan Anda. Apa kelebihan yang dimiliki pendekatan ini?
- Pertama: objek yang berbeda dalam file yang berbeda dapat memiliki nama yang identik. Namun, Andalah yang memilih objek, nama, dan file target.
- Kedua: refactoring jauh lebih mudah. Anda selalu dapat melacak kelas, fungsi, atau entitas lainnya. Gunakan pencarian sederhana untuk menemukan fungsi dan melihat di mana / bagaimana ia digunakan.
- Ketiga: fitur ini membuat pengembang memikirkan struktur kode (setidaknya sampai batas tertentu).
Di sisi lain, kita hanya dapat menyebutkan satu kelemahan -
impor melingkar . Namun, ini adalah masalah yang jarang terjadi. Selain itu, ini adalah masalah yang biasa, dan pengembang tahu cara untuk mengatasinya.
Apakah nyaman menggunakan impor setiap saat? Itu tergantung pada preferensi Anda. Jika Anda ingin memiliki kontrol lebih besar atas kode, Anda akan lebih suka menggunakan impor. Beberapa tim bahkan memiliki aturan yang mengatur urutan pemberian kode eksternal, sehingga dapat meminimalkan jumlah impor melingkar. Jika tim Anda tidak memiliki aturan seperti itu dan Anda tidak ingin terlalu repot, Anda cukup mengandalkan IDE yang secara otomatis akan mengimpor semua yang Anda gunakan. Selain itu: impor bukan fitur Python yang unik, mereka juga digunakan di Jawa dan C #.
Sejauh ini belum ada keluhan.
Parameter * args, dan ** kwargs dalam suatu Function
Sintaks dengan parameter default umumnya sama:
function makeyogurt($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour."; }
vs. def makeyogurt(flavour, ftype="acidophilus"): return "Making a bowl of %s %s." % (ftype, flavour, )
Namun, Anda terkadang membutuhkan fungsi untuk jumlah argumen yang tidak diketahui.
Misalnya, fungsi proksi, fungsi logging, atau fungsi untuk menerima sinyal. Di PHP, mulai dari versi 5.6, sintaks berikut tersedia:
function sum(...$numbers) { $acc = 0; foreach ($numbers as $n) { $acc += $n; } return $acc; } echo sum(1, 2, 3, 4);
Masing-masing, dalam Python, Anda bisa menambahkan argumen tanpa nama ke dalam array, dan menambahkan argumen bernama ke dalam kamus:
def acc(*args, **kwargs): total = 0 for n in args: total += n return total print(acc(1, 2, 3, 4))
Masing-masing,
* args - daftar argumen yang tidak disebutkan namanya,
** kwargs - kamus argumen bernama
Kelas
Lihatlah kode di bawah ini:
class BaseClass: def __init__(self): print("In BaseClass constructor") class SubClass(BaseClass): def __init__(self, value): super(SubClass, self).__init__()
Perbedaan utama dari PHP adalah sebagai berikut:
- self digunakan sebagai ganti $ this , dan metode selalu dipanggil menggunakan operator akses ("."). Selain itu, "diri" harus selalu menjadi argumen pertama dalam semua metode (well, di sebagian besar dari mereka). Intinya adalah bahwa Python menyediakan semua metode dengan tautan ke objek dengan argumen pertama (objek itu sendiri dapat ditambahkan ke variabel dengan nama apa pun).
- Seperti dalam PHP, ada analogi nama ajaib . Alih-alih __construct - __init__ . Alih-alih __get - __getattr__ , dll.
- baru tidak diperlukan. Membuat instance kelas sama dengan memanggil fungsi.
- Panggilan yang lebih kompleks ke metode induk. Sedangkan untuk super, Anda selalu perlu mengingat semua detail. parent :: Sedangkan untuk PHP, strukturnya kurang besar.
Kami juga harus menyebutkan yang berikut:
- Lebih dari satu kelas dapat diwarisi.
- Tidak ada publik , dilindungi , pribadi . Python memungkinkan untuk mengubah struktur instance (serta seluruh kelas) saat dijalankan melalui penugasan sederhana, jadi tidak diperlukan perlindungan. Jadi, Refleksi tidak diperlukan juga. Namun, ada analog dari negara yang dilindungi - garis bawah dua kali sebelum nama. Namun, operasi ini hanya mengubah nama variabel / metode menjadi _% ClassName% __% varname% yang memungkinkan untuk bekerja dengan data tersembunyi.
- Tidak ada statis, kelas akhir, dan antarmuka. Model ini lebih berbasis objek dengan Python pada umumnya. Alih-alih Singleton, Anda mungkin akan memiliki file yang berisi semua fungsi yang diperlukan atau file yang mengembalikan contoh yang sama setelah mengimpor. Alih-alih antarmuka, Anda mungkin akan membuat kelas yang memunculkan pengecualian untuk metode yang tidak ditugaskan karena alasan tertentu (mis. Penyelesaian mungkin dilakukan).
- Tidak diinginkan untuk hanya menerapkan pemrograman berorientasi objek (OOP). Karena semuanya adalah objek (bahkan bool) dan sintaks tidak memiliki operator yang berbeda untuk memanggil metode atau fungsi dari file yang diimpor, semua panggilan dilakukan dengan operator akses ("."). Jadi, enkapsulasi tidak selalu membutuhkan OOP. Oleh karena itu, dalam sebagian besar proyek, kelas dibuat di tempat yang benar-benar diperlukan.
Gaya pengkodean
Saya telah bekerja pada beberapa proyek jangka panjang dan memperhatikan bahwa semua anggota tim memiliki gaya pengkodean yang berbeda. Dalam banyak kasus, sebuah kode dapat membantu mengidentifikasi pembuat kode. Saya selalu ingin standar gaya kode apa pun diadopsi untuk tujuan konsistensi.
Namun, selalu ada banyak argumen ketika menyetujui dokumen ini dalam tim. Masalah ini juga mempengaruhi Python, tetapi pada tingkat yang lebih rendah, karena ada beberapa rekomendasi dari spesialis yang berkualifikasi, yang pasti akan cukup untuk memulai dengan:
Selain itu, ada yang disebut Zen Python. Salah satu aturannya menyatakan bahwa "Seharusnya ada satu - dan lebih disukai hanya satu - cara sebelumnya untuk melakukannya." Dengan demikian, kode tidak dapat ditulis dalam beberapa cara yang kira-kira serupa. Tentu saja, itu idealisme, tetapi itu membantu dalam banyak kasus:
- Alih-alih pustaka stok besar yang berisi beberapa fungsi yang sebagian saling menduplikasi, kami menggunakan serangkaian metode yang lebih kecil dan pustaka integrasi tambahan (misalnya untuk total hash).
- Alih-alih strlen dan menghitung , kami selalu menggunakan len .
dll.
Versi python
Versi PHP baru selalu kompatibel dengan versi sebelumnya, meskipun terkadang diperlukan perbaikan. Di sisi lain, ada Python 2 dan Python 3 Mereka tidak kompatibel sedikit secara default. Namun, baru-baru ini, pengembang Python telah memperbaiki situasi secara signifikan. Anda dapat menulis kode untuk dua versi Python, tetapi jika Anda menggunakan fitur Python 3 baru seperti pemrograman asinkron atau fitur Unicode baru (UTF 8), Anda kemungkinan akan menghadapi kesulitan. Karena itu, proyek yang telah dikembangkan dan dikodekan selama beberapa tahun, masih menggunakan Python 2.
Tetapi untuk proyek baru tidak ada alasan untuk menggunakan Python 2.
Alias ββlintas bahasa
Di bawah ini adalah daftar kata-kata kunci yang menjelaskan alternatif yang disediakan oleh Python untuk teknologi yang sedang Anda gunakan.
- komposer -> pip
- mod_php -> mod_wsgi
- nginx + php-fpm -> nginx + uwsgi + uwsgi_python
- daemon.io -> tornado, memutar
- Zend Framework -> Django
- Phalcon -> Falcon
Kesimpulan
Bagaimana Anda tahu jika Anda membutuhkannya atau tidak?
- Anda percaya bahwa semakin kuat mengetik semakin baik.
- Anda lebih suka bahasa yang menampilkan arsitektur yang tertata dengan baik.
- Anda perfeksionis, keberagaman yang berlebihan mengganggu Anda.
- Posisi pekerjaan python di kota Anda terlihat lebih menjanjikan (atau Anda bosan hanya mengembangkan portal web).
- Anda ingin bahasa pemrograman utama Anda cocok untuk mengembangkan segala jenis perangkat lunak (mempertimbangkan pembatasan yang wajar terkait pengetikan dinamis).
- Anda tidak menyukai tingkat keterampilan pengembang junior (karena kurva belajar yang relatif rendah).
Cara Saya Belajar Python
Jika Anda adalah pengembang yang berpengalaman, Anda perlu hingga tiga minggu untuk mempelajarinya tanpa terlalu banyak berusaha.
- Minggu pertama : Bacalah Dive Into Python , Bab 2-7. Anda dapat membaca bab-bab lain secara singkat, hanya memperhatikan poin-poin menarik saja. Pada saat yang sama, selesaikan 10 tugas dengan Project Euler . Terakhir, buat utilitas konsol yang menerima parameter. Anda dapat mem-port salah satu skrip bash Anda sebelumnya, atau membuat analog ls dari BusyBox , atau sesuatu yang baru. Intinya adalah bahwa skrip harus melakukan sesuatu yang bermanfaat, sesuatu yang sering Anda lakukan. Sebagai contoh, saya telah mem - porting utilitas PHP saya yang dapat menampilkan data dalam cache memori.
- Minggu kedua : Buat analog sederhana Medium in Django dan gunakan hosting apa pun. Pikirkan komponennya: pendaftaran, login, pemulihan kata sandi, berbagi posting dan komentar dan menghapusnya, memeriksa izin untuk tindakan.
- Minggu ketiga : Pilih perusahaan tempat Anda ingin bekerja, kirimkan CV Anda untuk meminta tugas pengujian Python untuk menguji keterampilan Anda.
Semoga beruntung