Panduan Cepat Python

Python adalah bahasa skrip tingkat tinggi, ditafsirkan, interaktif dan berorientasi objek. Python dirancang agar sangat mudah dibaca. Ia sering menggunakan kata kunci bahasa Inggris sedangkan bahasa lain menggunakan tanda baca, dan memiliki konstruksi sintaksis yang lebih sedikit daripada bahasa lain.

  • Python is Interpreted- Python diproses saat runtime oleh juru bahasa. Anda tidak perlu mengkompilasi program Anda sebelum menjalankannya. Ini mirip dengan PERL dan PHP.

  • Python is Interactive - Anda sebenarnya dapat duduk di prompt Python dan berinteraksi dengan penerjemah langsung untuk menulis program Anda.

  • Python is Object-Oriented - Python mendukung gaya atau teknik pemrograman Berorientasi Objek yang merangkum kode di dalam objek.

  • Python is a Beginner's Language - Python adalah bahasa yang bagus untuk pemrogram tingkat pemula dan mendukung pengembangan berbagai aplikasi mulai dari pemrosesan teks sederhana hingga browser WWW hingga game.

Sejarah Python

Python dikembangkan oleh Guido van Rossum pada akhir tahun delapan puluhan dan awal tahun sembilan puluhan di Institut Riset Nasional untuk Matematika dan Ilmu Komputer di Belanda.

Python berasal dari banyak bahasa lain, termasuk ABC, Modula-3, C, C ++, Algol-68, SmallTalk, dan Unix shell dan bahasa skrip lainnya.

Python memiliki hak cipta. Seperti Perl, kode sumber Python sekarang tersedia di bawah GNU General Public License (GPL).

Python sekarang dikelola oleh tim pengembangan inti di institut tersebut, meskipun Guido van Rossum masih memegang peran penting dalam mengarahkan kemajuannya.

Fitur Python

Fitur Python meliputi -

  • Easy-to-learn- Python memiliki sedikit kata kunci, struktur sederhana, dan sintaks yang jelas. Hal ini memungkinkan siswa untuk menguasai bahasa dengan cepat.

  • Easy-to-read - Kode Python lebih jelas didefinisikan dan terlihat oleh mata.

  • Easy-to-maintain - Kode sumber Python cukup mudah dipelihara.

  • A broad standard library - Sebagian besar pustaka Python sangat portabel dan kompatibel lintas platform pada UNIX, Windows, dan Macintosh.

  • Interactive Mode - Python memiliki dukungan untuk mode interaktif yang memungkinkan pengujian interaktif dan debugging potongan kode.

  • Portable - Python dapat berjalan di berbagai macam platform perangkat keras dan memiliki antarmuka yang sama di semua platform.

  • Extendable- Anda dapat menambahkan modul tingkat rendah ke interpreter Python. Modul ini memungkinkan pemrogram untuk menambah atau menyesuaikan alat mereka agar lebih efisien.

  • Databases - Python menyediakan antarmuka ke semua database komersial utama.

  • GUI Programming - Python mendukung aplikasi GUI yang dapat dibuat dan di-porting ke banyak system call, librari dan sistem windows, seperti Windows MFC, Macintosh, dan sistem X Window dari Unix.

  • Scalable - Python menyediakan struktur dan dukungan yang lebih baik untuk program besar daripada skrip shell.

Terlepas dari fitur-fitur yang disebutkan di atas, Python memiliki daftar besar fitur-fitur bagus, beberapa di antaranya adalah -

  • Ini mendukung metode pemrograman fungsional dan terstruktur serta OOP.

  • Ini dapat digunakan sebagai bahasa skrip atau dapat dikompilasi menjadi kode byte untuk membangun aplikasi besar.

  • Ini menyediakan tipe data dinamis tingkat tinggi dan mendukung pemeriksaan tipe dinamis.

  • Ini mendukung pengumpulan sampah otomatis.

  • Dapat dengan mudah diintegrasikan dengan C, C ++, COM, ActiveX, CORBA, dan Java.

Python tersedia di berbagai macam platform termasuk Linux dan Mac OS X. Mari kita pahami cara mengatur lingkungan Python kita.

Pengaturan Lingkungan Lokal

Buka jendela terminal dan ketik "python" untuk mengetahui apakah sudah diinstal dan versi mana yang diinstal.

  • Unix (Solaris, Linux, FreeBSD, AIX, HP / UX, SunOS, IRIX, dll.)
  • Menangkan 9x / NT / 2000
  • Macintosh (Intel, PPC, 68K)
  • OS/2
  • DOS (beberapa versi)
  • PalmOS
  • Ponsel Nokia
  • Windows CE
  • Acorn / RISC OS
  • BeOS
  • Amiga
  • VMS/OpenVMS
  • QNX
  • VxWorks
  • Psion
  • Python juga telah diporting ke mesin virtual Java dan .NET

Mendapatkan Python

Kode sumber terbaru dan terkini, binari, dokumentasi, berita, dll., Tersedia di situs web resmi Python https://www.python.org/

Anda dapat mengunduh dokumentasi Python dari https://www.python.org/doc/. Dokumentasi tersedia dalam format HTML, PDF, dan PostScript.

Menginstal Python

Distribusi Python tersedia untuk berbagai macam platform. Anda hanya perlu mengunduh kode biner yang berlaku untuk platform Anda dan menginstal Python.

Jika kode biner untuk platform Anda tidak tersedia, Anda memerlukan compiler C untuk mengompilasi kode sumber secara manual. Mengompilasi kode sumber menawarkan lebih banyak fleksibilitas dalam hal pilihan fitur yang Anda perlukan dalam instalasi Anda.

Berikut ini gambaran umum singkat tentang menginstal Python di berbagai platform -

Instalasi Unix dan Linux

Berikut adalah langkah-langkah sederhana untuk menginstal Python di mesin Unix / Linux.

  • Buka browser web dan buka https://www.python.org/downloads/.

  • Ikuti tautan untuk mengunduh kode sumber zip yang tersedia untuk Unix / Linux.

  • Unduh dan ekstrak file.

  • Mengedit file Modules / Setup jika Anda ingin menyesuaikan beberapa opsi.

  • jalankan ./configure script

  • make

  • buat instal

Ini menginstal Python di lokasi standar / usr / local / bin dan perpustakaannya di / usr / local / lib / pythonXX di mana XX adalah versi Python.

Instalasi Windows

Berikut adalah langkah-langkah untuk menginstal Python di mesin Windows.

  • Buka browser web dan buka https://www.python.org/downloads/.

  • Ikuti tautan untuk file python-XYZ.msi penginstal Windows di mana XYZ adalah versi yang perlu Anda instal.

  • Untuk menggunakan installer python-XYZ.msi ini , sistem Windows harus mendukung Microsoft Installer 2.0. Simpan file pemasang ke mesin lokal Anda dan kemudian jalankan untuk mengetahui apakah mesin Anda mendukung MSI.

  • Jalankan file yang diunduh. Ini menampilkan wizard pemasangan Python, yang sangat mudah digunakan. Terima saja pengaturan default, tunggu sampai penginstalan selesai, dan Anda selesai.

Instalasi Macintosh

Mac terbaru sudah dilengkapi dengan Python, tetapi mungkin sudah beberapa tahun kedaluwarsa. Lihathttp://www.python.org/download/mac/untuk instruksi tentang mendapatkan versi saat ini bersama dengan alat tambahan untuk mendukung pengembangan di Mac. Untuk Mac OS yang lebih lama sebelum Mac OS X 10.3 (dirilis pada 2003), MacPython tersedia.

Jack Jansen memeliharanya dan Anda dapat memiliki akses penuh ke seluruh dokumentasi di situsnya - http://www.cwi.nl/~jack/macpython.html. Anda dapat menemukan detail penginstalan lengkap untuk penginstalan Mac OS.

Menyiapkan PATH

Program dan file yang dapat dijalankan lainnya dapat berada di banyak direktori, sehingga sistem operasi menyediakan jalur pencarian yang mencantumkan direktori yang dicari OS untuk dapat dieksekusi.

Path disimpan dalam variabel lingkungan, yang merupakan string bernama yang dikelola oleh sistem operasi. Variabel ini berisi informasi yang tersedia untuk shell perintah dan program lain.

Itu path variabel dinamai sebagai PATH di Unix atau Path di Windows (Unix peka huruf besar kecil; Windows tidak).

Di Mac OS, penginstal menangani detail jalur. Untuk memanggil interpreter Python dari direktori tertentu, Anda harus menambahkan direktori Python ke jalur Anda.

Jalur pengaturan di Unix / Linux

Untuk menambahkan direktori Python ke jalur untuk sesi tertentu di Unix -

  • In the csh shell - ketik setenv PATH "$ PATH: / usr / local / bin / python" dan tekan Enter.

  • In the bash shell (Linux) - ketik export PATH = "$ PATH: / usr / local / bin / python" dan tekan Enter.

  • In the sh or ksh shell - ketik PATH = "$ PATH: / usr / local / bin / python" dan tekan Enter.

  • Note - / usr / local / bin / python adalah jalur direktori Python

Jalur pengaturan di Windows

Untuk menambahkan direktori Python ke jalur untuk sesi tertentu di Windows -

At the command prompt - ketik path% path%; C: \ Python dan tekan Enter.

Note - C: \ Python adalah jalur direktori Python

Variabel Lingkungan Python

Berikut adalah variabel lingkungan penting, yang dapat dikenali oleh Python -

Sr.No. Variabel & Deskripsi
1

PYTHONPATH

Ini memiliki peran yang mirip dengan PATH. Variabel ini memberi tahu interpreter Python di mana menemukan file modul yang diimpor ke dalam program. Ini harus menyertakan direktori pustaka sumber Python dan direktori yang berisi kode sumber Python. PYTHONPATH terkadang sudah diatur sebelumnya oleh pemasang Python.

2

PYTHONSTARTUP

Ini berisi jalur file inisialisasi yang berisi kode sumber Python. Ini dijalankan setiap kali Anda memulai penerjemah. Ini dinamai sebagai .pythonrc.py di Unix dan berisi perintah yang memuat utilitas atau memodifikasi PYTHONPATH.

3

PYTHONCASEOK

Ini digunakan di Windows untuk menginstruksikan Python untuk menemukan kecocokan case-insensitive pertama dalam pernyataan import. Setel variabel ini ke nilai apa pun untuk mengaktifkannya.

4

PYTHONHOME

Ini adalah jalur pencarian modul alternatif. Ini biasanya tertanam di direktori PYTHONSTARTUP atau PYTHONPATH untuk membuat pustaka modul beralih dengan mudah.

Menjalankan Python

Ada tiga cara berbeda untuk memulai Python -

Penerjemah Interaktif

Anda dapat memulai Python dari Unix, DOS, atau sistem lain yang memberi Anda penafsir baris perintah atau jendela shell.

Memasukkan python baris perintah.

Mulai coding segera di interpreter interaktif.

$python # Unix/Linux
or
python% # Unix/Linux
or
C:> python # Windows/DOS

Berikut adalah daftar semua opsi baris perintah yang tersedia -

Sr.No. Opsi & Deskripsi
1

-d

Ini memberikan keluaran debug.

2

-O

Ini menghasilkan bytecode yang dioptimalkan (menghasilkan file .pyo).

3

-S

Jangan menjalankan import situs untuk mencari jalur Python saat memulai.

4

-v

keluaran verbose (jejak rinci pada pernyataan impor).

5

-X

nonaktifkan pengecualian bawaan berbasis kelas (cukup gunakan string); usang dimulai dengan versi 1.6.

6

-c cmd

jalankan skrip Python yang dikirim sebagai string cmd

7

file

jalankan skrip Python dari file yang diberikan

Script dari Command-line

Skrip Python dapat dijalankan pada baris perintah dengan memanggil interpreter pada aplikasi Anda, seperti berikut ini -

$python script.py # Unix/Linux

or

python% script.py # Unix/Linux

or 

C: >python script.py # Windows/DOS

Note - Pastikan mode izin file memungkinkan eksekusi.

Lingkungan Pembangunan Terpadu

Anda juga dapat menjalankan Python dari lingkungan Graphical User Interface (GUI), jika Anda memiliki aplikasi GUI di sistem Anda yang mendukung Python.

  • Unix - IDLE adalah IDE Unix pertama untuk Python.

  • Windows - PythonWin adalah antarmuka Windows pertama untuk Python dan merupakan IDE dengan GUI.

  • Macintosh - Versi Macintosh dari Python bersama dengan IDLE IDE tersedia dari situs web utama, dapat diunduh sebagai file MacBinary atau BinHex.

Jika Anda tidak dapat mengatur lingkungan dengan benar, Anda dapat meminta bantuan dari admin sistem Anda. Pastikan lingkungan Python diatur dengan benar dan berfungsi dengan baik.

Note - Semua contoh yang diberikan di bab-bab berikutnya dijalankan dengan versi Python 2.4.3 yang tersedia di varian CentOS Linux.

Kami telah menyiapkan lingkungan Pemrograman Python online, sehingga Anda dapat menjalankan semua contoh yang tersedia secara online pada saat yang sama ketika Anda mempelajari teori. Jangan ragu untuk memodifikasi contoh apa pun dan menjalankannya secara online.

Bahasa Python memiliki banyak kesamaan dengan Perl, C, dan Java. Namun, ada beberapa perbedaan yang pasti antara bahasa-bahasa tersebut.

Program Python Pertama

Mari kita jalankan program dalam berbagai mode pemrograman.

Pemrograman Mode Interaktif

Memanggil interpreter tanpa meneruskan file skrip sebagai parameter akan menampilkan prompt berikut -

$ python
Python 2.4.3 (#1, Nov 11 2010, 13:34:43)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

Ketik teks berikut pada prompt Python dan tekan Enter -

>>> print "Hello, Python!"

Jika Anda menjalankan versi baru Python, maka Anda perlu menggunakan pernyataan cetak dengan tanda kurung seperti di print ("Hello, Python!");. Namun dalam Python versi 2.4.3, ini menghasilkan hasil sebagai berikut -

Hello, Python!

Pemrograman Mode Skrip

Memanggil interpreter dengan parameter skrip memulai eksekusi skrip dan berlanjut hingga skrip selesai. Saat skrip selesai, penerjemah tidak lagi aktif.

Mari kita tulis program Python sederhana dalam sebuah skrip. File Python memiliki ekstensi.py. Ketik kode sumber berikut dalam file test.py -

print "Hello, Python!"

Kami berasumsi bahwa Anda memiliki interpreter Python yang disetel dalam variabel PATH. Sekarang, coba jalankan program ini sebagai berikut -

$ python test.py

Ini menghasilkan hasil sebagai berikut -

Hello, Python!

Mari kita coba cara lain untuk menjalankan skrip Python. Ini adalah file test.py yang dimodifikasi -

#!/usr/bin/python

print "Hello, Python!"

Kami berasumsi bahwa Anda memiliki interpreter Python yang tersedia di direktori / usr / bin. Sekarang, coba jalankan program ini sebagai berikut -

$ chmod +x test.py     # This is to make file executable
$./test.py

Ini menghasilkan hasil sebagai berikut -

Hello, Python!

Pengenal Python

Pengenal Python adalah nama yang digunakan untuk mengidentifikasi variabel, fungsi, kelas, modul, atau objek lain. Pengenal dimulai dengan huruf A sampai Z atau a sampai z atau garis bawah (_) diikuti dengan nol atau lebih huruf, garis bawah dan angka (0 sampai 9).

Python tidak mengizinkan karakter tanda baca seperti @, $, dan% dalam pengenal. Python adalah bahasa pemrograman yang case sensitive. Jadi,Manpower dan manpower adalah dua pengenal berbeda di Python.

Berikut adalah konvensi penamaan untuk pengenal Python -

  • Nama kelas dimulai dengan huruf besar. Semua pengenal lainnya dimulai dengan huruf kecil.

  • Memulai pengenal dengan satu garis bawah menunjukkan bahwa pengenal tersebut bersifat pribadi.

  • Memulai pengenal dengan dua garis bawah di depan menunjukkan pengenal yang sangat pribadi.

  • Jika pengenal juga diakhiri dengan dua garis bawah, pengenal tersebut adalah nama khusus yang ditentukan oleh bahasa.

Kata yang Dicadangkan

Daftar berikut menunjukkan kata kunci Python. Ini adalah kata-kata yang dicadangkan dan Anda tidak dapat menggunakannya sebagai konstanta atau variabel atau nama pengenal lainnya. Semua kata kunci Python hanya berisi huruf kecil.

dan eksekutif tidak
menegaskan akhirnya atau
istirahat untuk lulus
kelas dari mencetak
terus global menaikkan
def jika kembali
del impor mencoba
elif di sementara
lain adalah dengan
kecuali lambda menghasilkan

Garis dan Indentasi

Python tidak memberikan tanda kurung untuk menunjukkan blok kode untuk definisi kelas dan fungsi atau kontrol aliran. Blok kode dilambangkan dengan indentasi baris, yang diterapkan secara kaku.

Jumlah spasi di indentasi adalah variabel, tetapi semua pernyataan di dalam blok harus menjorok ke dalam jumlah yang sama. Misalnya -

if True:
   print "True"
else:
   print "False"

Namun, blok berikut menghasilkan kesalahan -

if True:
print "Answer"
print "True"
else:
print "Answer"
print "False"

Jadi, dalam Python semua garis kontinu yang diindentasi dengan jumlah spasi yang sama akan membentuk satu blok. Contoh berikut memiliki berbagai blok pernyataan -

Note- Jangan mencoba memahami logika pada saat ini. Pastikan Anda memahami berbagai blok meskipun tanpa kawat gigi.

#!/usr/bin/python

import sys

try:
   # open file stream
   file = open(file_name, "w")
except IOError:
   print "There was an error writing to", file_name
   sys.exit()
print "Enter '", file_finish,
print "' When finished"
while file_text != file_finish:
   file_text = raw_input("Enter text: ")
   if file_text == file_finish:
      # close the file
      file.close
      break
   file.write(file_text)
   file.write("\n")
file.close()
file_name = raw_input("Enter filename: ")
if len(file_name) == 0:
   print "Next time please enter something"
   sys.exit()
try:
   file = open(file_name, "r")
except IOError:
   print "There was an error reading file"
   sys.exit()
file_text = file.read()
file.close()
print file_text

Pernyataan Multi-Baris

Pernyataan dengan Python biasanya diakhiri dengan baris baru. Python, bagaimanapun, mengizinkan penggunaan karakter kelanjutan baris (\) untuk menunjukkan bahwa garis harus dilanjutkan. Misalnya -

total = item_one + \
        item_two + \
        item_three

Pernyataan yang dimuat dalam tanda kurung [], {}, atau () tidak perlu menggunakan karakter kelanjutan baris. Misalnya -

days = ['Monday', 'Tuesday', 'Wednesday',
        'Thursday', 'Friday']

Kutipan dengan Python

Python menerima tanda kutip tunggal ('), ganda (") dan tiga kali lipat (' '' atau" "") untuk menunjukkan literal string, selama jenis kutipan yang sama dimulai dan diakhiri string.

Kutipan tiga digunakan untuk merentangkan string ke beberapa baris. Misalnya, semua yang berikut ini legal -

word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""

Komentar dengan Python

Tanda hash (#) yang tidak ada di dalam string literal memulai komentar. Semua karakter setelah # dan hingga akhir baris fisik adalah bagian dari komentar dan interpreter Python mengabaikannya.

#!/usr/bin/python

# First comment
print "Hello, Python!" # second comment

Ini menghasilkan hasil sebagai berikut -

Hello, Python!

Anda dapat mengetik komentar pada baris yang sama setelah pernyataan atau ekspresi -

name = "Madisetti" # This is again comment

Anda dapat mengomentari beberapa baris sebagai berikut -

# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.

Menggunakan Garis Kosong

Sebuah baris yang hanya berisi spasi, kemungkinan dengan sebuah komentar, disebut sebagai baris kosong dan Python mengabaikannya sama sekali.

Dalam sesi penerjemah interaktif, Anda harus memasukkan baris fisik kosong untuk menghentikan pernyataan multiline.

Menunggu Pengguna

Baris program berikut menampilkan prompt, pernyataan yang mengatakan "Tekan tombol enter untuk keluar", dan menunggu pengguna untuk mengambil tindakan -

#!/usr/bin/python

raw_input("\n\nPress the enter key to exit.")

Di sini, "\ n \ n" digunakan untuk membuat dua baris baru sebelum menampilkan baris sebenarnya. Setelah pengguna menekan tombol, program berakhir. Ini adalah trik bagus untuk menjaga jendela konsol tetap terbuka sampai pengguna selesai dengan sebuah aplikasi.

Beberapa Pernyataan dalam Satu Baris

Tanda titik koma (;) memungkinkan beberapa pernyataan pada satu baris karena tidak ada pernyataan yang memulai blok kode baru. Berikut ini contoh cuplikan menggunakan titik koma -

import sys; x = 'foo'; sys.stdout.write(x + '\n')

Grup Pernyataan Ganda sebagai Suite

Sekelompok pernyataan individu, yang membuat satu blok kode dipanggil suitesdengan Python. Pernyataan gabungan atau kompleks, seperti if, while, def, dan class memerlukan baris header dan rangkaian.

Baris header memulai pernyataan (dengan kata kunci) dan diakhiri dengan titik dua (:) dan diikuti oleh satu atau lebih baris yang membentuk suite. Misalnya -

if expression : 
   suite
elif expression : 
   suite 
else : 
   suite

Argumen Baris Perintah

Banyak program dapat dijalankan untuk memberi Anda beberapa informasi dasar tentang cara menjalankannya. Python memungkinkan Anda melakukan ini dengan -h -

$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser (also PYTHONDEBUG=x)
-E     : ignore environment variables (such as PYTHONPATH)
-h     : print this help message and exit

[ etc. ]

Anda juga dapat memprogram skrip Anda sedemikian rupa sehingga harus menerima berbagai opsi. Argumen Baris Perintah adalah topik lanjutan dan harus dipelajari nanti setelah Anda mempelajari konsep Python lainnya.

Variabel hanyalah lokasi memori yang dicadangkan untuk menyimpan nilai. Ini berarti bahwa ketika Anda membuat variabel, Anda menyediakan beberapa ruang di memori.

Berdasarkan tipe data variabel, interpreter mengalokasikan memori dan memutuskan apa yang dapat disimpan dalam memori yang dicadangkan. Oleh karena itu, dengan menetapkan tipe data yang berbeda ke variabel, Anda dapat menyimpan bilangan bulat, desimal, atau karakter dalam variabel ini.

Menetapkan Nilai ke Variabel

Variabel Python tidak membutuhkan deklarasi eksplisit untuk memesan ruang memori. Deklarasi terjadi secara otomatis saat Anda menetapkan nilai ke variabel. Tanda sama dengan (=) digunakan untuk menetapkan nilai ke variabel.

Operan di sebelah kiri operator = adalah nama variabel dan operan di sebelah kanan operator = adalah nilai yang disimpan dalam variabel. Misalnya -

#!/usr/bin/python

counter = 100          # An integer assignment
miles   = 1000.0       # A floating point
name    = "John"       # A string

print counter
print miles
print name

Di sini, 100, 1000.0 dan "John" masing-masing adalah nilai yang ditetapkan ke variabel pencacah , mil , dan nama . Ini menghasilkan hasil sebagai berikut -

100
1000.0
John

Tugas Ganda

Python memungkinkan Anda untuk menetapkan satu nilai ke beberapa variabel secara bersamaan. Misalnya -

a = b = c = 1

Di sini, objek integer dibuat dengan nilai 1, dan ketiga variabel ditempatkan ke lokasi memori yang sama. Anda juga dapat menetapkan banyak objek ke beberapa variabel. Misalnya -

a,b,c = 1,2,"john"

Di sini, dua objek integer dengan nilai 1 dan 2 masing-masing ditugaskan ke variabel a dan b, dan satu objek string dengan nilai "john" untuk variabel c.

Tipe Data Standar

Jenis data yang disimpan dalam memori bisa bermacam-macam. Misalnya, usia seseorang disimpan sebagai nilai numerik dan alamatnya disimpan sebagai karakter alfanumerik. Python memiliki berbagai tipe data standar yang digunakan untuk menentukan kemungkinan operasi pada mereka dan metode penyimpanan untuk masing-masingnya.

Python memiliki lima tipe data standar -

  • Numbers
  • String
  • List
  • Tuple
  • Dictionary

Angka Python

Tipe data angka menyimpan nilai numerik. Objek angka dibuat saat Anda memberikan nilai padanya. Misalnya -

var1 = 1
var2 = 10

Anda juga dapat menghapus referensi ke objek number dengan menggunakan pernyataan del. Sintaks dari pernyataan del adalah -

del var1[,var2[,var3[....,varN]]]]

Anda dapat menghapus satu objek atau beberapa objek dengan menggunakan pernyataan del. Misalnya -

del var
del var_a, var_b

Python mendukung empat tipe numerik yang berbeda -

  • int (bilangan bulat bertanda tangan)
  • long (bilangan bulat panjang, mereka juga dapat direpresentasikan dalam oktal dan heksadesimal)
  • float (nilai riil floating point)
  • kompleks (bilangan kompleks)

Contoh

Berikut beberapa contoh angka -

int panjang mengapung kompleks
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEl 32.3 + e18 0,876j
-0490 535633629843L -90. -.6545 + 0J
-0x260 -052318172735L -32.54e100 3e + 26J
0x69 -4721885298529L 70.2-E12 4.53e-7j
  • Python memungkinkan Anda menggunakan huruf kecil l dengan panjang, tetapi disarankan agar Anda hanya menggunakan huruf besar L untuk menghindari kebingungan dengan angka 1. Python menampilkan bilangan bulat panjang dengan huruf besar L.

  • Bilangan kompleks terdiri dari pasangan terurut bilangan titik-mengambang nyata yang dilambangkan dengan x + yj, di mana x dan y adalah bilangan real dan j adalah unit imajiner.

String Python

String dalam Python diidentifikasi sebagai sekumpulan karakter berdekatan yang direpresentasikan dalam tanda kutip. Python memungkinkan pasangan tanda kutip tunggal atau ganda. Himpunan bagian dari string dapat diambil menggunakan operator slice ([] dan [:]) dengan indeks dimulai dari 0 di awal string dan bekerja dari -1 di akhir.

Tanda plus (+) adalah operator penggabungan string dan tanda bintang (*) adalah operator pengulangan. Misalnya -

#!/usr/bin/python

str = 'Hello World!'

print str          # Prints complete string
print str[0]       # Prints first character of the string
print str[2:5]     # Prints characters starting from 3rd to 5th
print str[2:]      # Prints string starting from 3rd character
print str * 2      # Prints string two times
print str + "TEST" # Prints concatenated string

Ini akan menghasilkan hasil sebagai berikut -

Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST

Daftar Python

List adalah tipe data gabungan Python yang paling serbaguna. Sebuah daftar berisi item yang dipisahkan dengan koma dan diapit oleh tanda kurung siku ([]). Sampai batas tertentu, daftar mirip dengan array di C. Satu perbedaan di antara mereka adalah bahwa semua item yang termasuk dalam daftar bisa dari tipe data berbeda.

Nilai yang disimpan dalam daftar dapat diakses menggunakan operator slice ([] dan [:]) dengan indeks yang dimulai dari 0 di awal daftar dan terus berjalan hingga akhir -1. Tanda plus (+) adalah operator rangkaian daftar, dan tanda bintang (*) adalah operator pengulangan. Misalnya -

#!/usr/bin/python

list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print list          # Prints complete list
print list[0]       # Prints first element of the list
print list[1:3]     # Prints elements starting from 2nd till 3rd 
print list[2:]      # Prints elements starting from 3rd element
print tinylist * 2  # Prints list two times
print list + tinylist # Prints concatenated lists

Ini menghasilkan hasil sebagai berikut -

['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']

Python Tuple

Tupel adalah tipe data urutan lain yang mirip dengan daftar. Tupel terdiri dari sejumlah nilai yang dipisahkan dengan koma. Tidak seperti daftar, bagaimanapun, tupel diapit dalam tanda kurung.

Perbedaan utama antara list dan tuple adalah: List diapit oleh tanda kurung ([]) dan elemen serta ukurannya dapat diubah, sedangkan tupel diapit dalam tanda kurung (()) dan tidak dapat diperbarui. Tuple dapat dianggap sebagairead-onlydaftar. Misalnya -

#!/usr/bin/python

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
tinytuple = (123, 'john')

print tuple               # Prints the complete tuple
print tuple[0]            # Prints first element of the tuple
print tuple[1:3]          # Prints elements of the tuple starting from 2nd till 3rd 
print tuple[2:]           # Prints elements of the tuple starting from 3rd element
print tinytuple * 2       # Prints the contents of the tuple twice
print tuple + tinytuple   # Prints concatenated tuples

Ini menghasilkan hasil sebagai berikut -

('abcd', 786, 2.23, 'john', 70.2)
abcd
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')

Kode berikut tidak valid dengan tupel, karena kami mencoba memperbarui tupel, yang tidak diperbolehkan. Kasus serupa dimungkinkan dengan daftar -

#!/usr/bin/python

tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]
tuple[2] = 1000    # Invalid syntax with tuple
list[2] = 1000     # Valid syntax with list

Kamus Python

Kamus Python adalah jenis tabel hash. Mereka bekerja seperti array asosiatif atau hash yang ditemukan di Perl dan terdiri dari pasangan nilai kunci. Kunci kamus dapat berupa hampir semua jenis Python, tetapi biasanya berupa angka atau string. Nilai, di sisi lain, bisa berupa sembarang objek Python.

Kamus diapit oleh tanda kurung kurawal ({}) dan nilai bisa ditetapkan dan diakses menggunakan tanda kurung siku ([]). Misalnya -

#!/usr/bin/python

dict = {}
dict['one'] = "This is one"
dict[2]     = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}


print dict['one']       # Prints value for 'one' key
print dict[2]           # Prints value for 2 key
print tinydict          # Prints complete dictionary
print tinydict.keys()   # Prints all the keys
print tinydict.values() # Prints all the values

Ini menghasilkan hasil sebagai berikut -

This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']

Kamus tidak memiliki konsep keteraturan antar elemen. Tidak benar untuk mengatakan bahwa elemen-elemen tersebut "rusak"; mereka tidak berurutan.

Konversi Jenis Data

Terkadang, Anda mungkin perlu melakukan konversi di antara tipe bawaan. Untuk mengonversi antar tipe, Anda cukup menggunakan nama tipe sebagai fungsi.

Ada beberapa fungsi bawaan untuk melakukan konversi dari satu tipe data ke tipe lainnya. Fungsi ini mengembalikan objek baru yang mewakili nilai yang dikonversi.

Sr.No. Deskripsi fungsi
1

int(x [,base])

Mengonversi x menjadi bilangan bulat. base menentukan basis jika x adalah string.

2

long(x [,base] )

Mengonversi x menjadi bilangan bulat panjang. base menentukan basis jika x adalah string.

3

float(x)

Mengonversi x menjadi bilangan floating-point.

4

complex(real [,imag])

Membuat bilangan kompleks.

5

str(x)

Mengonversi objek x menjadi representasi string.

6

repr(x)

Mengonversi objek x menjadi string ekspresi.

7

eval(str)

Mengevaluasi string dan mengembalikan objek.

8

tuple(s)

Mengubah s menjadi tupel.

9

list(s)

Mengubah s menjadi daftar.

10

set(s)

Mengubah s menjadi satu set.

11

dict(d)

Membuat kamus. d harus berupa urutan tupel (key, value).

12

frozenset(s)

Mengonversi s ke himpunan beku.

13

chr(x)

Mengonversi bilangan bulat menjadi karakter.

14

unichr(x)

Mengonversi bilangan bulat menjadi karakter Unicode.

15

ord(x)

Mengonversi satu karakter menjadi nilai integernya.

16

hex(x)

Mengonversi bilangan bulat menjadi string heksadesimal.

17

oct(x)

Mengonversi bilangan bulat menjadi string oktal.

Operator adalah konstruksi yang dapat memanipulasi nilai operan.

Pertimbangkan ekspresi 4 + 5 = 9. Di sini, 4 dan 5 disebut operan dan + disebut operator.

Jenis Operator

Bahasa Python mendukung jenis operator berikut.

  • Operator Aritmatika
  • Perbandingan (Relasional) Operator
  • Operator Penugasan
  • Operator Logis
  • Operator Bitwise
  • Operator Keanggotaan
  • Operator Identitas

Mari kita lihat semua operator satu per satu.

Operator Aritmatika Python

Asumsikan variabel a menampung 10 dan variabel b menampung 20, maka -

[ Tunjukkan Contoh ]

Operator Deskripsi Contoh
+ Penambahan Menambahkan nilai di kedua sisi operator. a + b = 30
- Pengurangan Mengurangi operan tangan kanan dari operan tangan kiri. a - b = -10
* Perkalian Mengalikan nilai di kedua sisi operator a * b = 200
/ Divisi Membagi operan tangan kiri dengan operan tangan kanan b / a = 2
% Modulus Membagi operan tangan kiri dengan operan tangan kanan dan mengembalikan sisanya b% a = 0
** Eksponen Melakukan kalkulasi eksponensial (daya) pada operator a ** b = 10 pangkat 20
// Divisi Lantai - Pembagian operan yang hasilnya adalah hasil bagi di mana angka setelah koma desimal dihilangkan. Tetapi jika salah satu operan negatif, hasilnya berlantai, yaitu dibulatkan menjauhi nol (menuju tak terhingga negatif) - 9 // 2 = 4 dan 9.0 // 2.0 = 4.0, -11 // 3 = -4, -11.0 // 3 = -4.0

Operator Perbandingan Python

Operator ini membandingkan nilai di kedua sisinya dan memutuskan hubungan di antara mereka. Mereka juga disebut operator Relasional.

Asumsikan variabel a menampung 10 dan variabel b menampung 20, maka -

[ Tunjukkan Contoh ]

Operator Deskripsi Contoh
== Jika nilai dari dua operan sama, maka kondisinya menjadi benar. (a == b) tidak benar.
! = Jika nilai dari dua operan tidak sama, maka kondisi menjadi benar. (a! = b) benar.
<> Jika nilai dari dua operan tidak sama, maka kondisi menjadi benar. (a <> b) benar. Ini mirip dengan operator! =.
> Jika nilai operan kiri lebih besar dari nilai operan kanan, maka kondisi menjadi benar. (a> b) tidak benar.
< Jika nilai operan kiri lebih kecil dari nilai operan kanan, maka kondisi menjadi benar. (a <b) benar.
> = Jika nilai operan kiri lebih besar dari atau sama dengan nilai operan kanan, maka kondisi menjadi benar. (a> = b) tidak benar.
<= Jika nilai operan kiri kurang dari atau sama dengan nilai operan kanan, maka kondisi menjadi benar. (a <= b) benar.

Operator Penugasan Python

Asumsikan variabel a menampung 10 dan variabel b menampung 20, maka -

[ Tunjukkan Contoh ]

Operator Deskripsi Contoh
= Menetapkan nilai dari operan sisi kanan ke operan sisi kiri c = a + b memberikan nilai a + b ke dalam c
+ = Tambahkan DAN Ini menambahkan operan kanan ke operan kiri dan menetapkan hasilnya ke operan kiri c + = a ekivalen dengan c = c + a
- = Kurangi DAN Ini mengurangi operan kanan dari operan kiri dan menetapkan hasilnya ke operan kiri c - = a ekivalen dengan c = c - a
* = Kalikan DAN Ini mengalikan operan kanan dengan operan kiri dan menetapkan hasilnya ke operan kiri c * = a ekivalen dengan c = c * a
/ = Bagi DAN Ini membagi operan kiri dengan operan kanan dan menetapkan hasilnya ke operan kiri c / = a ekivalen dengan c = c / a
% = Modulus DAN Dibutuhkan modulus menggunakan dua operan dan menetapkan hasilnya ke operan kiri c% = a ekivalen dengan c = c% a
** = Eksponen DAN Melakukan kalkulasi eksponensial (daya) pada operator dan menetapkan nilai ke operan kiri c ** = a ekivalen dengan c = c ** a
// = Divisi Lantai Itu melakukan pembagian lantai pada operator dan menetapkan nilai ke operan kiri c // = a setara dengan c = c // a

Operator Bitwise Python

Operator bitwise bekerja pada bit dan melakukan operasi bit demi bit. Asumsikan jika a = 60; dan b = 13; Sekarang dalam format biner nilainya masing-masing adalah 0011 1100 dan 0000 1101. Tabel berikut mencantumkan operator bitwise yang didukung oleh bahasa Python dengan masing-masing contohnya, kami menggunakan dua variabel di atas (a dan b) sebagai operan -

a = 0011 1100

b = 0000 1101

-----------------

a & b = 0000 1100

a | b = 0011 1101

a ^ b = 0011 0001

~ a = 1100 0011

Ada operator Bitwise berikut yang didukung oleh bahasa Python

[ Tunjukkan Contoh ]

Operator Deskripsi Contoh
& Biner DAN Operator menyalin sedikit ke hasil jika ada di kedua operan (a & b) (berarti 0000 1100)
| Biner ATAU Ini menyalin sedikit jika ada di salah satu operan. (a | b) = 61 (berarti 0011 1101)
^ Biner XOR Ini menyalin bit jika diatur dalam satu operan tetapi tidak keduanya. (a ^ b) = 49 (berarti 0011 0001)
~ Pelengkap Biner Ini unary dan memiliki efek 'membalik' bit. (~ a) = -61 (berarti 1100 0011 dalam bentuk komplemen 2 karena bilangan biner bertanda.
<< Pergeseran Kiri Biner Nilai operan kiri dipindahkan ke kiri dengan jumlah bit yang ditentukan oleh operan kanan. a << 2 = 240 (berarti 1111 0000)
>> Pergeseran Kanan Biner Nilai operan kiri dipindahkan ke kanan dengan jumlah bit yang ditentukan oleh operan kanan. a >> 2 = 15 (berarti 0000 1111)

Operator Logis Python

Ada operator logika berikut yang didukung oleh bahasa Python. Asumsikan variabel a menampung 10 dan variabel b menampung 20 lalu

[ Tunjukkan Contoh ]

Operator Deskripsi Contoh
dan Logis DAN Jika kedua operan benar maka kondisi menjadi benar. (a dan b) benar.
atau Logis ATAU Jika salah satu dari dua operan bukan nol maka kondisi menjadi benar. (a atau b) benar.
tidak Logis TIDAK Digunakan untuk membalikkan keadaan logis operannya. Bukan (a dan b) salah.

Operator Keanggotaan Python

Operator keanggotaan Python menguji keanggotaan secara berurutan, seperti string, daftar, atau tupel. Ada dua operator keanggotaan seperti yang dijelaskan di bawah ini -

[ Tunjukkan Contoh ]

Operator Deskripsi Contoh
di Mengevaluasi ke benar jika menemukan variabel dalam urutan yang ditentukan dan salah jika sebaliknya. x dalam y, di sini menghasilkan a 1 jika x adalah anggota barisan y.
tidak masuk Mengevaluasi ke benar jika tidak menemukan variabel dalam urutan yang ditentukan dan salah jika tidak. x bukan di y, di sini bukan hasil di a 1 jika x bukan anggota deret y.

Operator Identitas Python

Operator identitas membandingkan lokasi memori dari dua objek. Ada dua operator Identitas yang dijelaskan di bawah -

[ Tunjukkan Contoh ]

Operator Deskripsi Contoh
adalah Mengevaluasi ke benar jika variabel di kedua sisi operator menunjuk ke objek yang sama dan salah jika sebaliknya. x adalah y, di sini is menghasilkan 1 jika id (x) sama dengan id (y).
tidak Mengevaluasi ke salah jika variabel di kedua sisi operator menunjuk ke objek yang sama dan benar sebaliknya. x bukan y, di sini is not menghasilkan 1 jika id (x) tidak sama dengan id (y).

Diutamakan Operator Python

Tabel berikut mencantumkan semua operator dari prioritas tertinggi hingga terendah.

[ Tunjukkan Contoh ]

Sr.No. Operator & Deskripsi
1

**

Eksponen (pangkatkan ke pangkat)

2

~ + -

Komplemen, plus dan minus unary (nama metode untuk dua yang terakhir adalah + @ dan - @)

3

* / % //

Mengalikan, membagi, modulo dan pembagian lantai

4

+ -

Penambahan dan pengurangan

5

>> <<

Pergeseran bitwise kanan dan kiri

6

&

Bitwise 'DAN'

7

^ |

Bitwise eksklusif `OR 'dan regular` OR'

8

<= < > >=

Operator perbandingan

9

<> == !=

Operator kesetaraan

10

= %= /= //= -= += *= **=

Operator penugasan

11

is is not

Operator identitas

12

in not in

Operator keanggotaan

13

not or and

Operator logika

Pengambilan keputusan merupakan antisipasi terhadap kondisi yang terjadi pada saat pelaksanaan program dan menentukan tindakan yang diambil sesuai dengan kondisi tersebut.

Struktur keputusan mengevaluasi beberapa ekspresi yang menghasilkan TRUE atau FALSE sebagai hasil. Anda perlu menentukan tindakan mana yang harus diambil dan pernyataan mana yang akan dieksekusi jika hasilnya BENAR atau SALAH sebaliknya.

Berikut ini adalah bentuk umum dari struktur pengambilan keputusan khas yang ditemukan di sebagian besar bahasa pemrograman -

Bahasa pemrograman Python mengasumsikan apa saja non-zero dan non-null nilai sebagai BENAR, dan jika benar zero atau null, maka diasumsikan sebagai nilai SALAH.

Bahasa pemrograman Python menyediakan jenis pernyataan pengambilan keputusan berikut. Klik tautan berikut untuk memeriksa detailnya.

Sr.No. Pernyataan & Deskripsi
1 jika pernyataan

Sebuah if statement terdiri dari ekspresi boolean yang diikuti oleh satu atau beberapa pernyataan.

2 jika ... pernyataan lain

Sebuah if statement bisa diikuti dengan opsional else statement, yang dijalankan jika ekspresi boolean FALSE.

3 pernyataan if bersarang

Anda bisa menggunakannya if atau else if pernyataan di dalam yang lain if atau else if pernyataan.

Mari kita bahas setiap pengambilan keputusan secara singkat -

Suite Pernyataan Tunggal

Jika suite file if klausa hanya terdiri dari satu baris, mungkin berada di baris yang sama dengan pernyataan header.

Berikut adalah contoh dari a one-line if klausa -

#!/usr/bin/python

var = 100
if ( var == 100 ) : print "Value of expression is 100"
print "Good bye!"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Value of expression is 100
Good bye!

Secara umum, pernyataan dieksekusi secara berurutan: Pernyataan pertama dalam suatu fungsi dijalankan pertama, diikuti oleh yang kedua, dan seterusnya. Mungkin ada situasi ketika Anda perlu mengeksekusi blok kode beberapa kali.

Bahasa pemrograman menyediakan berbagai struktur kontrol yang memungkinkan jalur eksekusi yang lebih rumit.

Pernyataan loop memungkinkan kita untuk mengeksekusi pernyataan atau sekelompok pernyataan beberapa kali. Diagram berikut mengilustrasikan pernyataan loop -

Bahasa pemrograman Python menyediakan jenis loop berikut untuk menangani persyaratan perulangan.

Sr.No. Jenis & Deskripsi Loop
1 while loop

Mengulangi pernyataan atau sekelompok pernyataan saat kondisi yang diberikan BENAR. Ini menguji kondisi sebelum menjalankan badan perulangan.

2 untuk loop

Menjalankan urutan pernyataan beberapa kali dan menyingkat kode yang mengelola variabel loop.

3 loop bersarang

Anda dapat menggunakan satu atau lebih loop di dalam while lainnya, for atau do.. while loop.

Pernyataan Kontrol Loop

Pernyataan kontrol loop mengubah eksekusi dari urutan normalnya. Saat eksekusi meninggalkan ruang lingkup, semua objek otomatis yang dibuat dalam lingkup itu dimusnahkan.

Python mendukung pernyataan kontrol berikut. Klik tautan berikut untuk memeriksa detailnya.

Mari kita lihat pernyataan kontrol loop secara singkat

Sr.No. Pernyataan & Deskripsi Kontrol
1 pernyataan istirahat

Menghentikan pernyataan loop dan mentransfer eksekusi ke pernyataan segera setelah loop.

2 lanjutkan pernyataan

Menyebabkan loop melewatkan sisa tubuhnya dan segera menguji ulang kondisinya sebelum mengulangi.

3 pernyataan lulus

Pernyataan pass dalam Python digunakan ketika pernyataan diperlukan secara sintaksis tetapi Anda tidak ingin perintah atau kode apa pun dieksekusi.

Tipe data angka menyimpan nilai numerik. Mereka adalah tipe data yang tidak dapat diubah, berarti bahwa mengubah nilai tipe data angka menghasilkan objek yang baru dialokasikan.

Objek angka dibuat saat Anda memberikan nilai padanya. Misalnya -

var1 = 1
var2 = 10

Anda juga dapat menghapus referensi ke objek angka dengan menggunakan delpernyataan. Sintaks dari pernyataan del adalah -

del var1[,var2[,var3[....,varN]]]]

Anda dapat menghapus satu objek atau beberapa objek dengan menggunakan delpernyataan. Misalnya -

del var
del var_a, var_b

Python mendukung empat tipe numerik yang berbeda -

  • int (signed integers) - Mereka sering disebut hanya bilangan bulat atau int, adalah bilangan bulat positif atau negatif tanpa titik desimal.

  • long (long integers ) - Juga disebut long, mereka adalah bilangan bulat dengan ukuran tidak terbatas, ditulis seperti bilangan bulat dan diikuti dengan huruf besar atau huruf kecil L.

  • float (floating point real values)- Juga disebut float, mereka mewakili bilangan real dan ditulis dengan titik desimal yang membagi bagian integer dan pecahan. Float juga mungkin dalam notasi ilmiah, dengan E atau e menunjukkan pangkat 10 (2.5e2 = 2.5 x 10 2 = 250).

  • complex (complex numbers)- berbentuk a + bJ, di mana a dan b adalah float dan J (atau j) mewakili akar kuadrat dari -1 (yang merupakan bilangan imajiner). Bagian sebenarnya dari bilangan tersebut adalah a, dan bagian imajinernya adalah b. Bilangan kompleks tidak banyak digunakan dalam pemrograman Python.

Contoh

Berikut beberapa contoh angka

int panjang mengapung kompleks
10 51924361L 0.0 3.14j
100 -0x19323L 15.20 45.j
-786 0122L -21.9 9.322e-36j
080 0xDEFABCECBDAECBFBAEL 32.3 + e18 0,876j
-0490 535633629843L -90. -.6545 + 0J
-0x260 -052318172735L -32.54e100 3e + 26J
0x69 -4721885298529L 70.2-E12 4.53e-7j
  • Python memungkinkan Anda untuk menggunakan huruf kecil L dengan panjang, tetapi disarankan agar Anda hanya menggunakan huruf besar L untuk menghindari kebingungan dengan angka 1. Python menampilkan bilangan bulat panjang dengan huruf besar L.

  • Bilangan kompleks terdiri dari pasangan terurut bilangan titik mengambang nyata yang dilambangkan dengan a + bj, di mana a adalah bagian nyata dan b adalah bagian imajiner dari bilangan kompleks tersebut.

Konversi Jenis Angka

Python mengonversi angka secara internal dalam ekspresi yang berisi tipe campuran menjadi tipe umum untuk evaluasi. Namun terkadang, Anda perlu memaksa angka secara eksplisit dari satu jenis ke jenis lainnya untuk memenuhi persyaratan parameter operator atau fungsi.

  • Tipe int(x) untuk mengubah x menjadi bilangan bulat biasa.

  • Tipe long(x) untuk mengubah x menjadi bilangan bulat panjang.

  • Tipe float(x) untuk mengubah x menjadi bilangan floating-point.

  • Tipe complex(x) untuk mengubah x menjadi bilangan kompleks dengan bagian nyata x dan bagian imajiner nol.

  • Tipe complex(x, y)untuk mengubah x dan y menjadi bilangan kompleks dengan bagian nyata x dan bagian imajiner y. x dan y adalah ekspresi numerik

Fungsi Matematika

Python menyertakan fungsi-fungsi berikut yang melakukan perhitungan matematis.

Sr.No. Fungsi & Pengembalian (deskripsi)
1 abs (x)

Nilai absolut x: jarak (positif) antara x dan nol.

2 langit-langit (x)

Plafon x: bilangan bulat terkecil tidak kurang dari x

3 cmp (x, y)

-1 jika x <y, 0 jika x == y, atau 1 jika x> y

4 exp (x)

Eksponensial dari x: e x

5 fabs (x)

Nilai absolut x.

6 lantai (x)

Lantai x: bilangan bulat terbesar tidak lebih dari x

7 log (x)

Logaritma natural dari x, untuk x> 0

8 log10 (x)

Logaritma basis 10 dari x untuk x> 0.

9 maks (x1, x2, ...)

Argumen terbesarnya: nilai yang paling dekat dengan tak terhingga positif

10 min (x1, x2, ...)

Argumen terkecil: nilai yang paling dekat dengan tak terhingga negatif

11 modf (x)

Bagian pecahan dan bilangan bulat dari x dalam tupel dua item. Kedua bagian tersebut memiliki tanda yang sama dengan x. Bagian integer dikembalikan sebagai float.

12 pow (x, y)

Nilai x ** y.

13 bulat (x [, n])

xdibulatkan menjadi n digit dari koma desimal. Putaran Python menjauhi nol sebagai tie-breaker: round (0,5) adalah 1,0 dan round (-0,5) adalah -1,0.

14 sqrt (x)

Akar kuadrat x untuk x> 0

Fungsi Angka Acak

Nomor acak digunakan untuk permainan, simulasi, pengujian, keamanan, dan aplikasi privasi. Python menyertakan fungsi berikut yang umum digunakan.

Sr.No. Deskripsi fungsi
1 pilihan (seq)

Item acak dari daftar, tupel, atau string.

2 randrange ([start,] stop [, step])

Elemen yang dipilih secara acak dari rentang (mulai, berhenti, langkah)

3 acak()

Sebuah float acak r, sehingga 0 kurang dari atau sama dengan r dan r kurang dari 1

4 benih ([x])

Menetapkan nilai awal bilangan bulat yang digunakan untuk menghasilkan bilangan acak. Panggil fungsi ini sebelum memanggil fungsi modul acak lainnya. Mengembalikan Tidak Ada.

5 acak (lst)

Mengacak item dari daftar yang ada. Mengembalikan Tidak Ada.

6 seragam (x, y)

Sebuah float acak r, sehingga x kurang dari atau sama dengan r dan r kurang dari y

Fungsi trigonometri

Python menyertakan fungsi berikut yang melakukan kalkulasi trigonometri.

Sr.No. Deskripsi fungsi
1 acos (x)

Kembalikan arc cosinus dari x, dalam radian.

2 asin (x)

Kembalikan sinus busur x, dalam radian.

3 atan (x)

Kembalikan busur singgung x, dalam radian.

4 atan2 (y, x)

Kembali atan (y / x), dalam radian.

5 cos (x)

Kembalikan kosinus x radian.

6 hipot (x, y)

Kembalikan norma Euclidean, akar (x * x + y * y).

7 sin (x)

Kembalikan sinus dari x radian.

8 tan (x)

Kembalikan tangen x radian.

9 derajat (x)

Mengonversi sudut x dari radian ke derajat.

10 radian (x)

Mengonversi sudut x dari derajat menjadi radian.

Konstanta Matematika

Modul ini juga mendefinisikan dua konstanta matematika -

Sr.No. Konstanta & Deskripsi
1

pi

Konstanta matematika pi.

2

e

Konstanta matematika e.

String adalah salah satu jenis yang paling populer di Python. Kita dapat membuatnya hanya dengan melampirkan karakter dalam tanda kutip. Python memperlakukan tanda kutip tunggal sama dengan tanda kutip ganda. Membuat string sesederhana memberikan nilai ke variabel. Misalnya -

var1 = 'Hello World!'
var2 = "Python Programming"

Mengakses Nilai dalam String

Python tidak mendukung tipe karakter; ini diperlakukan sebagai string dengan panjang satu, sehingga juga dianggap sebagai substring.

Untuk mengakses substring, gunakan tanda kurung siku untuk mengiris bersama dengan indeks atau indeks untuk mendapatkan substring Anda. Misalnya -

#!/usr/bin/python

var1 = 'Hello World!'
var2 = "Python Programming"

print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

var1[0]:  H
var2[1:5]:  ytho

Memperbarui String

Anda dapat "memperbarui" string yang ada dengan menetapkan (kembali) variabel ke string lain. Nilai baru dapat dikaitkan dengan nilai sebelumnya atau ke string yang sama sekali berbeda. Misalnya -

#!/usr/bin/python

var1 = 'Hello World!'
print "Updated String :- ", var1[:6] + 'Python'

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Updated String :-  Hello Python

Karakter Escape

Tabel berikut adalah daftar karakter escape atau non-printable yang dapat ditunjukkan dengan notasi garis miring terbalik.

Karakter pelarian akan ditafsirkan; dalam satu string yang dikutip maupun yang dikutip ganda.

Notasi garis miring terbalik Karakter heksadesimal Deskripsi
\Sebuah 0x07 Bel atau waspada
\ b 0x08 Menghapus
\ cx   Kontrol-x
\ Cx   Kontrol-x
\ e 0x1b Melarikan diri
\ f 0x0c Formfeed
\ M- \ Cx   Kontrol-Meta-x
\ n 0x0a Garis baru
\ nnn   Notasi oktal, dimana n berada pada kisaran 0.7
\ r 0x0d Kereta kembali
\ s 0x20 Ruang
\ t 0x09 Tab
\ v 0x0b Tab vertikal
\ x   Karakter x
\ xnn   Notasi heksadesimal, di mana n berada di kisaran 0.9, af, atau AF

Operator Khusus String

Asumsikan variabel string a memegang 'Halo' dan variabel b memegang 'Python', lalu -

Operator Deskripsi Contoh
+ Concatenation - Menambahkan nilai di kedua sisi operator a + b akan memberi HelloPython
* Repetition - Membuat string baru, menggabungkan beberapa salinan dari string yang sama a * 2 akan memberikan -HaloHello
[] Slice - Memberikan karakter dari indeks yang diberikan a [1] akan memberi e
[:] Range Slice - Memberikan karakter dari range yang diberikan a [1: 4] akan memberi el
di Keanggotaan - Mengembalikan nilai true jika karakter ada dalam string yang diberikan H in a akan memberi 1
tidak masuk Keanggotaan - Mengembalikan nilai true jika karakter tidak ada dalam string yang diberikan M tidak akan memberikan 1
r / R String Mentah - Menekan arti sebenarnya dari karakter Escape. Sintaks untuk string mentah sama persis dengan string normal dengan pengecualian operator string mentah, huruf "r", yang mendahului tanda kutip. "R" dapat berupa huruf kecil (r) atau huruf besar (R) dan harus ditempatkan tepat sebelum tanda kutip pertama. cetak r '\ n' cetakan \ n dan cetak R '\ n'cetak \ n
% Format - Melakukan pemformatan String Lihat di bagian selanjutnya

Operator Pemformatan String

Salah satu fitur paling keren dari Python adalah operator format string%. Operator ini unik untuk string dan membuat paket yang memiliki fungsi dari keluarga printf () C. Berikut adalah contoh sederhana -

#!/usr/bin/python

print "My name is %s and weight is %d kg!" % ('Zara', 21)

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

My name is Zara and weight is 21 kg!

Berikut adalah daftar lengkap dari simbol yang dapat digunakan bersama dengan% -

Simbol Format Konversi
% c karakter
% s konversi string melalui str () sebelum pemformatan
%saya bilangan bulat desimal bertanda
% d bilangan bulat desimal bertanda
% u bilangan bulat desimal tak bertanda
%Hai bilangan bulat oktal
% x integer heksadesimal (huruf kecil)
% X integer heksadesimal (huruf UPPERcase)
% e notasi eksponensial (dengan huruf kecil 'e')
% E notasi eksponensial (dengan UPPERcase 'E')
% f bilangan real floating point
% g yang lebih pendek dari% f dan% e
% G yang lebih pendek dari% f dan% E

Simbol dan fungsionalitas lain yang didukung tercantum dalam tabel berikut ini -

Simbol Kegunaan
* argumen menentukan lebar atau presisi
- pembenaran kiri
+ tampilkan tandanya
<sp> biarkan spasi kosong sebelum bilangan positif
# tambahkan nol di depan oktal ('0') atau heksadesimal di awal '0x' atau '0X', bergantung pada apakah 'x' atau 'X' digunakan.
0 pad dari kiri dengan nol (bukan spasi)
% '%%' memberi Anda satu literal '%'
(var) variabel pemetaan (argumen kamus)
M N m adalah lebar total minimum dan n adalah jumlah digit yang akan ditampilkan setelah koma desimal (jika appl.)

Kutipan Tiga

Kutipan rangkap tiga Python membantu dengan memungkinkan string menjangkau beberapa baris, termasuk verbatim NEWLINEs, TABs, dan karakter khusus lainnya.

Sintaks untuk tiga kutipan terdiri dari tiga berturut-turut single or double tanda kutip.

#!/usr/bin/python

para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( \t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ \n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print para_str

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut. Perhatikan bagaimana setiap karakter khusus telah diubah ke bentuk cetakannya, sampai yang terakhir NEWLINE di akhir string antara "atas". dan menutup tanda kutip tiga. Perhatikan juga bahwa NEWLINEs terjadi baik dengan tanda kutip eksplisit di akhir baris atau kode pelolosannya (\ n) -

this is a long string that is made up of
several lines and non-printable characters such as
TAB (    ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
 ], or just a NEWLINE within
the variable assignment will also show up.

String mentah sama sekali tidak memperlakukan garis miring terbalik sebagai karakter khusus. Setiap karakter yang Anda masukkan ke string mentah tetap seperti Anda menulisnya -

#!/usr/bin/python

print 'C:\\nowhere'

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

C:\nowhere

Sekarang mari kita gunakan string mentah. Kami akan memberikan ekspresir'expression' sebagai berikut -

#!/usr/bin/python

print r'C:\\nowhere'

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

C:\\nowhere

String Unicode

String normal dalam Python disimpan secara internal sebagai ASCII 8-bit, sedangkan string Unicode disimpan sebagai Unicode 16-bit. Ini memungkinkan kumpulan karakter yang lebih bervariasi, termasuk karakter khusus dari sebagian besar bahasa di dunia. Saya akan membatasi perlakuan saya terhadap string Unicode sebagai berikut -

#!/usr/bin/python

print u'Hello, world!'

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello, world!

Seperti yang Anda lihat, string Unicode menggunakan awalan u, sama seperti string mentah menggunakan awalan r.

Metode String Bawaan

Python menyertakan metode bawaan berikut untuk memanipulasi string -

Sr.No. Metode dengan Deskripsi
1 kapitalisasi ()

Huruf besar huruf pertama dari string

2 tengah (lebar, fillchar)

Mengembalikan string berlapis spasi dengan string asli dipusatkan ke total kolom lebar.

3 hitung (str, beg = 0, end = len (string))

Menghitung berapa kali str terjadi dalam string atau dalam substring string jika memulai indeks mohon dan mengakhiri indeks akhir diberikan.

4 decode (encoding = 'UTF-8', kesalahan = 'ketat')

Mendekode string menggunakan codec yang terdaftar untuk pengkodean. encoding default ke encoding string default.

5 encode (encoding = 'UTF-8', error = 'strict')

Mengembalikan versi string yang dikodekan; pada kesalahan, defaultnya adalah menaikkan ValueError kecuali kesalahan diberikan dengan 'ignore' atau 'replace'.

6 endswith (suffix, beg = 0, end = len (string))

Menentukan apakah string atau substring dari string (jika memulai indeks mohon dan mengakhiri indeks akhir diberikan) diakhiri dengan sufiks; mengembalikan true jika demikian dan false sebaliknya.

7 expandtabs (tabsize = 8)

Memperluas tab dalam string ke beberapa spasi; defaultnya adalah 8 spasi per tab jika ukuran tab tidak tersedia.

8 temukan (str, beg = 0 end = len (string))

Tentukan apakah str terjadi dalam string atau dalam substring string jika memulai indeks mohon dan mengakhiri indeks akhir diberikan indeks pengembalian jika ditemukan dan -1 sebaliknya.

9 indeks (str, beg = 0, end = len (string))

Sama seperti find (), tetapi memunculkan pengecualian jika str tidak ditemukan.

10 isalnum ()

Mengembalikan nilai benar jika string memiliki setidaknya 1 karakter dan semua karakter adalah alfanumerik dan salah jika sebaliknya.

11 isalpha ()

Mengembalikan nilai benar jika string memiliki setidaknya 1 karakter dan semua karakter adalah alfabet dan salah jika sebaliknya.

12 isdigit ()

Mengembalikan nilai benar jika string hanya berisi angka dan salah jika sebaliknya.

13 lebih rendah()

Mengembalikan nilai benar jika string memiliki setidaknya 1 karakter berkursi dan semua karakter bersusun dalam huruf kecil dan salah jika sebaliknya.

14 isnumerik ()

Mengembalikan nilai benar jika string unicode hanya berisi karakter numerik dan salah jika sebaliknya.

15 isspace ()

Mengembalikan nilai benar jika string hanya berisi karakter spasi dan salah jika sebaliknya.

16 istitle ()

Mengembalikan nilai true jika string dengan benar "titlecased" dan false sebaliknya.

17 isupper ()

Mengembalikan nilai benar jika string memiliki setidaknya satu karakter berkurung dan semua karakter bersusun dalam huruf besar dan salah jika sebaliknya.

18 bergabung (seq)

Menggabungkan (menggabungkan) representasi string dari elemen dalam urutan sekuens menjadi string, dengan string pemisah.

19 len (string)

Mengembalikan panjang string

20 ljust (lebar [, fillchar])

Mengembalikan string berlapis spasi dengan string asli rata kiri ke total kolom lebar.

21 menurunkan()

Mengonversi semua huruf besar dalam string menjadi huruf kecil.

22 lstrip ()

Menghapus semua spasi di depan dalam string.

23 maketrans ()

Mengembalikan tabel terjemahan untuk digunakan dalam fungsi terjemahan.

24 maks (str)

Mengembalikan karakter alfabet maksimal dari string str.

25 min (str)

Mengembalikan karakter alfabet min dari string str.

26 ganti (lama, baru [, maks])

Mengganti semua kemunculan lama dalam string dengan kemunculan baru atau paling banyak jika max diberikan.

27 rfind (str, beg = 0, end = len (string))

Sama seperti find (), tetapi mencari mundur dalam string.

28 rindex (str, beg = 0, end = len (string))

Sama seperti index (), tetapi cari mundur dalam string.

29 rjust (lebar, [, fillchar])

Mengembalikan string berlapis spasi dengan string asli rata kanan ke total kolom lebar.

30 rstrip ()

Menghapus semua spasi kosong dari string.

31 split (str = "", num = string.count (str))

Membagi string sesuai dengan pemisah str (spasi jika tidak tersedia) dan mengembalikan daftar substring; bagi menjadi paling banyak substring jika diberikan.

32 garis terpisah (num = string.count ('\ n'))

Memisahkan string sama sekali (atau num) NEWLINEs dan mengembalikan daftar setiap baris dengan NEWLINEs dihapus.

33 startswith (str, beg = 0, end = len (string))

Menentukan apakah string atau substring dari string (jika memulai indeks mohon dan mengakhiri indeks akhir diberikan) dimulai dengan substring str; mengembalikan true jika demikian dan false sebaliknya.

34 strip ([karakter])

Melakukan lstrip () dan rstrip () pada string.

35 swapcase ()

Membalik kasus untuk semua huruf dalam string.

36 judul()

Mengembalikan versi string "titlecased", yaitu, semua kata dimulai dengan huruf besar dan sisanya adalah huruf kecil.

37 terjemahkan (table, deletechars = "")

Menerjemahkan string sesuai dengan tabel terjemahan str (256 karakter), menghapus yang ada di string del.

38 atas()

Mengonversi huruf kecil dalam string menjadi huruf besar.

39 zfill (lebar)

Mengembalikan string asli yang ditinggalkan dengan nol ke total karakter lebar; ditujukan untuk angka, zfill () mempertahankan tanda apa pun yang diberikan (kurang satu nol).

40 isdecimal ()

Mengembalikan nilai benar jika string unicode hanya berisi karakter desimal dan salah jika sebaliknya.

Struktur data paling dasar dalam Python adalah sequence. Setiap elemen urutan diberi nomor - posisi atau indeksnya. Indeks pertama adalah nol, indeks kedua adalah satu, dan seterusnya.

Python memiliki enam jenis urutan bawaan, tetapi yang paling umum adalah daftar dan tupel, yang akan kita lihat di tutorial ini.

Ada beberapa hal yang dapat Anda lakukan dengan semua jenis urutan. Operasi ini meliputi pengindeksan, pemotongan, penambahan, perkalian, dan pemeriksaan keanggotaan. Selain itu, Python memiliki fungsi bawaan untuk mencari panjang suatu urutan dan untuk menemukan elemen terbesar dan terkecilnya.

Daftar Python

Daftar ini adalah tipe data paling serbaguna yang tersedia di Python yang dapat ditulis sebagai daftar nilai yang dipisahkan koma (item) di antara tanda kurung siku. Hal penting tentang daftar adalah bahwa item dalam daftar tidak harus berjenis sama.

Membuat daftar semudah menempatkan nilai yang dipisahkan koma di antara tanda kurung siku. Misalnya -

list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5 ];
list3 = ["a", "b", "c", "d"]

Mirip dengan indeks string, indeks daftar dimulai dari 0, dan daftar dapat diiris, digabungkan, dan seterusnya.

Mengakses Nilai dalam Daftar

Untuk mengakses nilai dalam daftar, gunakan tanda kurung siku untuk mengiris bersama dengan indeks atau indeks untuk mendapatkan nilai yang tersedia di indeks tersebut. Misalnya -

#!/usr/bin/python

list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

list1[0]:  physics
list2[1:5]:  [2, 3, 4, 5]

Memperbarui Daftar

Anda bisa memperbarui satu atau beberapa elemen daftar dengan memberikan potongan di sisi kiri operator tugas, dan Anda bisa menambahkan ke elemen dalam daftar dengan metode append (). Misalnya -

#!/usr/bin/python

list = ['physics', 'chemistry', 1997, 2000];
print "Value available at index 2 : "
print list[2]
list[2] = 2001;
print "New value available at index 2 : "
print list[2]

Note - metode append () dibahas di bagian selanjutnya.

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Value available at index 2 :
1997
New value available at index 2 :
2001

Hapus Elemen Daftar

Untuk menghapus elemen list, Anda bisa menggunakan pernyataan del jika Anda tahu persis elemen mana yang Anda hapus atau metode remove () jika Anda tidak tahu. Misalnya -

#!/usr/bin/python

list1 = ['physics', 'chemistry', 1997, 2000];
print list1
del list1[2];
print "After deleting value at index 2 : "
print list1

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 :
['physics', 'chemistry', 2000]

Note - Metode remove () dibahas di bagian selanjutnya.

Operasi Daftar Dasar

List menanggapi operator + dan * seperti string; maksudnya penggabungan dan pengulangan di sini juga, kecuali bahwa hasilnya adalah daftar baru, bukan string.

Faktanya, daftar merespons semua operasi urutan umum yang kami gunakan pada string di bab sebelumnya.

Ekspresi Python Hasil Deskripsi
len ([1, 2, 3]) 3 Panjangnya
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] Rangkaian
['Hai!'] * 4 ['Hai!', 'Hai!', 'Hai!', 'Hai!'] Pengulangan
3 dalam [1, 2, 3] Benar Keanggotaan
untuk x dalam [1, 2, 3]: cetak x, 1 2 3 Pengulangan

Mengindeks, Mengiris, dan Matriks

Karena daftar adalah urutan, pengindeksan dan pemotongan bekerja dengan cara yang sama untuk daftar seperti yang mereka lakukan untuk string.

Dengan asumsi masukan berikut -

L = ['spam', 'Spam', 'SPAM!']

Ekspresi Python Hasil Deskripsi
L [2] SPAM! Offset mulai dari nol
L [-2] Spam Negatif: hitung dari kanan
L [1:] ['Spam', 'SPAM!'] Mengiris mengambil bagian

Fungsi & Metode Daftar Bawaan

Python menyertakan fungsi daftar berikut -

Sr.No. Fungsi dengan Deskripsi
1 cmp (daftar1, daftar2)

Membandingkan elemen dari kedua daftar.

2 len (daftar)

Memberikan total panjang daftar.

3 max (daftar)

Mengembalikan item dari daftar dengan nilai maks.

4 min (daftar)

Mengembalikan item dari daftar dengan nilai min.

5 daftar (seq)

Mengubah tupel menjadi daftar.

Python menyertakan metode daftar berikut

Sr.No. Metode dengan Deskripsi
1 list.append (obj)

Menambahkan objek objek ke daftar

2 list.count (obj)

Mengembalikan hitungan berapa kali obj muncul dalam daftar

3 list.extend (seq)

Menambahkan konten seq ke daftar

4 list.index (obj)

Mengembalikan indeks terendah dalam daftar yang obj muncul

5 list.insert (indeks, obj)

Menyisipkan objek objek ke dalam daftar pada indeks offset

6 list.pop (obj = list [-1])

Menghapus dan mengembalikan objek atau objek terakhir dari daftar

7 list.remove (obj)

Menghapus objek objek dari daftar

8 list.reverse ()

Membalikkan objek daftar di tempat

9 list.sort ([func])

Mengurutkan objek daftar, gunakan fungsi bandingkan jika diberikan

Tupel adalah urutan objek Python yang tidak dapat diubah. Tupel adalah urutan, sama seperti daftar. Perbedaan antara tupel dan daftar adalah, tupel tidak dapat diubah tidak seperti daftar dan tupel menggunakan tanda kurung, sedangkan daftar menggunakan tanda kurung siku.

Membuat tupel semudah memasukkan nilai yang dipisahkan koma. Secara opsional, Anda juga dapat meletakkan nilai yang dipisahkan koma ini di antara tanda kurung. Misalnya -

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d";

Tupel kosong ditulis sebagai dua tanda kurung yang tidak berisi apa-apa -

tup1 = ();

Untuk menulis tupel yang berisi satu nilai, Anda harus menyertakan koma, meskipun hanya ada satu nilai -

tup1 = (50,);

Seperti indeks string, indeks tupel dimulai dari 0, dan dapat diiris, digabungkan, dan seterusnya.

Mengakses Nilai di Tuple

Untuk mengakses nilai dalam tupel, gunakan tanda kurung siku untuk mengiris bersama dengan indeks atau indeks untuk mendapatkan nilai yang tersedia di indeks tersebut. Misalnya -

#!/usr/bin/python

tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5, 6, 7 );
print "tup1[0]: ", tup1[0];
print "tup2[1:5]: ", tup2[1:5];

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

tup1[0]:  physics
tup2[1:5]:  [2, 3, 4, 5]

Memperbarui Tuple

Tupel tidak dapat diubah yang berarti Anda tidak dapat memperbarui atau mengubah nilai elemen tupel. Anda dapat mengambil bagian dari tupel yang ada untuk membuat tupel baru seperti yang ditunjukkan contoh berikut -

#!/usr/bin/python

tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');

# Following action is not valid for tuples
# tup1[0] = 100;

# So let's create a new tuple as follows
tup3 = tup1 + tup2;
print tup3;

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

(12, 34.56, 'abc', 'xyz')

Hapus Elemen Tuple

Menghapus elemen tupel individu tidak dimungkinkan. Tentu saja, tidak ada yang salah dengan menyusun tupel lain dengan elemen yang tidak diinginkan dibuang.

Untuk menghapus seluruh tupel secara eksplisit, cukup gunakan delpernyataan. Misalnya -

#!/usr/bin/python

tup = ('physics', 'chemistry', 1997, 2000);
print tup;
del tup;
print "After deleting tup : ";
print tup;

Ini menghasilkan hasil sebagai berikut. Perhatikan pengecualian yang dimunculkan, ini karena setelahdel tup tuple tidak ada lagi -

('physics', 'chemistry', 1997, 2000)
After deleting tup :
Traceback (most recent call last):
   File "test.py", line 9, in <module>
      print tup;
NameError: name 'tup' is not defined

Operasi Tuple Dasar

Tuple merespons operator + dan * seperti string; maksudnya penggabungan dan pengulangan di sini juga, kecuali bahwa hasilnya adalah tupel baru, bukan string.

Faktanya, tupel merespons semua operasi urutan umum yang kami gunakan pada string di bab sebelumnya -

Ekspresi Python Hasil Deskripsi
len ((1, 2, 3)) 3 Panjangnya
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) Rangkaian
('Hai!',) * 4 ('Hai!', 'Hai!', 'Hai!', 'Hai!') Pengulangan
3 inci (1, 2, 3) Benar Keanggotaan
untuk x in (1, 2, 3): print x, 1 2 3 Pengulangan

Mengindeks, Mengiris, dan Matriks

Karena tupel adalah urutan, pengindeksan dan pemotongan bekerja dengan cara yang sama untuk tupel seperti yang mereka lakukan untuk string. Dengan asumsi masukan berikut -

L = ('spam', 'Spam', 'SPAM!')

 

Ekspresi Python Hasil Deskripsi
L [2] 'SPAM!' Offset mulai dari nol
L [-2] 'Spam' Negatif: hitung dari kanan
L [1:] ['Spam', 'SPAM!'] Mengiris mengambil bagian

Tidak Ada Pembatas Penutup

Kumpulan objek ganda, dipisahkan dengan koma, ditulis tanpa mengidentifikasi simbol, yaitu, tanda kurung untuk daftar, tanda kurung untuk tupel, dll., Default untuk tupel, seperti yang ditunjukkan dalam contoh singkat ini -

#!/usr/bin/python

print 'abc', -4.24e93, 18+6.6j, 'xyz';
x, y = 1, 2;
print "Value of x , y : ", x,y;

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

abc -4.24e+93 (18+6.6j) xyz
Value of x , y : 1 2

Fungsi Tupel Bawaan

Python menyertakan fungsi tupel berikut -

Sr.No. Fungsi dengan Deskripsi
1 cmp (tuple1, tuple2)

Membandingkan elemen kedua tupel.

2 len (tuple)

Memberikan total panjang tupel.

3 maks (tuple)

Mengembalikan item dari tupel dengan nilai maks.

4 min (tupel)

Mengembalikan item dari tupel dengan nilai min.

5 tupel (seq)

Mengubah daftar menjadi tupel.

Setiap kunci dipisahkan dari nilainya dengan titik dua (:), item dipisahkan dengan koma, dan semuanya diapit oleh tanda kurung kurawal. Kamus kosong tanpa item apa pun ditulis hanya dengan dua tanda kurung kurawal, seperti ini: {}.

Kunci dalam kamus unik, sedangkan nilainya mungkin tidak. Nilai kamus bisa dari tipe apa pun, tapi kuncinya harus dari tipe data yang tidak bisa diubah seperti string, angka, atau tupel.

Mengakses Nilai dalam Kamus

Untuk mengakses elemen kamus, Anda dapat menggunakan tanda kurung siku yang sudah dikenal bersama dengan kunci untuk mendapatkan nilainya. Berikut adalah contoh sederhana -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

dict['Name']:  Zara
dict['Age']:  7

Jika kami mencoba mengakses item data dengan kunci, yang bukan bagian dari kamus, kami mendapatkan kesalahan sebagai berikut -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

dict['Alice']:
Traceback (most recent call last):
   File "test.py", line 4, in <module>
      print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

Memperbarui Kamus

Anda dapat memperbarui kamus dengan menambahkan entri baru atau pasangan nilai kunci, mengubah entri yang sudah ada, atau menghapus entri yang ada seperti yang ditunjukkan di bawah ini dalam contoh sederhana -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

dict['Age']:  8
dict['School']:  DPS School

Hapus Elemen Kamus

Anda dapat menghapus elemen kamus satu per satu atau menghapus seluruh konten kamus. Anda juga dapat menghapus seluruh kamus dalam satu operasi.

Untuk menghapus seluruh kamus secara eksplisit, cukup gunakan delpernyataan. Berikut adalah contoh sederhana -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
del dict ;        # delete entire dictionary

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Ini menghasilkan hasil sebagai berikut. Perhatikan bahwa pengecualian dimunculkan karena setelahdel dict kamus tidak ada lagi -

dict['Age']:
Traceback (most recent call last):
   File "test.py", line 8, in <module>
      print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

Note - Metode del () dibahas di bagian selanjutnya.

Properti Kunci Kamus

Nilai kamus tidak memiliki batasan. Mereka bisa berupa sembarang objek Python, baik objek standar atau objek yang ditentukan pengguna. Namun, hal yang sama tidak berlaku untuk kuncinya.

Ada dua hal penting yang perlu diingat tentang kunci kamus -

(a)Lebih dari satu entri per kunci tidak diperbolehkan. Artinya, tidak ada kunci duplikat yang diperbolehkan. Saat kunci duplikat ditemukan selama penugasan, penugasan terakhir menang. Misalnya -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

dict['Name']:  Manni

(b)Kunci harus tetap. Yang berarti Anda dapat menggunakan string, angka atau tupel sebagai kunci kamus tetapi sesuatu seperti ['key'] tidak diperbolehkan. Berikut adalah contoh sederhana -

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Traceback (most recent call last):
   File "test.py", line 3, in <module>
      dict = {['Name']: 'Zara', 'Age': 7};
TypeError: unhashable type: 'list'

Fungsi & Metode Kamus Bawaan

Python menyertakan fungsi kamus berikut -

Sr.No. Fungsi dengan Deskripsi
1 cmp (dict1, dict2)

Membandingkan elemen dari kedua dict.

2 len (dikt)

Memberikan panjang total kamus. Ini akan sama dengan jumlah item dalam kamus.

3 str (dikt)

Menghasilkan representasi string kamus yang dapat dicetak

4 jenis (variabel)

Menampilkan jenis variabel yang diteruskan. Jika variabel yang dilewatkan adalah kamus, maka itu akan mengembalikan tipe kamus.

Python menyertakan metode kamus berikut -

Sr.No. Metode dengan Deskripsi
1 dict.clear ()

Menghapus semua elemen dari kamus dikt

2 dict.copy ()

Mengembalikan salinan dikt kamus dangkal

3 dict.fromkeys ()

Buat kamus baru dengan kunci dari seq dan nilai diatur ke nilai .

4 dict.get (key, default = None)

Untuk key key, mengembalikan nilai atau default jika key tidak ada dalam kamus

5 dict.has_key (kunci)

Mengembalikan nilai benar jika kunci dalam kamus dikt , salah jika sebaliknya

6 dict.items ()

Mengembalikan daftar pasangan tupel dict (kunci, nilai)

7 dict.keys ()

Menampilkan daftar kunci kamus dikt

8 dict.setdefault (key, default = None)

Mirip dengan get (), tetapi akan menyetel dict [key] = default jika kunci belum ada dalam dict

9 dict.update (dict2)

Menambahkan pasangan nilai kunci dictionary dict2 ke dict

10 dict.values ​​()

Daftar Pengembalian kamus dict nilai-nilai 's

Program Python dapat menangani tanggal dan waktu dengan beberapa cara. Mengubah format tanggal adalah tugas umum komputer. Modul waktu dan kalender Python membantu melacak tanggal dan waktu.

Apa itu Tick?

Interval waktu adalah angka floating-point dalam satuan detik. Instan tertentu dalam waktu dinyatakan dalam detik sejak pukul 00:00:00 1 Januari 1970 (periode).

Ada yang populer timemodul tersedia dengan Python yang menyediakan fungsi untuk bekerja dengan waktu, dan untuk mengubah antar representasi. Fungsi time.time () mengembalikan waktu sistem saat ini dalam kutu sejak 00:00:00 jam 1 Januari 1970 (epoch).

Contoh

#!/usr/bin/python
import time;  # This is required to include time module.

ticks = time.time()
print "Number of ticks since 12:00am, January 1, 1970:", ticks

Ini akan menghasilkan sesuatu sebagai berikut -

Number of ticks since 12:00am, January 1, 1970: 7186862.73399

Aritmatika tanggal mudah dilakukan dengan kutu. Namun, tanggal sebelum zaman tidak dapat direpresentasikan dalam bentuk ini. Tanggal di masa mendatang juga tidak dapat direpresentasikan dengan cara ini - titik batasnya adalah sekitar tahun 2038 untuk UNIX dan Windows.

Apa itu TimeTuple?

Banyak fungsi waktu Python menangani waktu sebagai tupel 9 angka, seperti yang ditunjukkan di bawah ini -

Indeks Bidang Nilai
0 Tahun 4 digit 2008
1 Bulan 1 sampai 12
2 Hari 1 sampai 31
3 Jam 0 sampai 23
4 Menit 0 hingga 59
5 Kedua 0 hingga 61 (60 atau 61 adalah detik kabisat)
6 Hari dalam seminggu 0 sampai 6 (0 adalah Senin)
7 Hari dalam setahun 1 sampai 366 (hari Julian)
8 Tabungan siang hari -1, 0, 1, -1 artinya library menentukan DST

Tupel di atas sama dengan struct_timestruktur. Struktur ini memiliki atribut berikut -

Indeks Atribut Nilai
0 tm_year 2008
1 tm_mon 1 sampai 12
2 tm_mday 1 sampai 31
3 tm_hour 0 sampai 23
4 tm_min 0 hingga 59
5 tm_sec 0 hingga 61 (60 atau 61 adalah detik kabisat)
6 tm_wday 0 sampai 6 (0 adalah Senin)
7 tm_yday 1 sampai 366 (hari Julian)
8 tm_isdst -1, 0, 1, -1 artinya library menentukan DST

Mendapatkan waktu saat ini

Untuk menerjemahkan waktu instan dari detik sejak nilai floating-point epoch menjadi tupel waktu, teruskan nilai floating-point ke fungsi (misalnya, waktu lokal) yang mengembalikan tupel waktu dengan kesembilan item valid.

#!/usr/bin/python
import time;

localtime = time.localtime(time.time())
print "Local current time :", localtime

Ini akan menghasilkan hasil berikut, yang dapat diformat dalam bentuk lain yang dapat disajikan -

Local current time : time.struct_time(tm_year=2013, tm_mon=7, 
tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)

Mendapatkan waktu yang diformat

Anda dapat memformat kapan saja sesuai kebutuhan Anda, tetapi metode sederhana untuk mendapatkan waktu dalam format yang dapat dibaca adalah asctime () -

#!/usr/bin/python
import time;

localtime = time.asctime( time.localtime(time.time()) )
print "Local current time :", localtime

Ini akan menghasilkan hasil sebagai berikut -

Local current time : Tue Jan 13 10:17:09 2009

Mendapatkan kalender selama sebulan

Modul kalender memberikan berbagai metode untuk bermain dengan kalender tahunan dan bulanan. Di sini, kami mencetak kalender untuk bulan tertentu (Jan 2008) -

#!/usr/bin/python
import calendar

cal = calendar.month(2008, 1)
print "Here is the calendar:"
print cal

Ini akan menghasilkan hasil sebagai berikut -

Here is the calendar:
   January 2008
Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

The waktu Modul

Ada yang populer timemodul tersedia dengan Python yang menyediakan fungsi untuk bekerja dengan waktu dan untuk mengubah antar representasi. Berikut adalah daftar semua metode yang tersedia -

Sr.No. Fungsi dengan Deskripsi
1 time.altzone

Offset zona waktu DST lokal, dalam detik di sebelah barat UTC, jika ditentukan. Ini negatif jika zona waktu DST lokal berada di timur UTC (seperti di Eropa Barat, termasuk Inggris). Gunakan ini hanya jika siang hari bukan nol.

2 time.asctime ([tupletime])

Menerima tupel waktu dan mengembalikan string 24 karakter yang dapat dibaca seperti 'Sel 11 Des 18:07:14 2008'.

3 time.clock ()

Mengembalikan waktu CPU saat ini sebagai angka floating-point dari detik. Untuk mengukur biaya komputasi dari berbagai pendekatan, nilai time.clock lebih berguna daripada time.time ().

4 time.ctime ([detik])

Seperti asctime (localtime (secs)) dan tanpa argumen seperti asctime ()

5 time.gmtime ([detik])

Menerima instan yang diekspresikan dalam hitungan detik sejak epoch dan mengembalikan tupel waktu dengan waktu UTC. Catatan: t.tm_isdst selalu 0

6 time.localtime ([detik])

Menerima sekejap yang diekspresikan dalam hitungan detik sejak epoch dan mengembalikan tupel waktu dengan waktu lokal (t.tm_isdst adalah 0 atau 1, bergantung pada apakah DST berlaku untuk detik instan menurut aturan lokal).

7 time.mktime (tupletime)

Menerima instan yang diekspresikan sebagai tupel waktu dalam waktu lokal dan mengembalikan nilai floating-point dengan instan yang diekspresikan dalam detik sejak periode.

8 time.sleep (detik)

Menangguhkan utas panggilan selama beberapa detik.

9 time.strftime (fmt [, tupletime])

Menerima instan yang diekspresikan sebagai tupel waktu dalam waktu lokal dan mengembalikan string yang mewakili instan seperti yang ditentukan oleh string fmt.

10 waktu.strptime (str, fmt = '% a% b% d% H:% M:% S% Y')

Parsing str sesuai dengan format string fmt dan kembalikan instan dalam format time-tuple.

11 time.time ()

Mengembalikan waktu saat ini secara instan, sejumlah detik floating-point sejak periode.

12 time.tzset ()

Mereset aturan konversi waktu yang digunakan oleh rutinitas perpustakaan. Variabel lingkungan TZ menentukan bagaimana ini dilakukan.

Mari kita bahas fungsinya secara singkat -

Ada dua atribut penting berikut yang tersedia dengan modul waktu -

Sr.No. Atribut dengan Deskripsi
1

time.timezone

Atribut time.timezone adalah perbedaan detik dari zona waktu lokal (tanpa DST) dari UTC (> 0 di Amerika; <= 0 di sebagian besar Eropa, Asia, Afrika).

2

time.tzname

Atribut time.tzname adalah sepasang string yang bergantung pada lokal, yang merupakan nama zona waktu lokal tanpa dan dengan DST.

The kalender Modul

Modul kalender menyediakan fungsi yang berhubungan dengan kalender, termasuk fungsi untuk mencetak kalender teks untuk bulan atau tahun tertentu.

Secara default, kalender menjadikan Senin sebagai hari pertama dalam seminggu dan Minggu sebagai yang terakhir. Untuk mengubahnya, panggil fungsi calendar.setfirstweekday ().

Berikut adalah daftar fungsi yang tersedia dengan modul kalender -

Sr.No. Fungsi dengan Deskripsi
1

calendar.calendar(year,w=2,l=1,c=6)

Mengembalikan string multiline dengan kalender untuk tahun tahun diformat menjadi tiga kolom yang dipisahkan oleh spasi c. w adalah lebar karakter setiap tanggal; setiap baris memiliki panjang 21 * w + 18 + 2 * c. l adalah jumlah baris untuk setiap minggu.

2

calendar.firstweekday( )

Mengembalikan pengaturan saat ini untuk hari kerja yang dimulai setiap minggu. Secara default, saat kalender pertama kali diimpor, nilainya 0, artinya Senin.

3

calendar.isleap(year)

Mengembalikan True jika tahun adalah tahun kabisat; jika tidak, Salah.

4

calendar.leapdays(y1,y2)

Mengembalikan jumlah total hari kabisat dalam tahun-tahun dalam rentang (y1, y2).

5

calendar.month(year,month,w=2,l=1)

Mengembalikan string multiline dengan kalender untuk bulan bulan tahun tahun, satu baris per minggu ditambah dua baris header. w adalah lebar karakter setiap tanggal; setiap baris memiliki panjang 7 * w + 6. l adalah jumlah baris untuk setiap minggu.

6

calendar.monthcalendar(year,month)

Menampilkan daftar daftar int. Setiap sublist menunjukkan satu minggu. Hari-hari di luar bulan bulan dalam tahun ditetapkan ke 0; hari dalam sebulan disetel ke hari dalam sebulan, 1 dan lebih tinggi.

7

calendar.monthrange(year,month)

Mengembalikan dua bilangan bulat. Yang pertama adalah kode hari kerja untuk hari pertama bulan dalam tahun tahun; yang kedua adalah jumlah hari dalam sebulan. Kode hari kerja adalah 0 (Senin) hingga 6 (Minggu); nomor bulan adalah 1 sampai 12.

8

calendar.prcal(year,w=2,l=1,c=6)

Seperti kalender cetak.calendar (tahun, w, l, c).

9

calendar.prmonth(year,month,w=2,l=1)

Seperti kalender cetak. Bulan (tahun, bulan, w, l).

10

calendar.setfirstweekday(weekday)

Tetapkan hari pertama setiap minggu ke hari kerja kode hari kerja. Kode hari kerja adalah 0 (Senin) hingga 6 (Minggu).

11

calendar.timegm(tupletime)

Kebalikan dari time.gmtime: menerima waktu instan dalam bentuk time-tuple dan mengembalikan seketika yang sama dengan jumlah floating-point detik sejak zaman.

12

calendar.weekday(year,month,day)

Mengembalikan kode hari kerja untuk tanggal tertentu. Kode hari kerja adalah 0 (Senin) hingga 6 (Minggu); nomor bulan adalah 1 (Januari) hingga 12 (Desember).

Modul & Fungsi Lainnya

Jika Anda tertarik, maka di sini Anda akan menemukan daftar modul dan fungsi penting lainnya untuk dimainkan dengan tanggal & waktu dengan Python -

  • The datetime Modul

  • The pytz Modul

  • The dateutil Modul

Fungsi adalah blok kode terorganisir dan dapat digunakan kembali yang digunakan untuk melakukan satu tindakan terkait. Functions menyediakan modularitas yang lebih baik untuk aplikasi Anda dan penggunaan ulang kode tingkat tinggi.

Seperti yang sudah Anda ketahui, Python memberi Anda banyak fungsi bawaan seperti print (), dll. Tetapi Anda juga dapat membuat fungsi Anda sendiri. Fungsi ini disebut fungsi yang ditentukan pengguna.

Mendefinisikan Fungsi

Anda dapat menentukan fungsi untuk menyediakan fungsionalitas yang diperlukan. Berikut adalah aturan sederhana untuk mendefinisikan fungsi dengan Python.

  • Blok fungsi dimulai dengan kata kunci def diikuti dengan nama fungsi dan tanda kurung (()).

  • Parameter atau argumen masukan apa pun harus ditempatkan di dalam tanda kurung ini. Anda juga dapat menentukan parameter di dalam tanda kurung ini.

  • Pernyataan pertama dari suatu fungsi dapat berupa pernyataan opsional - string dokumentasi dari fungsi atau docstring .

  • Blok kode dalam setiap fungsi dimulai dengan titik dua (:) dan diberi indentasi.

  • Pernyataan return [ekspresi] keluar dari suatu fungsi, secara opsional meneruskan ekspresi ke pemanggil. Pernyataan return tanpa argumen sama dengan return None.

Sintaksis

def functionname( parameters ):
   "function_docstring"
   function_suite
   return [expression]

Secara default, parameter memiliki perilaku posisi dan Anda perlu menginformasikannya dalam urutan yang sama seperti yang ditentukan.

Contoh

Fungsi berikut mengambil string sebagai parameter input dan mencetaknya pada layar standar.

def printme( str ):
   "This prints a passed string into this function"
   print str
   return

Memanggil Fungsi

Mendefinisikan fungsi hanya memberinya nama, menentukan parameter yang akan disertakan dalam fungsi dan menyusun blok kode.

Setelah struktur dasar suatu fungsi diselesaikan, Anda dapat menjalankannya dengan memanggilnya dari fungsi lain atau langsung dari prompt Python. Berikut adalah contoh untuk memanggil fungsi printme () -

#!/usr/bin/python

# Function definition is here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme("I'm first call to user defined function!")
printme("Again second call to the same function")

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

I'm first call to user defined function!
Again second call to the same function

Lewati referensi vs nilai

Semua parameter (argumen) dalam bahasa Python diteruskan dengan referensi. Artinya jika Anda mengubah apa yang dirujuk oleh parameter dalam suatu fungsi, perubahan tersebut juga mencerminkan kembali fungsi pemanggil. Misalnya -

#!/usr/bin/python

# Function definition is here
def changeme( mylist ):
   "This changes a passed list into this function"
   mylist.append([1,2,3,4]);
   print "Values inside the function: ", mylist
   return

# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist

Di sini, kami mempertahankan referensi dari objek yang diteruskan dan menambahkan nilai di objek yang sama. Jadi, ini akan menghasilkan hasil sebagai berikut -

Values inside the function:  [10, 20, 30, [1, 2, 3, 4]]
Values outside the function:  [10, 20, 30, [1, 2, 3, 4]]

Ada satu contoh lagi di mana argumen diteruskan oleh referensi dan referensi ditimpa di dalam fungsi yang dipanggil.

#!/usr/bin/python

# Function definition is here
def changeme( mylist ):
   "This changes a passed list into this function"
   mylist = [1,2,3,4]; # This would assig new reference in mylist
   print "Values inside the function: ", mylist
   return

# Now you can call changeme function
mylist = [10,20,30];
changeme( mylist );
print "Values outside the function: ", mylist

Parameter mylist bersifat lokal ke fungsi changeme. Mengubah daftar saya di dalam fungsi tidak mempengaruhi daftar saya . Fungsi tersebut tidak menyelesaikan apa pun dan akhirnya ini akan menghasilkan hasil sebagai berikut -

Values inside the function:  [1, 2, 3, 4]
Values outside the function:  [10, 20, 30]

Argumen Fungsi

Anda dapat memanggil fungsi dengan menggunakan tipe argumen formal berikut -

  • Argumen yang diperlukan
  • Argumen kata kunci
  • Argumen default
  • Argumen panjang variabel

Argumen yang diperlukan

Argumen yang diperlukan adalah argumen yang diteruskan ke suatu fungsi dalam urutan posisi yang benar. Di sini, jumlah argumen dalam pemanggilan fungsi harus sama persis dengan definisi fungsi.

Untuk memanggil fungsi printme () , Anda pasti perlu memberikan satu argumen, jika tidak maka akan memberikan kesalahan sintaks sebagai berikut -

#!/usr/bin/python

# Function definition is here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme()

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Traceback (most recent call last):
   File "test.py", line 11, in <module>
      printme();
TypeError: printme() takes exactly 1 argument (0 given)

Argumen kata kunci

Argumen kata kunci terkait dengan pemanggilan fungsi. Saat Anda menggunakan argumen kata kunci dalam panggilan fungsi, pemanggil mengidentifikasi argumen dengan nama parameter.

Ini memungkinkan Anda untuk melewati argumen atau menempatkannya tidak berurutan karena interpreter Python dapat menggunakan kata kunci yang disediakan untuk mencocokkan nilai dengan parameter. Anda juga dapat membuat panggilan kata kunci ke fungsi printme () dengan cara berikut -

#!/usr/bin/python

# Function definition is here
def printme( str ):
   "This prints a passed string into this function"
   print str
   return;

# Now you can call printme function
printme( str = "My string")

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

My string

Contoh berikut memberikan gambaran yang lebih jelas. Perhatikan bahwa urutan parameter tidak menjadi masalah.

#!/usr/bin/python

# Function definition is here
def printinfo( name, age ):
   "This prints a passed info into this function"
   print "Name: ", name
   print "Age ", age
   return;

# Now you can call printinfo function
printinfo( age=50, name="miki" )

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Name:  miki
Age  50

Argumen default

Argumen default adalah argumen yang mengasumsikan nilai default jika nilai tidak disediakan dalam pemanggilan fungsi untuk argumen itu. Contoh berikut memberikan gambaran tentang argumen default, ini mencetak usia default jika tidak diteruskan -

#!/usr/bin/python

# Function definition is here
def printinfo( name, age = 35 ):
   "This prints a passed info into this function"
   print "Name: ", name
   print "Age ", age
   return;

# Now you can call printinfo function
printinfo( age=50, name="miki" )
printinfo( name="miki" )

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Name:  miki
Age  50
Name:  miki
Age  35

Argumen panjang variabel

Anda mungkin perlu memproses suatu fungsi untuk lebih banyak argumen daripada yang Anda tentukan saat mendefinisikan fungsi. Argumen ini disebut argumen panjang variabel dan tidak dinamai dalam definisi fungsi, tidak seperti argumen wajib dan default.

Sintaks untuk fungsi dengan argumen variabel non-kata kunci adalah ini -

def functionname([formal_args,] *var_args_tuple ):
   "function_docstring"
   function_suite
   return [expression]

Tanda bintang (*) ditempatkan sebelum nama variabel yang menyimpan nilai dari semua argumen variabel bukan kata kunci. Tupel ini tetap kosong jika tidak ada argumen tambahan yang ditentukan selama pemanggilan fungsi. Berikut adalah contoh sederhana -

#!/usr/bin/python

# Function definition is here
def printinfo( arg1, *vartuple ):
   "This prints a variable passed arguments"
   print "Output is: "
   print arg1
   for var in vartuple:
      print var
   return;

# Now you can call printinfo function
printinfo( 10 )
printinfo( 70, 60, 50 )

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Output is:
10
Output is:
70
60
50

The Anonymous Fungsi

Fungsi-fungsi ini disebut anonim karena tidak dideklarasikan dengan cara standar dengan menggunakan kata kunci def . Anda dapat menggunakan kata kunci lambda untuk membuat fungsi anonim kecil.

  • Formulir lambda dapat mengambil sejumlah argumen tetapi hanya mengembalikan satu nilai dalam bentuk ekspresi. Mereka tidak boleh berisi perintah atau beberapa ekspresi.

  • Fungsi anonim tidak bisa menjadi panggilan langsung untuk dicetak karena lambda memerlukan ekspresi

  • Fungsi Lambda memiliki namespace lokalnya sendiri dan tidak dapat mengakses variabel selain yang ada di daftar parameternya dan yang ada di namespace global.

  • Meskipun tampaknya lambda adalah versi satu baris dari suatu fungsi, mereka tidak setara dengan pernyataan sebaris di C atau C ++, yang tujuannya adalah dengan meneruskan alokasi tumpukan fungsi selama pemanggilan untuk alasan kinerja.

Sintaksis

Sintaks fungsi lambda hanya berisi satu pernyataan, yaitu sebagai berikut -

lambda [arg1 [,arg2,.....argn]]:expression

Berikut adalah contoh untuk menunjukkan cara kerja bentuk fungsi lambda -

#!/usr/bin/python

# Function definition is here
sum = lambda arg1, arg2: arg1 + arg2;

# Now you can call sum as a function
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Value of total :  30
Value of total :  40

The pengembalian Pernyataan

Pernyataan return [ekspresi] keluar dari suatu fungsi, secara opsional meneruskan ekspresi ke pemanggil. Pernyataan return tanpa argumen sama dengan return None.

Semua contoh di atas tidak mengembalikan nilai apa pun. Anda dapat mengembalikan nilai dari fungsi sebagai berikut -

#!/usr/bin/python

# Function definition is here
def sum( arg1, arg2 ):
   # Add both the parameters and return them."
   total = arg1 + arg2
   print "Inside the function : ", total
   return total;

# Now you can call sum function
total = sum( 10, 20 );
print "Outside the function : ", total

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Inside the function :  30
Outside the function :  30

Ruang Lingkup Variabel

Semua variabel dalam program mungkin tidak dapat diakses di semua lokasi dalam program itu. Ini tergantung di mana Anda telah mendeklarasikan variabel.

Cakupan variabel menentukan porsi program tempat Anda dapat mengakses pengenal tertentu. Ada dua cakupan dasar variabel di Python -

  • Variabel global
  • Variabel lokal

Variabel Global vs. Lokal

Variabel yang ditentukan di dalam badan fungsi memiliki cakupan lokal, dan variabel yang ditentukan di luar memiliki cakupan global.

Ini berarti bahwa variabel lokal hanya dapat diakses di dalam fungsi yang dideklarasikan, sedangkan variabel global dapat diakses di seluruh badan program oleh semua fungsi. Saat Anda memanggil sebuah fungsi, variabel yang dideklarasikan di dalamnya akan dimasukkan ke dalam ruang lingkup. Berikut adalah contoh sederhana -

#!/usr/bin/python

total = 0; # This is global variable.
# Function definition is here
def sum( arg1, arg2 ):
   # Add both the parameters and return them."
   total = arg1 + arg2; # Here total is local variable.
   print "Inside the function local total : ", total
   return total;

# Now you can call sum function
sum( 10, 20 );
print "Outside the function global total : ", total

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Inside the function local total :  30
Outside the function global total :  0

Sebuah modul memungkinkan Anda untuk mengatur kode Python Anda secara logis. Pengelompokan kode terkait ke dalam modul membuat kode lebih mudah dipahami dan digunakan. Modul adalah objek Python dengan atribut bernama sewenang-wenang yang dapat Anda ikat dan rujuk.

Sederhananya, modul adalah file yang terdiri dari kode Python. Sebuah modul dapat mendefinisikan fungsi, kelas dan variabel. Modul juga dapat menyertakan kode yang dapat dijalankan.

Contoh

Kode Python untuk modul bernama aname biasanya berada dalam file bernama aname.py . Berikut adalah contoh modul sederhana, support.py

def print_func( par ):
   print "Hello : ", par
   return

The impor Pernyataan

Anda dapat menggunakan file sumber Python apa pun sebagai modul dengan menjalankan pernyataan import di beberapa file sumber Python lainnya. The impor memiliki sintaks berikut -

import module1[, module2[,... moduleN]

Ketika interpreter menemukan pernyataan import, itu mengimpor modul jika modul tersebut ada di jalur pencarian. Jalur pencarian adalah daftar direktori yang ditelusuri penerjemah sebelum mengimpor modul. Misalnya, untuk mengimpor modul support.py, Anda perlu meletakkan perintah berikut di bagian atas skrip -

#!/usr/bin/python

# Import module support
import support

# Now you can call defined function that module as follows
support.print_func("Zara")

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Hello : Zara

Sebuah modul dimuat hanya sekali, berapa kali pun ia diimpor. Ini mencegah eksekusi modul terjadi berulang kali jika terjadi beberapa impor.

The dari ... impor Pernyataan

Pernyataan from Python memungkinkan Anda mengimpor atribut tertentu dari modul ke namespace saat ini. The dari ... impor memiliki sintaks berikut -

from modname import name1[, name2[, ... nameN]]

Misalnya, untuk mengimpor fungsi fibonacci dari fib modul, gunakan pernyataan berikut -

from fib import fibonacci

Pernyataan ini tidak mengimpor seluruh fib modul ke dalam namespace saat ini; itu hanya memperkenalkan item fibonacci dari fib modul ke dalam tabel simbol global dari modul pengimpor.

The dari ... import * Pernyataan

Dimungkinkan juga untuk mengimpor semua nama dari modul ke namespace saat ini dengan menggunakan pernyataan import berikut -

from modname import *

Ini menyediakan cara mudah untuk mengimpor semua item dari modul ke namespace saat ini; Namun, pernyataan ini harus digunakan dengan hemat.

Menemukan Modul

Saat Anda mengimpor modul, interpreter Python mencari modul dalam urutan berikut -

  • Direktori saat ini.

  • Jika modul tidak ditemukan, Python akan mencari setiap direktori dalam variabel shell PYTHONPATH.

  • Jika semuanya gagal, Python memeriksa jalur default. Di UNIX, jalur default ini biasanya / usr / local / lib / python /.

Jalur pencarian modul disimpan dalam sistem modul sys sebagai sys.pathvariabel. Variabel sys.path berisi direktori saat ini, PYTHONPATH, dan default yang bergantung pada penginstalan.

The PYTHONPATH Variabel

PYTHONPATH adalah variabel lingkungan, terdiri dari daftar direktori. Sintaks PYTHONPATH sama dengan sintaks variabel shell PATH.

Ini adalah PYTHONPATH khas dari sistem Windows -

set PYTHONPATH = c:\python20\lib;

Dan ini adalah PYTHONPATH khas dari sistem UNIX -

set PYTHONPATH = /usr/local/lib/python

Namespaces dan Scoping

Variabel adalah nama (pengenal) yang dipetakan ke objek. Sebuah namespace adalah kamus nama variabel (kunci) dan objek mereka yang sesuai (nilai-nilai).

Pernyataan Python dapat mengakses variabel di namespace lokal dan di namespace global . Jika variabel lokal dan global memiliki nama yang sama, variabel lokal membayangi variabel global.

Setiap fungsi memiliki namespace lokalnya sendiri. Metode kelas mengikuti aturan pelingkupan yang sama seperti fungsi biasa.

Python membuat tebakan terpelajar tentang apakah variabel lokal atau global. Ini mengasumsikan bahwa variabel apa pun yang diberi nilai dalam suatu fungsi adalah lokal.

Oleh karena itu, untuk menetapkan nilai ke variabel global dalam suatu fungsi, Anda harus menggunakan pernyataan global terlebih dahulu.

Pernyataan VarName global memberi tahu Python bahwa VarName adalah variabel global. Python berhenti mencari ruang nama lokal untuk variabel.

Misalnya, kami mendefinisikan uang variabel di namespace global. Di dalam fungsi Uang , kami menetapkan nilai Uang , oleh karena itu Python menganggap Uang sebagai variabel lokal. Namun, kami mengakses nilai variabel lokal Money sebelum menyetelnya, sehingga hasilnya adalah UnboundLocalError. Tidak mengomentari pernyataan global memperbaiki masalah.

#!/usr/bin/python

Money = 2000
def AddMoney():
   # Uncomment the following line to fix the code:
   # global Money
   Money = Money + 1

print Money
AddMoney()
print Money

Fungsi dir ()

Fungsi built-in dir () mengembalikan daftar string yang diurutkan berisi nama yang ditentukan oleh modul.

Daftar tersebut berisi nama semua modul, variabel dan fungsi yang didefinisikan dalam sebuah modul. Berikut adalah contoh sederhana -

#!/usr/bin/python

# Import built-in module math
import math

content = dir(math)
print content

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

['__doc__', '__file__', '__name__', 'acos', 'asin', 'atan', 
'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 
'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log',
'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 
'sqrt', 'tan', 'tanh']

Di sini, variabel string khusus __name__ adalah nama modul, dan __file__ adalah nama file darimana modul dimuat.

The GLOBALS () dan penduduk setempat () Fungsi

Fungsi global () dan lokal () bisa digunakan untuk mengembalikan nama di ruang nama global dan lokal bergantung pada lokasi dari mana mereka dipanggil.

Jika local () dipanggil dari dalam suatu fungsi, itu akan mengembalikan semua nama yang bisa diakses secara lokal dari fungsi itu.

Jika global () dipanggil dari dalam suatu fungsi, itu akan mengembalikan semua nama yang dapat diakses secara global dari fungsi itu.

Jenis kembalian dari kedua fungsi ini adalah kamus. Oleh karena itu, nama dapat diekstraksi menggunakan fungsi keys ().

The reload () Fungsi

Saat modul diimpor ke dalam skrip, kode di bagian tingkat atas modul hanya dijalankan satu kali.

Oleh karena itu, jika Anda ingin menjalankan ulang kode tingkat atas dalam sebuah modul, Anda dapat menggunakan fungsi reload () . Fungsi reload () mengimpor modul yang sebelumnya diimpor lagi. Sintaks dari fungsi reload () adalah ini -

reload(module_name)

Di sini, module_name adalah nama modul yang ingin Anda muat ulang dan bukan string yang berisi nama modul. Misalnya, untuk memuat ulang modul hello , lakukan hal berikut -

reload(hello)

Paket dengan Python

Paket adalah struktur direktori file hierarki yang mendefinisikan satu lingkungan aplikasi Python yang terdiri dari modul dan subpaket dan sub-subpaket, dan seterusnya.

Pertimbangkan file Pots.py tersedia di direktori Telepon . File ini memiliki baris kode sumber berikut -

#!/usr/bin/python

def Pots():
   print "I'm Pots Phone"

Dengan cara serupa, kami memiliki dua file lain yang memiliki fungsi berbeda dengan nama yang sama seperti di atas -

  • File Phone / Isdn.py memiliki fungsi Isdn ()

  • File telepon / G3.py memiliki fungsi G3 ()

Sekarang, buat satu file lagi __init__.py di direktori Telepon -

  • Phone/__init__.py

Untuk membuat semua fungsi Anda tersedia ketika Anda telah mengimpor Telepon, Anda perlu memasukkan pernyataan impor eksplisit di __init__.py sebagai berikut -

from Pots import Pots
from Isdn import Isdn
from G3 import G3

Setelah Anda menambahkan baris ini ke __init__.py, Anda memiliki semua kelas ini tersedia saat Anda mengimpor paket Telepon.

#!/usr/bin/python

# Now import your Phone Package.
import Phone

Phone.Pots()
Phone.Isdn()
Phone.G3()

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone

Dalam contoh di atas, kami telah mengambil contoh dari satu fungsi di setiap file, tetapi Anda dapat menyimpan banyak fungsi di file Anda. Anda juga dapat menentukan kelas Python yang berbeda dalam file tersebut dan kemudian Anda dapat membuat paket Anda dari kelas tersebut.

Bab ini mencakup semua fungsi I / O dasar yang tersedia dengan Python. Untuk fungsi lainnya, silakan merujuk ke dokumentasi Python standar.

Mencetak ke Layar

Cara termudah untuk menghasilkan keluaran adalah dengan menggunakan pernyataan print di mana Anda dapat melewatkan nol atau lebih ekspresi yang dipisahkan dengan koma. Fungsi ini mengubah ekspresi yang Anda berikan menjadi string dan menulis hasilnya ke output standar sebagai berikut -

#!/usr/bin/python

print "Python is really a great language,", "isn't it?"

Ini menghasilkan hasil berikut di layar standar Anda -

Python is really a great language, isn't it?

Membaca Input Keyboard

Python menyediakan dua fungsi built-in untuk membaca sebaris teks dari input standar, yang secara default berasal dari keyboard. Fungsi-fungsi ini adalah -

  • raw_input
  • input

The raw_input Fungsi

Fungsi raw_input ([prompt]) membaca satu baris dari input standar dan mengembalikannya sebagai string (menghapus baris baru yang tertinggal).

#!/usr/bin/python

str = raw_input("Enter your input: ")
print "Received input is : ", str

Ini meminta Anda untuk memasukkan string apa pun dan itu akan menampilkan string yang sama di layar. Saat saya mengetik "Hello Python!", Outputnya seperti ini -

Enter your input: Hello Python
Received input is :  Hello Python

The masukan Fungsi

Fungsi input ([prompt]) sama dengan raw_input, kecuali bahwa ini mengasumsikan input adalah ekspresi Python yang valid dan mengembalikan hasil yang dievaluasi kepada Anda.

#!/usr/bin/python

str = input("Enter your input: ")
print "Received input is : ", str

Ini akan menghasilkan hasil berikut terhadap input yang dimasukkan -

Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is :  [10, 20, 30, 40]

Membuka dan Menutup File

Sampai saat ini, Anda telah membaca dan menulis dengan standar input dan output. Sekarang, kita akan melihat bagaimana menggunakan file data aktual.

Python menyediakan fungsi dan metode dasar yang diperlukan untuk memanipulasi file secara default. Anda dapat melakukan sebagian besar manipulasi file menggunakan filefile obyek.

The terbuka Fungsi

Sebelum Anda dapat membaca atau menulis file, Anda harus membukanya menggunakan fungsi open () bawaan Python . Fungsi ini membuat filefile objek, yang akan digunakan untuk memanggil metode dukungan lain yang terkait dengannya.

Sintaksis

file object = open(file_name [, access_mode][, buffering])

Berikut adalah detail parameter -

  • file_name - Argumen nama_file adalah nilai string yang berisi nama file yang ingin Anda akses.

  • access_mode- Access_mode menentukan mode di mana file harus dibuka, misalnya, membaca, menulis, menambahkan, dll. Daftar lengkap kemungkinan nilai diberikan di bawah ini dalam tabel. Ini adalah parameter opsional dan mode akses file default adalah baca (r).

  • buffering- Jika nilai buffering disetel ke 0, tidak ada buffering yang terjadi. Jika nilai buffering adalah 1, buffering baris dilakukan saat mengakses file. Jika Anda menentukan nilai buffering sebagai integer yang lebih besar dari 1, maka tindakan buffering dilakukan dengan ukuran buffer yang ditunjukkan. Jika negatif, ukuran buffer adalah default sistem (perilaku default).

Berikut adalah daftar berbagai mode membuka file -

Sr.No. Mode & Deskripsi
1

r

Membuka file untuk membaca saja. Penunjuk file ditempatkan di awal file. Ini adalah mode default.

2

rb

Membuka file untuk membaca hanya dalam format biner. Penunjuk file ditempatkan di awal file. Ini adalah mode default.

3

r+

Membuka file untuk membaca dan menulis. Penunjuk file ditempatkan di awal file.

4

rb+

Membuka file untuk membaca dan menulis dalam format biner. Penunjuk file ditempatkan di awal file.

5

w

Membuka file untuk menulis saja. Menimpa file jika file tersebut ada. Jika file tidak ada, buat file baru untuk menulis.

6

wb

Membuka file untuk menulis hanya dalam format biner. Menimpa file jika file tersebut ada. Jika file tidak ada, buat file baru untuk menulis.

7

w+

Membuka file untuk menulis dan membaca. Menimpa file yang ada jika file tersebut ada. Jika file tidak ada, buat file baru untuk membaca dan menulis.

8

wb+

Membuka file untuk menulis dan membaca dalam format biner. Menimpa file yang ada jika file tersebut ada. Jika file tidak ada, buat file baru untuk membaca dan menulis.

9

a

Membuka file untuk ditambahkan. Penunjuk file berada di akhir file jika file tersebut ada. Artinya, file tersebut dalam mode tambahkan. Jika file tidak ada, itu membuat file baru untuk ditulis.

10

ab

Membuka file untuk ditambahkan dalam format biner. Penunjuk file berada di akhir file jika file tersebut ada. Artinya, file tersebut dalam mode tambahkan. Jika file tidak ada, itu membuat file baru untuk ditulis.

11

a+

Membuka file untuk menambahkan dan membaca. Penunjuk file berada di akhir file jika file tersebut ada. File terbuka dalam mode tambahkan. Jika file tidak ada, itu membuat file baru untuk membaca dan menulis.

12

ab+

Membuka file untuk menambahkan dan membaca dalam format biner. Penunjuk file berada di akhir file jika file tersebut ada. File terbuka dalam mode tambahkan. Jika file tidak ada, itu membuat file baru untuk membaca dan menulis.

The File Object Atribut

Setelah file dibuka dan Anda memiliki satu objek file , Anda bisa mendapatkan berbagai informasi yang terkait dengan file tersebut.

Berikut adalah daftar semua atribut yang terkait dengan objek file -

Sr.No. Atribut & Deskripsi
1

file.closed

Mengembalikan nilai benar jika file ditutup, salah jika tidak.

2

file.mode

Mengembalikan mode akses dengan file mana yang dibuka.

3

file.name

Mengembalikan nama file.

4

file.softspace

Menampilkan false jika spasi secara eksplisit diperlukan dengan print, true jika tidak.

Contoh

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name
print "Closed or not : ", fo.closed
print "Opening mode : ", fo.mode
print "Softspace flag : ", fo.softspace

Ini menghasilkan hasil sebagai berikut -

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb
Softspace flag :  0

The dekat () Method

Metode close () dari objek file membersihkan informasi yang tidak tertulis dan menutup objek file, setelah itu tidak ada lagi penulisan yang dapat dilakukan.

Python secara otomatis menutup file ketika objek referensi file dipindahkan ke file lain. Ini adalah praktik yang baik untuk menggunakan metode close () untuk menutup file.

Sintaksis

fileObject.close()

Contoh

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name

# Close opend file
fo.close()

Ini menghasilkan hasil sebagai berikut -

Name of the file:  foo.txt

Membaca dan Menulis File

The berkas objek menyediakan satu set metode akses untuk membuat hidup kita lebih mudah. Kita akan melihat bagaimana menggunakan metode read () dan write () untuk membaca dan menulis file.

The write () Method

Metode write () menulis string apa pun ke file yang terbuka. Penting untuk diperhatikan bahwa string Python dapat memiliki data biner dan bukan hanya teks.

Metode write () tidak menambahkan karakter baris baru ('\ n') ke akhir string -

Sintaksis

fileObject.write(string)

Di sini, parameter yang dilewatkan adalah konten yang akan ditulis ke dalam file yang dibuka.

Contoh

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

Metode di atas akan membuat file foo.txt dan akan menulis konten yang diberikan dalam file itu dan akhirnya akan menutup file itu. Jika Anda akan membuka file ini, itu akan memiliki konten berikut.

Python is a great language.
Yeah its great!!

The read () Method

Metode read () membaca string dari file yang terbuka. Penting untuk diperhatikan bahwa string Python dapat memiliki data biner. selain dari data teks.

Sintaksis

fileObject.read([count])

Di sini, parameter yang dilewatkan adalah jumlah byte yang akan dibaca dari file yang dibuka. Metode ini mulai membaca dari awal file dan jika hitungan hilang, maka ia mencoba membaca sebanyak mungkin, mungkin sampai akhir file.

Contoh

Mari kita ambil file foo.txt , yang kita buat di atas.

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend file
fo.close()

Ini menghasilkan hasil sebagai berikut -

Read String is :  Python is

Posisi File

Metode tell () memberi tahu Anda posisi saat ini di dalam file; dengan kata lain, pembacaan atau penulisan berikutnya akan terjadi pada banyak byte dari awal file.

Metode seek (offset [, from]) mengubah posisi file saat ini. The mengimbangi argumen menunjukkan jumlah byte untuk dipindahkan. The dari argumen menentukan posisi referensi dari mana byte yang dipindahkan.

Jika from diset ke 0, berarti menggunakan awal file sebagai posisi referensi dan 1 berarti menggunakan posisi saat ini sebagai posisi referensi dan jika diatur ke 2 maka bagian akhir file akan diambil sebagai posisi referensi .

Contoh

Mari kita ambil file foo.txt yang sudah kita buat di atas.

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print "Read String is : ", str

# Check current position
position = fo.tell()
print "Current file position : ", position

# Reposition pointer at the beginning once again
position = fo.seek(0, 0);
str = fo.read(10)
print "Again read String is : ", str
# Close opend file
fo.close()

Ini menghasilkan hasil sebagai berikut -

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

Mengganti Nama dan Menghapus File

Python os modul menyediakan metode yang membantu Anda melakukan operasi pemrosesan file, seperti mengganti nama dan menghapus file.

Untuk menggunakan modul ini, Anda perlu mengimpornya terlebih dahulu dan kemudian Anda dapat memanggil fungsi terkait.

Metode rename ()

Metode rename () mengambil dua argumen, nama file saat ini dan nama file baru.

Sintaksis

os.rename(current_file_name, new_file_name)

Contoh

Berikut adalah contoh untuk mengganti nama file test1.txt yang ada -

#!/usr/bin/python
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

The hapus () Method

Anda bisa menggunakan metode remove () untuk menghapus file dengan memberikan nama file yang akan dihapus sebagai argumen.

Sintaksis

os.remove(file_name)

Contoh

Berikut adalah contoh untuk menghapus file test2.txt yang ada -

#!/usr/bin/python
import os

# Delete file test2.txt
os.remove("text2.txt")

Direktori dengan Python

Semua file terdapat dalam berbagai direktori, dan Python juga tidak memiliki masalah untuk menangani ini. Ituos module memiliki beberapa metode yang membantu Anda membuat, menghapus, dan mengubah direktori.

The mkdir () Method

Anda bisa menggunakan metode mkdir () dariosmodul untuk membuat direktori di direktori saat ini. Anda perlu memberikan argumen ke metode ini yang berisi nama direktori yang akan dibuat.

Sintaksis

os.mkdir("newdir")

Contoh

Berikut adalah contoh untuk membuat pengujian direktori di direktori saat ini -

#!/usr/bin/python
import os

# Create a directory "test"
os.mkdir("test")

The chdir () Method

Anda dapat menggunakan metode chdir () untuk mengubah direktori saat ini. Metode chdir () mengambil argumen, yaitu nama direktori yang ingin Anda jadikan direktori saat ini.

Sintaksis

os.chdir("newdir")

Contoh

Berikut adalah contoh untuk masuk ke direktori "/ home / newdir" -

#!/usr/bin/python
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

The getcwd () Method

Metode getcwd () menampilkan direktori kerja saat ini.

Sintaksis

os.getcwd()

Contoh

Berikut adalah contoh untuk memberikan direktori saat ini -

#!/usr/bin/python
import os

# This would give location of the current directory
os.getcwd()

The rmdir () Method

Metode rmdir () menghapus direktori, yang diberikan sebagai argumen dalam metode.

Sebelum menghapus direktori, semua konten di dalamnya harus dibuang.

Sintaksis

os.rmdir('dirname')

Contoh

Berikut adalah contoh untuk menghapus direktori "/ tmp / test". Diperlukan untuk memberikan nama direktori yang memenuhi syarat, jika tidak maka akan mencari direktori itu di direktori saat ini.

#!/usr/bin/python
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

Metode Terkait File & Direktori

Ada tiga sumber penting, yang menyediakan berbagai macam metode utilitas untuk menangani dan memanipulasi file & direktori pada sistem operasi Windows dan Unix. Mereka adalah sebagai berikut -

  • Metode Objek File : Objek file menyediakan fungsi untuk memanipulasi file.

  • Metode Objek OS : Ini menyediakan metode untuk memproses file serta direktori.

Python menyediakan dua fitur yang sangat penting untuk menangani kesalahan tak terduga dalam program Python Anda dan untuk menambahkan kemampuan debugging di dalamnya -

  • Exception Handling- Ini akan dibahas dalam tutorial ini. Berikut adalah daftar Pengecualian standar yang tersedia di Python: Pengecualian Standar .

  • Assertions- Ini akan dibahas dalam tutorial Assertions in Python .

Daftar Pengecualian Standar -

Sr.No. Nama & Deskripsi Pengecualian
1

Exception

Kelas dasar untuk semua pengecualian

2

StopIteration

Dibesarkan ketika metode next () dari sebuah iterator tidak menunjuk ke objek apa pun.

3

SystemExit

Dibesarkan oleh fungsi sys.exit ().

4

StandardError

Kelas dasar untuk semua pengecualian bawaan kecuali StopIteration dan SystemExit.

5

ArithmeticError

Kelas dasar untuk semua kesalahan yang terjadi untuk perhitungan numerik.

6

OverflowError

Dibesarkan saat penghitungan melebihi batas maksimum untuk tipe numerik.

7

FloatingPointError

Dibesarkan saat kalkulasi floating point gagal.

8

ZeroDivisionError

Dibesarkan saat pembagian atau modulo dengan nol terjadi untuk semua tipe numerik.

9

AssertionError

Dibesarkan jika terjadi kegagalan pada pernyataan Assert.

10

AttributeError

Dibesarkan jika terjadi kegagalan referensi atau penetapan atribut.

11

EOFError

Dibesarkan ketika tidak ada input baik dari fungsi raw_input () atau input () dan akhir file tercapai.

12

ImportError

Dibesarkan saat pernyataan impor gagal.

13

KeyboardInterrupt

Dibesarkan saat pengguna mengganggu eksekusi program, biasanya dengan menekan Ctrl + c.

14

LookupError

Kelas dasar untuk semua kesalahan pencarian.

15

IndexError

Dibesarkan saat indeks tidak ditemukan secara berurutan.

16

KeyError

Dibesarkan ketika kunci yang ditentukan tidak ditemukan dalam kamus.

17

NameError

Dibesarkan saat pengenal tidak ditemukan di namespace lokal atau global.

18

UnboundLocalError

Dibesarkan saat mencoba mengakses variabel lokal dalam fungsi atau metode tetapi tidak ada nilai yang ditetapkan padanya.

19

EnvironmentError

Kelas dasar untuk semua pengecualian yang terjadi di luar lingkungan Python.

20

IOError

Dibesarkan saat operasi input / output gagal, seperti pernyataan cetak atau fungsi open () saat mencoba membuka file yang tidak ada.

21

IOError

Dibesarkan untuk kesalahan terkait sistem operasi.

22

SyntaxError

Dibesarkan saat ada kesalahan dalam sintaksis Python.

23

IndentationError

Dibesarkan saat indentasi tidak ditentukan dengan benar.

24

SystemError

Dibesarkan ketika juru bahasa menemukan masalah internal, tetapi ketika kesalahan ini ditemui, juru bahasa Python tidak keluar.

25

SystemExit

Dibesarkan saat interpreter Python ditutup dengan menggunakan fungsi sys.exit (). Jika tidak ditangani dalam kode, menyebabkan interpreter keluar.

26

TypeError

Dibesarkan saat operasi atau fungsi dicoba yang tidak valid untuk tipe data yang ditentukan.

27

ValueError

Dibesarkan ketika fungsi bawaan untuk tipe data memiliki tipe argumen yang valid, tetapi argumen memiliki nilai yang tidak valid ditentukan.

28

RuntimeError

Dibesarkan saat kesalahan yang dihasilkan tidak termasuk dalam kategori apa pun.

29

NotImplementedError

Dibesarkan saat metode abstrak yang perlu diterapkan di kelas yang diwariskan tidak benar-benar diterapkan.

Pernyataan dengan Python

Sebuah pernyataan adalah pemeriksaan kewarasan yang dapat Anda hidupkan atau matikan setelah Anda selesai dengan pengujian program Anda.

Cara termudah untuk memikirkan suatu pernyataan adalah dengan menyamakannya dengan a raise-ifpernyataan (atau lebih tepatnya, pernyataan naikkan jika tidak). Sebuah ekspresi diuji, dan jika hasilnya salah, pengecualian akan dimunculkan.

Penegasan dilakukan oleh pernyataan assert, kata kunci terbaru untuk Python, yang diperkenalkan di versi 1.5.

Pemrogram sering menempatkan pernyataan di awal fungsi untuk memeriksa masukan yang valid, dan setelah panggilan fungsi untuk memeriksa keluaran yang valid.

The menegaskan Pernyataan

Ketika menemukan pernyataan assert, Python mengevaluasi ekspresi yang menyertainya, yang semoga benar. Jika ekspresinya salah, Python memunculkan pengecualian AssertionError .

Sintaks untuk assert adalah -

assert Expression[, Arguments]

Jika pernyataan gagal, Python menggunakan ArgumentExpression sebagai argumen untuk AssertionError. Pengecualian AssertionError dapat ditangkap dan ditangani seperti pengecualian lainnya menggunakan pernyataan coba-kecuali, tetapi jika tidak ditangani, mereka akan menghentikan program dan menghasilkan pelacakan balik.

Contoh

Berikut adalah fungsi yang mengubah suhu dari derajat Kelvin ke derajat Fahrenheit. Karena nol derajat Kelvin sama dinginnya dengan yang didapat, fungsinya menjamin jika melihat suhu negatif -

#!/usr/bin/python
def KelvinToFahrenheit(Temperature):
   assert (Temperature >= 0),"Colder than absolute zero!"
   return ((Temperature-273)*1.8)+32
print KelvinToFahrenheit(273)
print int(KelvinToFahrenheit(505.78))
print KelvinToFahrenheit(-5)

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

32.0
451
Traceback (most recent call last):
File "test.py", line 9, in <module>
print KelvinToFahrenheit(-5)
File "test.py", line 4, in KelvinToFahrenheit
assert (Temperature >= 0),"Colder than absolute zero!"
AssertionError: Colder than absolute zero!

Apa itu Pengecualian?

Pengecualian adalah peristiwa, yang terjadi selama pelaksanaan program yang mengganggu aliran normal instruksi program. Secara umum, ketika skrip Python menghadapi situasi yang tidak dapat diatasi, itu menimbulkan pengecualian. Pengecualian adalah objek Python yang merepresentasikan kesalahan.

Ketika skrip Python memunculkan pengecualian, ia harus segera menangani pengecualian tersebut jika tidak, ia akan berhenti dan berhenti.

Menangani pengecualian

Jika Anda memiliki beberapa kode mencurigakan yang dapat menimbulkan pengecualian, Anda dapat mempertahankan program Anda dengan menempatkan kode yang mencurigakan ditry:blok. Setelah mencoba: blok, sertakanexcept: pernyataan, diikuti dengan blok kode yang menangani masalah seelegan mungkin.

Sintaksis

Berikut adalah sintaks sederhana dari percobaan .... kecuali ... blok lain -

try:
   You do your operations here;
   ......................
except ExceptionI:
   If there is ExceptionI, then execute this block.
except ExceptionII:
   If there is ExceptionII, then execute this block.
   ......................
else:
   If there is no exception then execute this block.

Berikut adalah beberapa poin penting tentang sintaks yang disebutkan di atas -

  • Pernyataan percobaan tunggal dapat memiliki beberapa pernyataan kecuali. Ini berguna ketika blok percobaan berisi pernyataan yang mungkin memunculkan tipe pengecualian yang berbeda.

  • Anda juga dapat memberikan klausa pengecualian umum, yang menangani pengecualian apa pun.

  • Setelah klausa pengecualian, Anda dapat menyertakan klausa lain. Kode di blok else dijalankan jika kode di blok try: tidak memunculkan eksepsi.

  • Blok else adalah tempat yang baik untuk kode yang tidak perlu mencoba: perlindungan blok.

Contoh

Contoh ini membuka file, menulis konten di, file dan keluar dengan anggun karena tidak ada masalah sama sekali -

#!/usr/bin/python

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"
   fh.close()

Ini menghasilkan hasil sebagai berikut -

Written content in the file successfully

Contoh

Contoh ini mencoba membuka file di mana Anda tidak memiliki izin menulis, sehingga menimbulkan pengecualian -

#!/usr/bin/python

try:
   fh = open("testfile", "r")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print "Error: can\'t find file or read data"
else:
   print "Written content in the file successfully"

Ini menghasilkan hasil sebagai berikut -

Error: can't find file or read data

The kecuali Clause dengan No Pengecualian

Anda juga dapat menggunakan pernyataan kecuali tanpa pengecualian yang didefinisikan sebagai berikut -

try:
   You do your operations here;
   ......................
except:
   If there is any exception, then execute this block.
   ......................
else:
   If there is no exception then execute this block.

Jenis a try-exceptpernyataan menangkap semua pengecualian yang terjadi. Menggunakan pernyataan coba-pengecualian semacam ini tidak dianggap sebagai praktik pemrograman yang baik, karena ini menangkap semua pengecualian tetapi tidak membuat programmer mengidentifikasi akar penyebab masalah yang mungkin terjadi.

The kecuali Clause dengan Multiple Pengecualian

Anda juga dapat menggunakan pernyataan kecuali yang sama untuk menangani beberapa pengecualian sebagai berikut -

try:
   You do your operations here;
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   If there is any exception from the given exception list, 
   then execute this block.
   ......................
else:
   If there is no exception then execute this block.

Klausul percobaan-akhirnya

Anda dapat menggunakan file finally: blok bersama dengan a try:blok. Blok terakhir adalah tempat untuk meletakkan kode apa pun yang harus dieksekusi, baik blok percobaan memunculkan pengecualian atau tidak. Sintaks dari pernyataan coba-akhirnya adalah ini -

try:
   You do your operations here;
   ......................
   Due to any exception, this may be skipped.
finally:
   This would always be executed.
   ......................

Anda tidak dapat menggunakan klausa else bersama dengan klausa akhirnya.

Contoh

#!/usr/bin/python

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
finally:
   print "Error: can\'t find file or read data"

Jika Anda tidak memiliki izin untuk membuka file dalam mode penulisan, maka ini akan memberikan hasil sebagai berikut -

Error: can't find file or read data

Contoh yang sama dapat ditulis dengan lebih rapi sebagai berikut -

#!/usr/bin/python

try:
   fh = open("testfile", "w")
   try:
      fh.write("This is my test file for exception handling!!")
   finally:
      print "Going to close the file"
      fh.close()
except IOError:
   print "Error: can\'t find file or read data"

Ketika pengecualian dilemparkan ke blok percobaan , eksekusi segera diteruskan ke blok terakhir . Setelah semua pernyataan di blok akhirnya dieksekusi, pengecualian dimunculkan lagi dan ditangani dalam pernyataan kecuali jika ada di lapisan berikutnya yang lebih tinggi dari pernyataan coba- pengecualian .

Argumen Pengecualian

Pengecualian dapat memiliki argumen , yang merupakan nilai yang memberikan informasi tambahan tentang masalah tersebut. Isi argumen berbeda dengan pengecualian. Anda menangkap argumen pengecualian dengan menyediakan variabel di klausa pengecualian sebagai berikut -

try:
   You do your operations here;
   ......................
except ExceptionType, Argument:
   You can print value of Argument here...

Jika Anda menulis kode untuk menangani satu pengecualian, Anda dapat memiliki variabel mengikuti nama pengecualian di pernyataan kecuali. Jika Anda menjebak beberapa pengecualian, Anda dapat memiliki variabel mengikuti tupel pengecualian tersebut.

Variabel ini menerima nilai pengecualian yang sebagian besar berisi penyebab pengecualian. Variabel dapat menerima satu nilai atau beberapa nilai dalam bentuk tupel. Tuple ini biasanya berisi string kesalahan, nomor kesalahan, dan lokasi kesalahan.

Contoh

Berikut adalah contoh untuk satu pengecualian -

#!/usr/bin/python

# Define a function here.
def temp_convert(var):
   try:
      return int(var)
   except ValueError, Argument:
      print "The argument does not contain numbers\n", Argument

# Call above function here.
temp_convert("xyz");

Ini menghasilkan hasil sebagai berikut -

The argument does not contain numbers
invalid literal for int() with base 10: 'xyz'

Meningkatkan Pengecualian

Anda dapat meningkatkan pengecualian dalam beberapa cara dengan menggunakan pernyataan kenaikan gaji. Sintaks umum untuk fileraise pernyataannya adalah sebagai berikut.

Sintaksis

raise [Exception [, args [, traceback]]]

Di sini, Exception adalah jenis pengecualian (misalnya, NameError) dan argumen adalah nilai untuk argumen pengecualian. Argumennya opsional; jika tidak disediakan, argumen pengecualiannya adalah None.

Argumen terakhir, traceback, juga opsional (dan jarang digunakan dalam praktik), dan jika ada, adalah objek traceback yang digunakan untuk pengecualian.

Contoh

Pengecualian bisa berupa string, kelas atau objek. Sebagian besar pengecualian yang dimunculkan inti Python adalah kelas, dengan argumen yang merupakan turunan kelas. Mendefinisikan pengecualian baru cukup mudah dan dapat dilakukan sebagai berikut -

def functionName( level ):
   if level < 1:
      raise "Invalid level!", level
      # The code below to this would not be executed
      # if we raise the exception

Note:Untuk menangkap eksepsi, klausa "kecuali" harus mengacu pada pengecualian yang sama yang dilemparkan baik objek kelas atau string sederhana. Misalnya, untuk menangkap pengecualian di atas, kita harus menulis klausa kecuali sebagai berikut -

try:
   Business Logic here...
except "Invalid level!":
   Exception handling here...
else:
   Rest of the code here...

Pengecualian Buatan Pengguna

Python juga memungkinkan Anda membuat pengecualian Anda sendiri dengan mengambil kelas dari pengecualian bawaan standar.

Berikut adalah contoh yang terkait dengan RuntimeError . Di sini, sebuah kelas dibuat yang merupakan subkelas dari RuntimeError . Ini berguna ketika Anda perlu menampilkan informasi yang lebih spesifik ketika pengecualian tertangkap.

Di blok percobaan, pengecualian yang ditentukan pengguna dimunculkan dan ditangkap di blok kecuali. Variabel e digunakan untuk membuat instance kelas Networkerror .

class Networkerror(RuntimeError):
   def __init__(self, arg):
      self.args = arg

Jadi setelah Anda mendefinisikan kelas di atas, Anda dapat memunculkan pengecualian sebagai berikut -

try:
   raise Networkerror("Bad hostname")
except Networkerror,e:
   print e.args

Python telah menjadi bahasa berorientasi objek sejak ada. Karena itu, membuat dan menggunakan kelas dan objek sangatlah mudah. Bab ini membantu Anda menjadi ahli dalam menggunakan dukungan pemrograman berorientasi objek Python.

Jika Anda tidak memiliki pengalaman sebelumnya dengan pemrograman berorientasi objek (OO), Anda mungkin ingin berkonsultasi dengan kursus pengantar tentang itu atau setidaknya tutorial semacam itu sehingga Anda memiliki pemahaman tentang konsep dasar.

Namun, berikut adalah pengenalan kecil Pemrograman Berorientasi Objek (OOP) untuk membawa Anda dengan cepat -

Tinjauan Terminologi OOP

  • Class- Prototipe yang ditentukan pengguna untuk objek yang mendefinisikan sekumpulan atribut yang mencirikan objek kelas. Atributnya adalah anggota data (variabel kelas dan variabel instan) dan metode, diakses melalui notasi titik.

  • Class variable- Variabel yang digunakan bersama oleh semua instance kelas. Variabel kelas didefinisikan di dalam kelas tetapi di luar metode kelas mana pun. Variabel kelas tidak digunakan sesering variabel instan.

  • Data member - Variabel kelas atau variabel instan yang menyimpan data yang terkait dengan kelas dan objeknya.

  • Function overloading- Penetapan lebih dari satu perilaku ke fungsi tertentu. Operasi yang dilakukan bervariasi menurut tipe objek atau argumen yang terlibat.

  • Instance variable - Variabel yang didefinisikan di dalam metode dan hanya dimiliki oleh instance kelas saat ini.

  • Inheritance - Pengalihan karakteristik kelas ke kelas lain yang diturunkan darinya.

  • Instance- Objek individu dari kelas tertentu. Sebuah object object milik kelas Circle, misalnya, adalah turunan dari class Circle.

  • Instantiation - Pembuatan instance kelas.

  • Method - Jenis fungsi khusus yang didefinisikan dalam definisi kelas.

  • Object- Contoh unik dari struktur data yang ditentukan oleh kelasnya. Objek terdiri dari anggota data (variabel kelas dan variabel instan) dan metode.

  • Operator overloading - Penetapan lebih dari satu fungsi ke operator tertentu.

Membuat Kelas

The kelas pernyataan menciptakan definisi kelas baru. Nama kelas segera mengikuti kelas kata kunci diikuti oleh titik dua sebagai berikut -

class ClassName:
   'Optional class documentation string'
   class_suite
  • Kelas memiliki string dokumentasi, yang dapat diakses melalui ClassName .__ doc__ .

  • The class_suite terdiri dari semua pernyataan komponen mendefinisikan anggota kelas, atribut data dan fungsi.

Contoh

Berikut adalah contoh kelas Python sederhana -

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
  • Variabel empCount adalah variabel kelas yang nilainya dibagi di antara semua instance kelas ini. Ini dapat diakses sebagai Employee.empCount dari dalam kelas atau di luar kelas.

  • Metode pertama __init __ () adalah metode khusus, yang disebut konstruktor kelas atau metode inisialisasi yang dipanggil Python saat Anda membuat instance baru dari kelas ini.

  • Anda mendeklarasikan metode kelas lain seperti fungsi normal dengan pengecualian bahwa argumen pertama untuk setiap metode adalah self . Python menambahkan argumen diri ke daftar untuk Anda; Anda tidak perlu memasukkannya saat memanggil metode.

Membuat Objek Instance

Untuk membuat instance kelas, Anda memanggil kelas tersebut menggunakan nama kelas dan meneruskan argumen apa pun yang diterima metode __init__ .

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)

Mengakses Atribut

Anda mengakses atribut objek menggunakan operator titik dengan objek. Variabel kelas akan diakses menggunakan nama kelas sebagai berikut -

emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount

Sekarang, menyatukan semua konsep -

#!/usr/bin/python

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary

"This would create first object of Employee class"
emp1 = Employee("Zara", 2000)
"This would create second object of Employee class"
emp2 = Employee("Manni", 5000)
emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Name :  Zara ,Salary:  2000
Name :  Manni ,Salary:  5000
Total Employee 2

Anda dapat menambah, menghapus, atau mengubah atribut kelas dan objek kapan saja -

emp1.age = 7  # Add an 'age' attribute.
emp1.age = 8  # Modify 'age' attribute.
del emp1.age  # Delete 'age' attribute.

Alih-alih menggunakan pernyataan normal untuk mengakses atribut, Anda dapat menggunakan fungsi berikut -

  • Itu getattr(obj, name[, default]) - untuk mengakses atribut objek.

  • Itu hasattr(obj,name) - untuk memeriksa apakah ada atribut atau tidak.

  • Itu setattr(obj,name,value)- untuk mengatur atribut. Jika atribut tidak ada, maka atribut itu akan dibuat.

  • Itu delattr(obj, name) - untuk menghapus atribut.

hasattr(emp1, 'age')    # Returns true if 'age' attribute exists
getattr(emp1, 'age')    # Returns value of 'age' attribute
setattr(emp1, 'age', 8) # Set attribute 'age' at 8
delattr(empl, 'age')    # Delete attribute 'age'

Atribut Kelas Bawaan

Setiap kelas Python terus mengikuti atribut bawaan dan mereka dapat diakses menggunakan operator titik seperti atribut lainnya -

  • __dict__ - Kamus yang berisi namespace kelas.

  • __doc__ - String dokumentasi kelas atau tidak ada, jika tidak ditentukan.

  • __name__ - Nama kelas.

  • __module__- Nama modul di mana kelas didefinisikan. Atribut ini adalah "__main__" dalam mode interaktif.

  • __bases__ - Sebuah tupel yang mungkin kosong yang berisi kelas-kelas dasar, dalam urutan kemunculannya dalam daftar kelas dasar.

Untuk kelas di atas, mari kita coba mengakses semua atribut ini -

#!/usr/bin/python

class Employee:
   'Common base class for all employees'
   empCount = 0

   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount

   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary

print "Employee.__doc__:", Employee.__doc__
print "Employee.__name__:", Employee.__name__
print "Employee.__module__:", Employee.__module__
print "Employee.__bases__:", Employee.__bases__
print "Employee.__dict__:", Employee.__dict__

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Employee.__doc__: Common base class for all employees
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: ()
Employee.__dict__: {'__module__': '__main__', 'displayCount':
<function displayCount at 0xb7c84994>, 'empCount': 2, 
'displayEmployee': <function displayEmployee at 0xb7c8441c>, 
'__doc__': 'Common base class for all employees', 
'__init__': <function __init__ at 0xb7c846bc>}

Objek Penghancur (Pengumpulan Sampah)

Python menghapus objek yang tidak diperlukan (tipe bawaan atau instance kelas) secara otomatis untuk mengosongkan ruang memori. Proses di mana Python secara berkala mengambil kembali blok memori yang tidak lagi digunakan disebut Pengumpulan Sampah.

Pengumpul sampah Python berjalan selama eksekusi program dan dipicu saat jumlah referensi objek mencapai nol. Jumlah referensi objek berubah seiring dengan perubahan jumlah alias yang mengarah ke objek tersebut.

Jumlah referensi objek meningkat ketika diberi nama baru atau ditempatkan dalam wadah (daftar, tupel, atau kamus). Jumlah referensi objek berkurang saat dihapus dengan del , referensinya dipindahkan, atau referensinya keluar dari ruang lingkup. Saat jumlah referensi objek mencapai nol, Python mengumpulkannya secara otomatis.

a = 40      # Create object <40>
b = a       # Increase ref. count  of <40> 
c = [b]     # Increase ref. count  of <40> 

del a       # Decrease ref. count  of <40>
b = 100     # Decrease ref. count  of <40> 
c[0] = -1   # Decrease ref. count  of <40>

Anda biasanya tidak akan melihat saat pengumpul sampah menghancurkan instance yatim piatu dan mengambil kembali ruangnya. Tetapi kelas dapat mengimplementasikan metode khusus __del __ () , yang disebut destruktor, yang dipanggil saat instance akan dimusnahkan. Metode ini dapat digunakan untuk membersihkan sumber daya non memori yang digunakan oleh sebuah instance.

Contoh

Penghancur __del __ () ini mencetak nama kelas dari sebuah instance yang akan dimusnahkan -

#!/usr/bin/python

class Point:
   def __init__( self, x=0, y=0):
      self.x = x
      self.y = y
   def __del__(self):
      class_name = self.__class__.__name__
      print class_name, "destroyed"

pt1 = Point()
pt2 = pt1
pt3 = pt1
print id(pt1), id(pt2), id(pt3) # prints the ids of the obejcts
del pt1
del pt2
del pt3

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

3083401324 3083401324 3083401324
Point destroyed

Note- Idealnya, Anda harus mendefinisikan kelas Anda dalam file terpisah, kemudian Anda harus mengimpornya ke file program utama Anda menggunakan pernyataan import .

Warisan Kelas

Daripada memulai dari awal, Anda dapat membuat kelas dengan menurunkannya dari kelas yang sudah ada dengan mencantumkan kelas induk dalam tanda kurung setelah nama kelas baru.

Kelas anak mewarisi atribut dari kelas induknya, dan Anda bisa menggunakan atribut tersebut seolah-olah mereka didefinisikan di kelas anak. Kelas anak juga dapat mengganti anggota data dan metode dari induknya.

Sintaksis

Kelas turunan dideklarasikan seperti kelas induknya; Namun, daftar kelas dasar untuk mewarisi diberikan setelah nama kelas -

class SubClassName (ParentClass1[, ParentClass2, ...]):
   'Optional class documentation string'
   class_suite

Contoh

#!/usr/bin/python

class Parent:        # define parent class
   parentAttr = 100
   def __init__(self):
      print "Calling parent constructor"

   def parentMethod(self):
      print 'Calling parent method'

   def setAttr(self, attr):
      Parent.parentAttr = attr

   def getAttr(self):
      print "Parent attribute :", Parent.parentAttr

class Child(Parent): # define child class
   def __init__(self):
      print "Calling child constructor"

   def childMethod(self):
      print 'Calling child method'

c = Child()          # instance of child
c.childMethod()      # child calls its method
c.parentMethod()     # calls parent's method
c.setAttr(200)       # again call parent's method
c.getAttr()          # again call parent's method

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Calling child constructor
Calling child method
Calling parent method
Parent attribute : 200

Dengan cara serupa, Anda dapat menjalankan kelas dari beberapa kelas induk sebagai berikut -

class A:        # define your class A
.....

class B:         # define your class B
.....

class C(A, B):   # subclass of A and B
.....

Anda bisa menggunakan fungsi issubclass () atau isinstance () untuk memeriksa hubungan dua kelas dan instance.

  • Itu issubclass(sub, sup) fungsi boolean mengembalikan nilai true jika subclass yang diberikan sub memang subclass dari superclass sup.

  • Itu isinstance(obj, Class)Fungsi boolean mengembalikan nilai true jika obj adalah turunan dari kelas kelas atau merupakan turunan dari subkelas Kelas

Metode Utama

Anda selalu dapat mengganti metode kelas induk Anda. Salah satu alasan untuk mengganti metode induk adalah karena Anda mungkin menginginkan fungsionalitas khusus atau berbeda di subkelas Anda.

Contoh

#!/usr/bin/python

class Parent:        # define parent class
   def myMethod(self):
      print 'Calling parent method'

class Child(Parent): # define child class
   def myMethod(self):
      print 'Calling child method'

c = Child()          # instance of child
c.myMethod()         # child calls overridden method

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Calling child method

Metode Base Overloading

Tabel berikut mencantumkan beberapa fungsionalitas umum yang dapat Anda timpa di kelas Anda sendiri -

Sr.No. Metode, Deskripsi & Contoh Panggilan
1

__init__ ( self [,args...] )

Pembuat (dengan argumen opsional apa pun)

Panggilan Sampel: obj = className (args)

2

__del__( self )

Destruktor, menghapus sebuah objek

Contoh Panggilan: del obj

3

__repr__( self )

Representasi string yang berharga

Panggilan Sampel: repr (obj)

4

__str__( self )

Representasi string yang dapat dicetak

Panggilan Sampel: str (obj)

5

__cmp__ ( self, x )

Perbandingan objek

Panggilan Sampel: cmp (obj, x)

Operator Overloading

Misalkan Anda telah membuat kelas Vektor untuk merepresentasikan vektor dua dimensi, apa yang terjadi jika Anda menggunakan operator plus untuk menambahkannya? Kemungkinan besar Python akan membentak Anda.

Anda dapat, bagaimanapun, mendefinisikan metode __add__ di kelas Anda untuk melakukan penambahan vektor dan kemudian operator plus akan berperilaku sesuai harapan -

Contoh

#!/usr/bin/python

class Vector:
   def __init__(self, a, b):
      self.a = a
      self.b = b

   def __str__(self):
      return 'Vector (%d, %d)' % (self.a, self.b)
   
   def __add__(self,other):
      return Vector(self.a + other.a, self.b + other.b)

v1 = Vector(2,10)
v2 = Vector(5,-2)
print v1 + v2

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Vector(7,8)

Menyembunyikan Data

Atribut objek mungkin atau mungkin tidak terlihat di luar definisi kelas. Anda perlu memberi nama atribut dengan awalan garis bawah ganda, dan atribut tersebut tidak akan langsung terlihat oleh orang luar.

Contoh

#!/usr/bin/python

class JustCounter:
   __secretCount = 0
  
   def count(self):
      self.__secretCount += 1
      print self.__secretCount

counter = JustCounter()
counter.count()
counter.count()
print counter.__secretCount

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

1
2
Traceback (most recent call last):
   File "test.py", line 12, in <module>
      print counter.__secretCount
AttributeError: JustCounter instance has no attribute '__secretCount'

Python melindungi anggota tersebut dengan mengubah nama secara internal untuk memasukkan nama kelas. Anda dapat mengakses atribut seperti object._className__attrName . Jika Anda akan mengganti baris terakhir Anda sebagai berikut, maka itu bekerja untuk Anda -

.........................
print counter._JustCounter__secretCount

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

1
2
2

Sebuah ekspresi reguler adalah urutan khusus karakter yang membantu Anda mencocokkan atau menemukan string lain atau set string, menggunakan sintaks khusus yang diadakan di pola. Ekspresi reguler banyak digunakan di dunia UNIX.

Modul remenyediakan dukungan penuh untuk ekspresi reguler seperti Perl dengan Python. Modul re memunculkan eksepsi re.error jika terjadi kesalahan saat menyusun atau menggunakan ekspresi reguler.

Kami akan membahas dua fungsi penting, yang akan digunakan untuk menangani ekspresi reguler. Tetapi hal kecil terlebih dahulu: Ada berbagai karakter, yang akan memiliki arti khusus bila digunakan dalam ekspresi reguler. Untuk menghindari kebingungan saat berurusan dengan ekspresi reguler, kami akan menggunakan String Mentah sebagair'expression'.

The pertandingan Fungsi

Fungsi ini mencoba untuk mencocokkan pola RE ke string dengan flag opsional .

Berikut adalah sintaks untuk fungsi ini -

re.match(pattern, string, flags=0)

Berikut adalah deskripsi parameter -

Sr.No. Parameter & Deskripsi
1

pattern

Ini adalah ekspresi reguler yang akan dicocokkan.

2

string

Ini adalah string yang akan dicari agar cocok dengan pola di awal string.

3

flags

Anda dapat menentukan flag yang berbeda menggunakan bitwise OR (|). Ini adalah pengubah, yang tercantum pada tabel di bawah.

Fungsi re.match mengembalikan amatch keberatan atas kesuksesan, Nonetentang kegagalan. Kami menggunakan fungsi group (num) atau groups () darimatch objek untuk mendapatkan ekspresi yang cocok.

Sr.No. Metode & Deskripsi Objek Pertandingan
1

group(num=0)

Metode ini mengembalikan seluruh pertandingan (atau subkelompok tertentu num)

2

groups()

Metode ini mengembalikan semua subkelompok yang cocok dalam tupel (kosong jika tidak ada)

Contoh

#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

The pencarian Fungsi

Fungsi ini mencari kemunculan pertama pola RE dalam string dengan flag opsional .

Berikut adalah sintaks untuk fungsi ini -

re.search(pattern, string, flags=0)

Berikut adalah deskripsi parameter -

Sr.No. Parameter & Deskripsi
1

pattern

Ini adalah ekspresi reguler yang akan dicocokkan.

2

string

Ini adalah string yang akan dicari agar cocok dengan pola di mana pun dalam string.

3

flags

Anda dapat menentukan flag yang berbeda menggunakan bitwise OR (|). Ini adalah pengubah, yang tercantum pada tabel di bawah.

Fungsi re.search mengembalikan amatch keberatan atas kesuksesan, nonetentang kegagalan. Kami menggunakan fungsi group (num) atau groups () darimatch objek untuk mendapatkan ekspresi yang cocok.

Sr.No. Metode & Deskripsi Objek Pertandingan
1

group(num=0)

Metode ini mengembalikan seluruh pertandingan (atau subkelompok tertentu num)

2

groups()

Metode ini mengembalikan semua subkelompok yang cocok dalam tupel (kosong jika tidak ada)

Contoh

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Mencocokkan versus Pencarian

Python menawarkan dua operasi primitif berbeda berdasarkan ekspresi reguler: match memeriksa kecocokan hanya di awal string, sementara search memeriksa kecocokan di mana saja dalam string (ini yang Perl lakukan secara default).

Contoh

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

searchObj = re.search( r'dogs', line, re.M|re.I)
if searchObj:
   print "search --> searchObj.group() : ", searchObj.group()
else:
   print "Nothing found!!"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

No match!!
search --> searchObj.group() :  dogs

Cari dan Ganti

Salah satu yang terpenting re metode yang menggunakan ekspresi reguler adalah sub.

Sintaksis

re.sub(pattern, repl, string, max=0)

Metode ini menggantikan semua kemunculan pola RE dalam string dengan repl , menggantikan semua kemunculan kecuali max disediakan. Metode ini mengembalikan string yang dimodifikasi.

Contoh

#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Phone Num :  2004-959-559
Phone Num :  2004959559

Pengubah Ekspresi Reguler: Bendera Opsi

Literal ekspresi reguler dapat menyertakan pengubah opsional untuk mengontrol berbagai aspek pencocokan. Pengubah ditentukan sebagai bendera opsional. Anda dapat menyediakan beberapa pengubah menggunakan OR (|) eksklusif, seperti yang ditunjukkan sebelumnya dan dapat diwakili oleh salah satu dari ini -

Sr.No. Pengubah & Deskripsi
1

re.I

Melakukan pencocokan tidak peka huruf besar / kecil.

2

re.L

Menafsirkan kata-kata sesuai dengan lokal saat ini. Interpretasi ini mempengaruhi kelompok abjad (\ w dan \ W), serta perilaku batas kata (\ b dan \ B).

3

re.M

Membuat $ cocok dengan akhir baris (bukan hanya akhir string) dan membuat ^ cocok dengan awal baris apa pun (bukan hanya awal string).

4

re.S

Membuat titik (titik) cocok dengan karakter apa pun, termasuk baris baru.

5

re.U

Menafsirkan huruf sesuai dengan kumpulan karakter Unicode. Bendera ini mempengaruhi perilaku \ w, \ W, \ b, \ B.

6

re.X

Mengizinkan sintaks ekspresi reguler yang "manis". Ini mengabaikan spasi kosong (kecuali di dalam set [] atau ketika di-escape oleh garis miring terbalik) dan memperlakukan unescaped # sebagai penanda komentar.

Pola Ekspresi Reguler

Kecuali untuk karakter kontrol, (+ ? . * ^ $ ( ) [ ] { } | \), semua karakter cocok dengan dirinya sendiri. Anda dapat meloloskan diri dari karakter kontrol dengan mengawalinya dengan garis miring terbalik.

Tabel berikut mencantumkan sintaks ekspresi reguler yang tersedia di Python -

Sr.No. Pola & Deskripsi
1

^

Cocok di awal baris.

2

$

Pertandingan akhir baris.

3

.

Cocok dengan satu karakter apa pun kecuali baris baru. Menggunakan opsi m memungkinkannya untuk mencocokkan baris baru juga.

4

[...]

Mencocokkan salah satu karakter dalam tanda kurung.

5

[^...]

Cocok dengan satu karakter apa pun yang tidak ada dalam tanda kurung

6

re*

Cocok dengan 0 atau lebih kemunculan ekspresi sebelumnya.

7

re+

Cocok dengan 1 atau lebih kemunculan ekspresi sebelumnya.

8

re?

Cocok dengan 0 atau 1 kemunculan ekspresi sebelumnya.

9

re{ n}

Cocok persis dengan n jumlah kemunculan ekspresi sebelumnya.

10

re{ n,}

Cocok dengan n atau lebih kemunculan ekspresi sebelumnya.

11

re{ n, m}

Cocok setidaknya n dan paling banyak m kemunculan ekspresi sebelumnya.

12

a| b

Cocok dengan a atau b.

13

(re)

Kelompokkan ekspresi reguler dan ingat teks yang cocok.

14

(?imx)

Mengaktifkan sementara opsi i, m, atau x dalam ekspresi reguler. Jika di dalam tanda kurung, hanya area tersebut yang terpengaruh.

15

(?-imx)

Menonaktifkan sementara opsi i, m, atau x dalam ekspresi reguler. Jika di dalam tanda kurung, hanya area tersebut yang terpengaruh.

16

(?: re)

Kelompokkan ekspresi reguler tanpa mengingat teks yang cocok.

17

(?imx: re)

Mengaktifkan sementara opsi i, m, atau x dalam tanda kurung.

18

(?-imx: re)

Matikan sementara opsi i, m, atau x dalam tanda kurung.

19

(?#...)

Komentar.

20

(?= re)

Menentukan posisi menggunakan pola. Tidak memiliki jangkauan.

21

(?! re)

Menentukan posisi menggunakan negasi pola. Tidak memiliki jangkauan.

22

(?> re)

Mencocokkan pola independen tanpa mundur.

23

\w

Cocok dengan karakter kata.

24

\W

Cocok dengan karakter bukan kata.

25

\s

Cocok dengan spasi. Setara dengan [\ t \ n \ r \ f].

26

\S

Cocok dengan nonwhitespace.

27

\d

Cocok dengan angka. Setara dengan [0-9].

28

\D

Cocok dengan nondigits.

29

\A

Cocok dengan awal string.

30

\Z

Cocok dengan ujung string. Jika ada baris baru, itu cocok sebelum baris baru.

31

\z

Cocok dengan ujung string.

32

\G

Mencocokkan poin di mana pertandingan terakhir selesai.

33

\b

Mencocokkan batas kata saat berada di luar tanda kurung. Cocok dengan spasi mundur (0x08) saat berada di dalam tanda kurung.

34

\B

Cocok dengan batasan bukan kata.

35

\n, \t, etc.

Cocok dengan baris baru, carriage return, tab, dll.

36

\1...\9

Cocok dengan subekspresi yang dikelompokkan ke-n.

37

\10

Cocok dengan subekspresi yang dikelompokkan ke-n jika sudah cocok. Jika tidak mengacu pada representasi oktal dari kode karakter.

Contoh Ekspresi Reguler

Karakter literal

Sr.No. Contoh & Deskripsi
1

python

Cocokkan "python".

Kelas karakter

Sr.No. Contoh & Deskripsi
1

[Pp]ython

Cocokkan "Python" atau "python"

2

rub[ye]

Cocokkan "ruby" atau "rube"

3

[aeiou]

Cocokkan salah satu vokal huruf kecil

4

[0-9]

Cocok dengan angka apa pun; sama seperti [0123456789]

5

[a-z]

Cocok dengan semua huruf kecil ASCII

6

[A-Z]

Cocok dengan semua huruf besar ASCII

7

[a-zA-Z0-9]

Cocokkan salah satu dari yang di atas

8

[^aeiou]

Cocokkan apa pun selain vokal huruf kecil

9

[^0-9]

Cocokkan apa pun selain digit

Kelas Karakter Khusus

Sr.No. Contoh & Deskripsi
1

.

Cocok dengan semua karakter kecuali baris baru

2

\d

Cocokkan angka: [0-9]

3

\D

Cocokkan tanpa digit: [^ 0-9]

4

\s

Cocok dengan karakter spasi: [\ t \ r \ n \ f]

5

\S

Cocokkan bukan spasi: [^ \ t \ r \ n \ f]

6

\w

Cocokkan satu karakter kata: [A-Za-z0-9_]

7

\W

Cocok dengan karakter bukan kata: [^ A-Za-z0-9_]

Kasus Pengulangan

Sr.No. Contoh & Deskripsi
1

ruby?

Cocokkan "gosok" atau "ruby": y adalah opsional

2

ruby*

Cocokkan "gosok" ditambah 0 atau lebih ys

3

ruby+

Cocokkan "gosok" ditambah 1 atau lebih ys

4

\d{3}

Cocok persis dengan 3 digit

5

\d{3,}

Cocokkan 3 digit atau lebih

6

\d{3,5}

Cocokkan 3, 4, atau 5 digit

Pengulangan nongreedy

Ini cocok dengan jumlah pengulangan terkecil -

Sr.No. Contoh & Deskripsi
1

<.*>

Pengulangan serakah: cocok dengan "<python> perl>"

2

<.*?>

Nongreedy: mencocokkan "<python>" dengan "<python> perl>"

Pengelompokan dengan Tanda Kurung

Sr.No. Contoh & Deskripsi
1

\D\d+

Tidak ada grup: + berulang \ d

2

(\D\d)+

Dikelompokkan: + mengulangi \ D \ d pasangan

3

([Pp]ython(, )?)+

Cocokkan "Python", "Python, python, python", dll.

Referensi latar

Ini cocok dengan grup yang sebelumnya cocok lagi -

Sr.No. Contoh & Deskripsi
1

([Pp])ython&\1ails

Cocokkan python & pails atau Python & Pails

2

(['"])[^\1]*\1

String kutip tunggal atau ganda. \ 1 cocok dengan apa pun yang cocok dengan grup pertama. \ 2 cocok dengan apapun yang cocok dengan grup ke-2, dll.

Alternatif

Sr.No. Contoh & Deskripsi
1

python|perl

Cocokkan "python" atau "perl"

2

rub(y|le))

Cocokkan "ruby" atau "ruble"

3

Python(!+|\?)

"Python" diikuti oleh satu atau lebih! atau satu?

Jangkar

Ini perlu menentukan posisi pertandingan.

Sr.No. Contoh & Deskripsi
1

^Python

Cocokkan "Python" di awal string atau baris internal

2

Python$

Cocokkan "Python" di akhir string atau baris

3

\APython

Cocokkan "Python" di awal string

4

Python\Z

Cocokkan "Python" di akhir string

5

\bPython\b

Cocokkan "Python" di batas kata

6

\brub\B

\ B adalah batas bukan kata: cocokkan "gosok" dalam "rube" dan "ruby" tetapi tidak sendirian

7

Python(?=!)

Cocokkan "Python", jika diikuti dengan tanda seru.

8

Python(?!!)

Cocokkan "Python", jika tidak diikuti dengan tanda seru.

Sintaks Khusus dengan Tanda Kurung

Sr.No. Contoh & Deskripsi
1

R(?#comment)

Cocok dengan "R". Sisanya adalah komentar

2

R(?i)uby

Tidak peka huruf besar / kecil saat mencocokkan "uby"

3

R(?i:uby)

Sama seperti di atas

4

rub(?:y|le))

Kelompokkan hanya tanpa membuat \ 1 referensi latar

Common Gateway Interface, atau CGI, adalah seperangkat standar yang menentukan bagaimana informasi dipertukarkan antara server web dan skrip kustom. Spesifikasi CGI saat ini dikelola oleh NCSA.

Apakah CGI itu?

  • Common Gateway Interface, atau CGI, adalah standar untuk program gateway eksternal untuk berinteraksi dengan server informasi seperti server HTTP.

  • Versi saat ini adalah CGI / 1.1 dan CGI / 1.2 sedang dalam proses.

Menjelajah web

Untuk memahami konsep CGI, mari kita lihat apa yang terjadi ketika kita mengklik hyper link untuk menjelajahi halaman web atau URL tertentu.

  • Browser Anda menghubungi server web HTTP dan meminta URL, yaitu nama file.

  • Server Web mem-parsing URL dan mencari nama file. Jika menemukan file itu kemudian mengirimkannya kembali ke browser, jika tidak mengirimkan pesan kesalahan yang menunjukkan bahwa Anda meminta file yang salah.

  • Browser web menerima respons dari server web dan menampilkan file yang diterima atau pesan kesalahan.

Namun, dimungkinkan untuk mengatur server HTTP sehingga setiap kali file dalam direktori tertentu diminta, file tersebut tidak dikirim kembali; alih-alih itu dijalankan sebagai sebuah program, dan apa pun yang dihasilkan program itu dikirim kembali untuk ditampilkan oleh browser Anda. Fungsi ini disebut Common Gateway Interface atau CGI dan programnya disebut skrip CGI. Program CGI ini dapat berupa Skrip Python, Skrip PERL, Skrip Shell, program C atau C ++, dll.

Diagram Arsitektur CGI

Dukungan dan Konfigurasi Server Web

Sebelum Anda melanjutkan dengan Pemrograman CGI, pastikan bahwa Server Web Anda mendukung CGI dan dikonfigurasi untuk menangani Program CGI. Semua Program CGI yang akan dijalankan oleh server HTTP disimpan dalam direktori yang telah dikonfigurasi sebelumnya. Direktori ini disebut Direktori CGI dan menurut konvensi disebut / var / www / cgi-bin. Secara konvensi, file CGI memiliki ekstensi sebagai.cgi, tetapi Anda dapat menyimpan file Anda dengan ekstensi python .py demikian juga.

Secara default, server Linux dikonfigurasi untuk menjalankan hanya skrip di direktori cgi-bin di / var / www. Jika Anda ingin menentukan direktori lain untuk menjalankan skrip CGI Anda, beri komentar pada baris berikut di file httpd.conf -

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options ExecCGI
   Order allow,deny
   Allow from all
</Directory>

<Directory "/var/www/cgi-bin">
Options All
</Directory>

Di sini, kami berasumsi bahwa Anda memiliki Server Web dan berjalan dengan sukses dan Anda dapat menjalankan program CGI lain seperti Perl atau Shell, dll.

Program CGI Pertama

Berikut ini tautan sederhana, yang ditautkan ke skrip CGI yang disebut hello.py . File ini disimpan di direktori / var / www / cgi-bin dan memiliki konten berikut. Sebelum menjalankan program CGI Anda, pastikan Anda telah mengubah mode file menggunakanchmod 755 hello.py Perintah UNIX untuk membuat file dapat dieksekusi.

#!/usr/bin/python

print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello World - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello World! This is my first CGI program</h2>'
print '</body>'
print '</html>'

Jika Anda mengklik hello.py, maka ini menghasilkan keluaran berikut -

Halo Dunia! Ini adalah program CGI pertama saya

Skrip hello.py ini adalah skrip Python sederhana, yang menulis outputnya pada file STDOUT, yaitu layar. Ada satu fitur penting dan tambahan yang tersedia yaitu baris pertama yang akan dicetakContent-type:text/html\r\n\r\n. Baris ini dikirim kembali ke browser dan menentukan tipe konten yang akan ditampilkan di layar browser.

Sekarang Anda pasti sudah mengerti konsep dasar CGI dan Anda bisa menulis banyak program CGI yang rumit menggunakan Python. Script ini dapat berinteraksi dengan sistem eksternal lain juga untuk bertukar informasi seperti RDBMS.

Header HTTP

Garis Content-type:text/html\r\n\r\nadalah bagian dari header HTTP yang dikirim ke browser untuk memahami konten. Semua header HTTP akan dalam bentuk berikut -

HTTP Field Name: Field Content

For Example
Content-type: text/html\r\n\r\n

Ada beberapa header HTTP penting lainnya, yang akan sering Anda gunakan dalam Pemrograman CGI.

Sr.No. Header & Deskripsi
1

Content-type:

String MIME yang menentukan format file yang dikembalikan. Contohnya adalah Content-type: text / html

2

Expires: Date

Tanggal informasi menjadi tidak valid. Ini digunakan oleh browser untuk memutuskan kapan halaman perlu di-refresh. String tanggal yang valid dalam format 01 Jan 1998 12:00:00 GMT.

3

Location: URL

URL yang dikembalikan, bukan URL yang diminta. Anda dapat menggunakan bidang ini untuk mengarahkan permintaan ke file apa pun.

4

Last-modified: Date

Tanggal modifikasi terakhir sumber daya.

5

Content-length: N

Panjang, dalam byte, dari data yang dikembalikan. Browser menggunakan nilai ini untuk melaporkan perkiraan waktu download suatu file.

6

Set-Cookie: String

Atur cookie melewati string

Variabel Lingkungan CGI

Semua program CGI memiliki akses ke variabel lingkungan berikut. Variabel ini memainkan peran penting saat menulis program CGI apa pun.

Sr.No. Nama & Deskripsi Variabel
1

CONTENT_TYPE

Jenis data konten. Digunakan saat klien mengirim konten terlampir ke server. Misalnya, unggah file.

2

CONTENT_LENGTH

Panjang informasi kueri. Ini hanya tersedia untuk permintaan POST.

3

HTTP_COOKIE

Mengembalikan cookie yang ditetapkan dalam bentuk pasangan kunci & nilai.

4

HTTP_USER_AGENT

Bidang header permintaan Agen-Pengguna berisi informasi tentang agen pengguna yang membuat permintaan. Itu adalah nama browser web.

5

PATH_INFO

Jalur untuk skrip CGI.

6

QUERY_STRING

Informasi yang dikodekan URL yang dikirim dengan permintaan metode GET.

7

REMOTE_ADDR

Alamat IP dari remote host yang membuat permintaan. Ini adalah logging berguna atau untuk otentikasi.

8

REMOTE_HOST

Nama host yang sepenuhnya memenuhi syarat yang membuat permintaan. Jika informasi ini tidak tersedia, maka REMOTE_ADDR dapat digunakan untuk mendapatkan alamat IR.

9

REQUEST_METHOD

Metode yang digunakan untuk membuat permintaan. Metode yang paling umum adalah GET dan POST.

10

SCRIPT_FILENAME

Jalur lengkap ke skrip CGI.

11

SCRIPT_NAME

Nama skrip CGI.

12

SERVER_NAME

Nama host atau Alamat IP server

13

SERVER_SOFTWARE

Nama dan versi perangkat lunak yang dijalankan server.

Berikut adalah program CGI kecil untuk mencantumkan semua variabel CGI. Klik link ini untuk melihat hasil Get Environment

#!/usr/bin/python

import os

print "Content-type: text/html\r\n\r\n";
print "<font size=+1>Environment</font><\br>";
for param in os.environ.keys():
   print "<b>%20s</b>: %s<\br>" % (param, os.environ[param])

GET dan Metode POST

Anda pasti pernah menjumpai banyak situasi ketika Anda perlu meneruskan beberapa informasi dari browser Anda ke server web dan akhirnya ke Program CGI Anda. Paling sering, browser menggunakan dua metode untuk mengirimkan informasi ini ke server web. Metode ini adalah Metode GET dan Metode POST.

Meneruskan Informasi menggunakan metode GET

Metode GET mengirimkan informasi pengguna yang dikodekan yang ditambahkan ke permintaan halaman. Halaman dan informasi yang dikodekan dipisahkan oleh? karakter sebagai berikut -

http://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2

Metode GET adalah metode default untuk meneruskan informasi dari browser ke server web dan menghasilkan string panjang yang muncul di kotak Lokasi: browser Anda. Jangan pernah menggunakan metode GET jika Anda memiliki kata sandi atau informasi sensitif lainnya untuk diteruskan ke server. Metode GET memiliki batasan ukuran: hanya 1024 karakter yang dapat dikirim dalam string permintaan. Metode GET mengirimkan informasi menggunakan header QUERY_STRING dan akan dapat diakses di Program CGI Anda melalui variabel lingkungan QUERY_STRING.

Anda dapat menyampaikan informasi hanya dengan menggabungkan pasangan kunci dan nilai bersama dengan URL apa pun atau Anda dapat menggunakan tag <FORM> HTML untuk menyampaikan informasi menggunakan metode GET.

Contoh URL Sederhana: Dapatkan Metode

Berikut adalah URL sederhana, yang meneruskan dua nilai ke program hello_get.py menggunakan metode GET.

/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI

Dibawah ini hello_get.pyscript untuk menangani input yang diberikan oleh web browser. Kami akan menggunakancgi modul, yang membuatnya sangat mudah untuk mengakses informasi yang diteruskan -

#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
first_name = form.getvalue('first_name')
last_name  = form.getvalue('last_name')

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"

Ini akan menghasilkan hasil sebagai berikut -

Halo ZARA ALI

Contoh FORMULIR Sederhana: Metode GET

Contoh ini meneruskan dua nilai menggunakan HTML FORM dan tombol kirim. Kami menggunakan skrip CGI yang sama hello_get.py untuk menangani masukan ini.

<form action = "/cgi-bin/hello_get.py" method = "get">
First Name: <input type = "text" name = "first_name">  <br />

Last Name: <input type = "text" name = "last_name" />
<input type = "submit" value = "Submit" />
</form>

Berikut adalah output sebenarnya dari form di atas, Anda memasukkan First Name dan Last Name lalu klik tombol submit untuk melihat hasilnya.

Meneruskan Informasi Menggunakan Metode POST

Metode yang umumnya lebih dapat diandalkan untuk menyampaikan informasi ke program CGI adalah metode POST. Ini mengemas informasi dengan cara yang persis sama seperti metode GET, tetapi alih-alih mengirimkannya sebagai string teks setelah? di URL itu mengirimkannya sebagai pesan terpisah. Pesan ini masuk ke skrip CGI dalam bentuk input standar.

Di bawah ini adalah script hello_get.py yang sama yang menangani metode GET dan POST.

#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
first_name = form.getvalue('first_name')
last_name  = form.getvalue('last_name')

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"

Mari kita ambil lagi contoh yang sama seperti di atas yang meneruskan dua nilai menggunakan HTML FORM dan tombol kirim. Kami menggunakan skrip CGI yang sama hello_get.py untuk menangani masukan ini.

<form action = "/cgi-bin/hello_get.py" method = "post">
First Name: <input type = "text" name = "first_name"><br />
Last Name: <input type = "text" name = "last_name" />

<input type = "submit" value = "Submit" />
</form>

Berikut adalah keluaran aktual dari formulir di atas. Anda memasukkan Nama Depan dan Belakang dan kemudian klik tombol kirim untuk melihat hasilnya.

Meneruskan Data Kotak Centang ke Program CGI

Kotak centang digunakan ketika lebih dari satu opsi diperlukan untuk dipilih.

Berikut adalah contoh kode HTML untuk formulir dengan dua kotak centang -

<form action = "/cgi-bin/checkbox.cgi" method = "POST" target = "_blank">
<input type = "checkbox" name = "maths" value = "on" /> Maths
<input type = "checkbox" name = "physics" value = "on" /> Physics
<input type = "submit" value = "Select Subject" />
</form>

Hasil dari kode ini adalah bentuk berikut -

Di bawah ini adalah skrip checkbox.cgi untuk menangani masukan yang diberikan oleh browser web untuk tombol kotak centang.

#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
if form.getvalue('maths'):
   math_flag = "ON"
else:
   math_flag = "OFF"

if form.getvalue('physics'):
   physics_flag = "ON"
else:
   physics_flag = "OFF"

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Checkbox - Third CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> CheckBox Maths is : %s</h2>" % math_flag
print "<h2> CheckBox Physics is : %s</h2>" % physics_flag
print "</body>"
print "</html>"

Meneruskan Data Tombol Radio ke Program CGI

Tombol Radio digunakan ketika hanya satu opsi yang diperlukan untuk dipilih.

Berikut adalah contoh kode HTML untuk formulir dengan dua tombol radio -

<form action = "/cgi-bin/radiobutton.py" method = "post" target = "_blank">
<input type = "radio" name = "subject" value = "maths" /> Maths
<input type = "radio" name = "subject" value = "physics" /> Physics
<input type = "submit" value = "Select Subject" />
</form>

Hasil dari kode ini adalah bentuk berikut -

Di bawah ini adalah script radiobutton.py untuk menangani masukan yang diberikan oleh browser web untuk tombol radio -

#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
if form.getvalue('subject'):
   subject = form.getvalue('subject')
else:
   subject = "Not set"

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Radio - Fourth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Selected Subject is %s</h2>" % subject
print "</body>"
print "</html>"

Meneruskan Data Area Teks ke Program CGI

Elemen TEXTAREA digunakan ketika teks multiline harus diteruskan ke Program CGI.

Berikut adalah contoh kode HTML untuk formulir dengan kotak TEXTAREA -

<form action = "/cgi-bin/textarea.py" method = "post" target = "_blank">
<textarea name = "textcontent" cols = "40" rows = "4">
Type your text here...
</textarea>
<input type = "submit" value = "Submit" />
</form>

Hasil dari kode ini adalah bentuk berikut -

Di bawah ini adalah script textarea.cgi untuk menangani input yang diberikan oleh web browser -

#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
if form.getvalue('textcontent'):
   text_content = form.getvalue('textcontent')
else:
   text_content = "Not entered"

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>";
print "<title>Text Area - Fifth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Entered Text Content is %s</h2>" % text_content
print "</body>"

Meneruskan Data Drop Down Box ke Program CGI

Drop Down Box digunakan ketika kami memiliki banyak opsi yang tersedia tetapi hanya satu atau dua yang akan dipilih.

Berikut adalah contoh kode HTML untuk formulir dengan satu kotak drop-down -

<form action = "/cgi-bin/dropdown.py" method = "post" target = "_blank">
<select name = "dropdown">
<option value = "Maths" selected>Maths</option>
<option value = "Physics">Physics</option>
</select>
<input type = "submit" value = "Submit"/>
</form>

Hasil dari kode ini adalah bentuk berikut -

Di bawah ini adalah script dropdown.py untuk menangani input yang diberikan oleh web browser.

#!/usr/bin/python

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields
if form.getvalue('dropdown'):
   subject = form.getvalue('dropdown')
else:
   subject = "Not entered"

print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Dropdown Box - Sixth CGI Program</title>"
print "</head>"
print "<body>"
print "<h2> Selected Subject is %s</h2>" % subject
print "</body>"
print "</html>"

Menggunakan Cookies di CGI

Protokol HTTP adalah protokol tanpa negara. Untuk situs web komersial, diperlukan untuk menjaga informasi sesi di antara halaman yang berbeda. Misalnya, satu pendaftaran pengguna berakhir setelah menyelesaikan banyak halaman. Bagaimana cara menjaga informasi sesi pengguna di semua halaman web?

Dalam banyak situasi, menggunakan cookie adalah metode paling efisien untuk mengingat dan melacak preferensi, pembelian, komisi, dan informasi lain yang diperlukan untuk pengalaman pengunjung atau statistik situs yang lebih baik.

Bagaimana itu bekerja?

Server Anda mengirimkan beberapa data ke browser pengunjung dalam bentuk cookie. Browser mungkin menerima cookie. Jika ya, itu disimpan sebagai catatan teks biasa di hard drive pengunjung. Sekarang, saat pengunjung tiba di halaman lain di situs Anda, cookie tersedia untuk diambil. Setelah diambil, server Anda tahu / mengingat apa yang disimpan.

Cookie adalah catatan data teks biasa dari 5 bidang dengan panjang variabel -

  • Expires- Tanggal cookie akan kedaluwarsa. Jika ini kosong, cookie akan kedaluwarsa saat pengunjung keluar dari browser.

  • Domain - Nama domain situs Anda.

  • Path- Jalur ke direktori atau halaman web yang menyetel cookie. Ini mungkin kosong jika Anda ingin mengambil cookie dari direktori atau halaman manapun.

  • Secure- Jika bidang ini berisi kata "aman", maka cookie hanya dapat diambil dengan server aman. Jika bidang ini kosong, tidak ada batasan seperti itu.

  • Name=Value - Cookie diatur dan diambil dalam bentuk pasangan kunci dan nilai.

Menyiapkan Cookies

Sangat mudah untuk mengirim cookie ke browser. Cookie ini dikirim bersama HTTP Header sebelum ke bidang Jenis konten. Dengan asumsi Anda ingin menyetel UserID dan Kata Sandi sebagai cookie. Pengaturan cookie dilakukan sebagai berikut -

#!/usr/bin/python

print "Set-Cookie:UserID = XYZ;\r\n"
print "Set-Cookie:Password = XYZ123;\r\n"
print "Set-Cookie:Expires = Tuesday, 31-Dec-2007 23:12:40 GMT";\r\n"
print "Set-Cookie:Domain = www.tutorialspoint.com;\r\n"
print "Set-Cookie:Path = /perl;\n"
print "Content-type:text/html\r\n\r\n"
...........Rest of the HTML Content....

Dari contoh ini, Anda pasti sudah memahami cara menyetel cookie. Kita gunakanSet-Cookie Header HTTP untuk menyetel cookie.

Ini opsional untuk menyetel atribut cookie seperti Kedaluwarsa, Domain, dan Jalur. Perlu dicatat bahwa cookie diatur sebelum mengirim garis ajaib"Content-type:text/html\r\n\r\n.

Mengambil Cookies

Sangat mudah untuk mengambil semua cookie yang disetel. Cookie disimpan dalam variabel lingkungan CGI HTTP_COOKIE dan mereka akan memiliki bentuk berikut -

key1 = value1;key2 = value2;key3 = value3....

Berikut ini contoh cara mengambil cookie.

#!/usr/bin/python

# Import modules for CGI handling 
from os import environ
import cgi, cgitb

if environ.has_key('HTTP_COOKIE'):
   for cookie in map(strip, split(environ['HTTP_COOKIE'], ';')):
      (key, value ) = split(cookie, '=');
      if key == "UserID":
         user_id = value

      if key == "Password":
         password = value

print "User ID  = %s" % user_id
print "Password = %s" % password

Ini menghasilkan hasil berikut untuk cookie yang disetel oleh skrip di atas -

User ID = XYZ
Password = XYZ123

Contoh Unggahan File

Untuk mengupload file, formulir HTML harus memiliki atribut enctype yang disetel ke multipart/form-data. Tag masukan dengan jenis file membuat tombol "Jelajahi".

<html>
<body>
   <form enctype = "multipart/form-data" 
                     action = "save_file.py" method = "post">
   <p>File: <input type = "file" name = "filename" /></p>
   <p><input type = "submit" value = "Upload" /></p>
   </form>
</body>
</html>

Hasil dari kode ini adalah bentuk berikut -

Contoh di atas telah dinonaktifkan dengan sengaja untuk menyimpan orang yang mengupload file di server kami, tetapi Anda dapat mencoba kode di atas dengan server Anda.

Ini skripnya save_file.py untuk menangani unggahan file -

#!/usr/bin/python

import cgi, os
import cgitb; cgitb.enable()

form = cgi.FieldStorage()

# Get filename here.
fileitem = form['filename']

# Test if the file was uploaded
if fileitem.filename:
   # strip leading path from file name to avoid 
   # directory traversal attacks
   fn = os.path.basename(fileitem.filename)
   open('/tmp/' + fn, 'wb').write(fileitem.file.read())

   message = 'The file "' + fn + '" was uploaded successfully'
   
else:
   message = 'No file was uploaded'
   
print """\
Content-Type: text/html\n
<html>
<body>
   <p>%s</p>
</body>
</html>
""" % (message,)

Jika Anda menjalankan skrip di atas pada Unix / Linux, maka Anda perlu berhati-hati saat mengganti pemisah file sebagai berikut, jika tidak, pada mesin windows Anda di atas pernyataan open () akan berfungsi dengan baik.

fn = os.path.basename(fileitem.filename.replace("\\", "/" ))

Bagaimana Cara Meningkatkan Kotak Dialog "Unduh File"?

Kadang-kadang, Anda ingin memberikan opsi di mana pengguna dapat mengklik tautan dan itu akan memunculkan kotak dialog "Unduh File" kepada pengguna alih-alih menampilkan konten yang sebenarnya. Ini sangat mudah dan dapat dicapai melalui header HTTP. Header HTTP ini berbeda dengan header yang disebutkan di bagian sebelumnya.

Misalnya, jika Anda ingin membuat file FileName file dapat diunduh dari tautan yang diberikan, maka sintaksnya adalah sebagai berikut -

#!/usr/bin/python

# HTTP Header
print "Content-Type:application/octet-stream; name = \"FileName\"\r\n";
print "Content-Disposition: attachment; filename = \"FileName\"\r\n\n";

# Actual File Content will go here.
fo = open("foo.txt", "rb")

str = fo.read();
print str

# Close opend file
fo.close()

Semoga Anda menikmati tutorial ini. Jika ya, kirimkan tanggapan Anda di: Hubungi Kami

Standar Python untuk antarmuka database adalah Python DB-API. Kebanyakan antarmuka database Python mematuhi standar ini.

Anda dapat memilih database yang tepat untuk aplikasi Anda. Python Database API mendukung berbagai server database seperti -

  • GadFly
  • mSQL
  • MySQL
  • PostgreSQL
  • Microsoft SQL Server 2000
  • Informix
  • Interbase
  • Oracle
  • Sybase

Berikut adalah daftar antarmuka database Python yang tersedia: Python Database Interfaces dan API . Anda harus mengunduh modul DB API terpisah untuk setiap database yang perlu Anda akses. Misalnya, jika Anda perlu mengakses database Oracle serta database MySQL, Anda harus mendownload modul database Oracle dan MySQL.

DB API menyediakan standar minimal untuk bekerja dengan database menggunakan struktur dan sintaks Python jika memungkinkan. API ini meliputi:

  • Mengimpor modul API.
  • Mendapatkan koneksi dengan database.
  • Menerbitkan pernyataan SQL dan prosedur tersimpan.
  • Menutup koneksi

Kita akan mempelajari semua konsep menggunakan MySQL, jadi mari kita bahas tentang modul MySQLdb.

Apa itu MySQLdb?

MySQLdb adalah antarmuka untuk menghubungkan ke server database MySQL dari Python. Ini mengimplementasikan Python Database API v2.0 dan dibangun di atas MySQL C API.

Bagaimana cara menginstal MySQLdb?

Sebelum melanjutkan, pastikan Anda telah menginstal MySQLdb di komputer Anda. Cukup ketikkan yang berikut ini dalam skrip Python Anda dan jalankan -

#!/usr/bin/python

import MySQLdb

Jika menghasilkan hasil berikut, berarti modul MySQLdb tidak diinstal -

Traceback (most recent call last):
   File "test.py", line 3, in <module>
      import MySQLdb
ImportError: No module named MySQLdb

Untuk menginstal modul MySQLdb, gunakan perintah berikut -

For Ubuntu, use the following command -
$ sudo apt-get install python-pip python-dev libmysqlclient-dev For Fedora, use the following command - $ sudo dnf install python python-devel mysql-devel redhat-rpm-config gcc
For Python command prompt, use the following command -
pip install MySQL-python

Note - Pastikan Anda memiliki hak akses root untuk menginstal modul di atas.

Koneksi Database

Sebelum menghubungkan ke database MySQL, pastikan hal-hal berikut -

  • Anda telah membuat database TESTDB.

  • Anda telah membuat tabel EMPLOYEE di TESTDB.

  • Tabel ini memiliki bidang FIRST_NAME, LAST_NAME, AGE, SEX dan INCOME.

  • ID pengguna "testuser" dan kata sandi "test123" disetel untuk mengakses TESTDB.

  • Modul Python MySQLdb diinstal dengan benar di komputer Anda.

  • Anda telah melalui tutorial MySQL untuk memahami Dasar-Dasar MySQL.

Contoh

Berikut adalah contoh koneksi dengan database MySQL "TESTDB"

#!/usr/bin/python

import MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# execute SQL query using execute() method.
cursor.execute("SELECT VERSION()")

# Fetch a single row using fetchone() method.
data = cursor.fetchone()
print "Database version : %s " % data

# disconnect from server
db.close()

Saat menjalankan skrip ini, ia menghasilkan hasil berikut di mesin Linux saya.

Database version : 5.0.45

Jika koneksi dibuat dengan sumber data, maka Objek Koneksi dikembalikan dan disimpan ke db untuk penggunaan lebih lanjut, jika tidak dbdisetel ke Tidak Ada. Lanjut,db objek digunakan untuk membuat cursorobjek, yang pada gilirannya digunakan untuk mengeksekusi kueri SQL. Akhirnya, sebelum keluar, ini memastikan bahwa koneksi database ditutup dan sumber daya dilepaskan.

Membuat Tabel Database

Setelah koneksi database dibuat, kita siap membuat tabel atau record ke dalam tabel database menggunakan execute metode kursor yang dibuat.

Contoh

Mari kita buat tabel Database EMPLOYEE -

#!/usr/bin/python

import MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# Drop table if it already exist using execute() method.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# Create table as per requirement
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""

cursor.execute(sql)

# disconnect from server
db.close()

Operasi INSERT

Ini diperlukan ketika Anda ingin membuat rekaman Anda ke dalam tabel database.

Contoh

Contoh berikut, mengeksekusi pernyataan SQL INSERT untuk membuat record ke dalam tabel EMPLOYEE -

#!/usr/bin/python

import MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# Prepare SQL query to INSERT a record into the database.
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
   # Execute the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()

# disconnect from server
db.close()

Contoh di atas dapat ditulis sebagai berikut untuk membuat kueri SQL secara dinamis -

#!/usr/bin/python

import MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# Prepare SQL query to INSERT a record into the database.
sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \
       LAST_NAME, AGE, SEX, INCOME) \
       VALUES ('%s', '%s', '%d', '%c', '%d' )" % \
       ('Mac', 'Mohan', 20, 'M', 2000)
try:
   # Execute the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()

# disconnect from server
db.close()

Contoh

Segmen kode berikut adalah bentuk eksekusi lain di mana Anda dapat meneruskan parameter secara langsung -

..................................
user_id = "test123"
password = "password"

con.execute('insert into Login values("%s", "%s")' % \
             (user_id, password))
..................................

BACA Operasi

Operasi BACA pada database apa pun berarti mengambil beberapa informasi berguna dari database.

Setelah koneksi database kami dibuat, Anda siap untuk membuat kueri ke dalam database ini. Anda bisa menggunakan keduanyafetchone() metode untuk mengambil rekaman tunggal atau fetchall() metode untuk mengubah beberapa nilai dari tabel database.

  • fetchone()- Ini mengambil baris berikutnya dari kumpulan hasil kueri. Kumpulan hasil adalah objek yang dikembalikan saat objek kursor digunakan untuk membuat kueri tabel.

  • fetchall()- Ini mengambil semua baris dalam set hasil. Jika beberapa baris telah diekstraksi dari set hasil, maka baris yang tersisa diambil dari set hasil.

  • rowcount - Ini adalah atribut hanya-baca dan mengembalikan jumlah baris yang dipengaruhi oleh metode execute ().

Contoh

Prosedur berikut menanyakan semua catatan dari tabel KARYAWAN yang memiliki gaji lebih dari 1000 -

#!/usr/bin/python

import MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

sql = "SELECT * FROM EMPLOYEE \
       WHERE INCOME > '%d'" % (1000)
try:
   # Execute the SQL command
   cursor.execute(sql)
   # Fetch all the rows in a list of lists.
   results = cursor.fetchall()
   for row in results:
      fname = row[0]
      lname = row[1]
      age = row[2]
      sex = row[3]
      income = row[4]
      # Now print fetched result
      print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \
             (fname, lname, age, sex, income )
except:
   print "Error: unable to fecth data"

# disconnect from server
db.close()

Ini akan menghasilkan hasil sebagai berikut -

fname=Mac, lname=Mohan, age=20, sex=M, income=2000

Perbarui Operasi

UPDATE Operasi pada database apa pun berarti memperbarui satu atau lebih rekaman, yang sudah tersedia dalam database.

Prosedur berikut memperbarui semua catatan yang memiliki SEX sebagai 'M'. Di sini, kami menambah USIA semua pria satu tahun.

Contoh

#!/usr/bin/python

import MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# Prepare SQL query to UPDATE required records
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1
                          WHERE SEX = '%c'" % ('M')
try:
   # Execute the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()

# disconnect from server
db.close()

HAPUS Operasi

Operasi DELETE diperlukan saat Anda ingin menghapus beberapa rekaman dari database Anda. Berikut adalah prosedur untuk menghapus semua record dari KARYAWAN di mana USIA lebih dari 20 -

Contoh

#!/usr/bin/python

import MySQLdb

# Open database connection
db = MySQLdb.connect("localhost","testuser","test123","TESTDB" )

# prepare a cursor object using cursor() method
cursor = db.cursor()

# Prepare SQL query to DELETE required records
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
   # Execute the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()

# disconnect from server
db.close()

Melakukan Transaksi

Transaksi adalah mekanisme yang memastikan konsistensi data. Transaksi memiliki empat properti berikut -

  • Atomicity - Entah transaksi selesai atau tidak ada yang terjadi sama sekali.

  • Consistency - Sebuah transaksi harus dimulai dalam keadaan yang konsisten dan membiarkan sistem dalam keadaan yang konsisten.

  • Isolation - Hasil antara transaksi tidak terlihat di luar transaksi saat ini.

  • Durability - Setelah transaksi dilakukan, efeknya tetap ada, bahkan setelah kegagalan sistem.

Python DB API 2.0 menyediakan dua metode baik melakukan atau rollback transaksi.

Contoh

Anda sudah tahu cara mengimplementasikan transaksi. Ini lagi contoh serupa -

# Prepare SQL query to DELETE required records
sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20)
try:
   # Execute the SQL command
   cursor.execute(sql)
   # Commit your changes in the database
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()

Operasi COMMIT

Komit adalah operasi, yang memberikan sinyal hijau ke database untuk menyelesaikan perubahan, dan setelah operasi ini, tidak ada perubahan yang dapat dikembalikan.

Berikut adalah contoh sederhana untuk menelepon commit metode.

db.commit()

Operasi ROLLBACK

Jika Anda tidak puas dengan satu atau beberapa perubahan dan Anda ingin mengembalikan perubahan itu sepenuhnya, gunakan rollback() metode.

Berikut adalah contoh sederhana untuk menelepon rollback() metode.

db.rollback()

Memutus Database

Untuk memutuskan koneksi Database, gunakan metode close ().

db.close()

Jika koneksi ke database ditutup oleh pengguna dengan metode close (), setiap transaksi yang belum diselesaikan akan dibatalkan oleh DB. Namun, daripada bergantung pada detail implementasi tingkat bawah DB, aplikasi Anda akan lebih baik memanggil commit atau rollback secara eksplisit.

Penanganan Error

Ada banyak sumber kesalahan. Beberapa contoh adalah kesalahan sintaks dalam pernyataan SQL yang dieksekusi, kegagalan koneksi, atau memanggil metode pengambilan untuk pegangan pernyataan yang sudah dibatalkan atau selesai.

DB API mendefinisikan sejumlah kesalahan yang harus ada di setiap modul database. Tabel berikut mencantumkan pengecualian ini.

Sr.No. Pengecualian & Deskripsi
1

Warning

Digunakan untuk masalah non-fatal. Harus membuat subclass StandardError.

2

Error

Kelas dasar untuk kesalahan. Harus membuat subclass StandardError.

3

InterfaceError

Digunakan untuk kesalahan dalam modul database, bukan database itu sendiri. Harus subclass Error.

4

DatabaseError

Digunakan untuk kesalahan dalam database. Harus subclass Error.

5

DataError

Subclass DatabaseError yang mengacu pada kesalahan dalam data.

6

OperationalError

Subclass DatabaseError yang merujuk ke kesalahan seperti hilangnya koneksi ke database. Kesalahan ini umumnya di luar kendali skrip Python.

7

IntegrityError

Subclass DatabaseError untuk situasi yang akan merusak integritas relasional, seperti batasan keunikan atau kunci asing.

8

InternalError

Subkelas DatabaseError yang merujuk ke kesalahan internal modul database, seperti kursor tidak lagi aktif.

9

ProgrammingError

Subkelas DatabaseError yang merujuk ke kesalahan seperti nama tabel yang buruk dan hal-hal lain yang dapat disalahkan dengan aman pada Anda.

10

NotSupportedError

Subkelas DatabaseError yang merujuk pada mencoba memanggil fungsionalitas yang tidak didukung.

Skrip Python Anda harus menangani kesalahan ini, tetapi sebelum menggunakan salah satu pengecualian di atas, pastikan MySQLdb Anda memiliki dukungan untuk pengecualian itu. Anda bisa mendapatkan lebih banyak informasi tentang mereka dengan membaca spesifikasi DB API 2.0.

Python menyediakan dua tingkat akses ke layanan jaringan. Pada level rendah, Anda dapat mengakses dukungan soket dasar di sistem operasi yang mendasarinya, yang memungkinkan Anda mengimplementasikan klien dan server untuk protokol berorientasi koneksi dan tanpa koneksi.

Python juga memiliki pustaka yang menyediakan akses tingkat tinggi ke protokol jaringan tingkat aplikasi tertentu, seperti FTP, HTTP, dan sebagainya.

Bab ini memberi Anda pemahaman tentang konsep paling terkenal dalam Networking - Socket Programming.

Apa Sockets?

Soket adalah titik akhir dari saluran komunikasi dua arah. Soket dapat berkomunikasi dalam suatu proses, antar proses pada mesin yang sama, atau antar proses di benua yang berbeda.

Soket dapat diimplementasikan pada sejumlah jenis saluran yang berbeda: soket domain Unix, TCP, UDP, dan sebagainya. The soket perpustakaan menyediakan kelas khusus untuk menangani angkutan umum serta antarmuka generik untuk menangani sisanya.

Soket memiliki kosakata sendiri -

Sr.No. Istilah & Deskripsi
1

Domain

Keluarga protokol yang digunakan sebagai mekanisme transportasi. Nilai-nilai ini adalah konstanta seperti AF_INET, PF_INET, PF_UNIX, PF_X25, dan seterusnya.

2

type

Jenis komunikasi antara dua titik akhir, biasanya SOCK_STREAM untuk protokol berorientasi sambungan dan SOCK_DGRAM untuk protokol tanpa sambungan.

3

protocol

Biasanya nol, ini dapat digunakan untuk mengidentifikasi varian protokol dalam domain dan tipe.

4

hostname

Pengenal antarmuka jaringan -

  • Sebuah string, yang dapat berupa nama host, alamat titik-titik, atau alamat IPV6 dengan tanda titik dua (dan mungkin titik)

  • String "<broadcast>", yang menentukan alamat INADDR_BROADCAST.

  • String panjang-nol, yang menentukan INADDR_ANY, atau

  • Integer, diartikan sebagai alamat biner dalam urutan byte host.

5

port

Setiap server mendengarkan klien yang memanggil satu atau lebih port. Port bisa berupa nomor port Fixnum, string yang berisi nomor port, atau nama layanan.

The soket Modul

Untuk membuat soket, Anda harus menggunakan fungsi socket.socket () yang tersedia dalam modul socket , yang memiliki sintaks umum -

s = socket.socket (socket_family, socket_type, protocol=0)

Berikut adalah deskripsi parameter -

  • socket_family - Ini adalah AF_UNIX atau AF_INET, seperti yang dijelaskan sebelumnya.

  • socket_type - Ini adalah SOCK_STREAM atau SOCK_DGRAM.

  • protocol - Ini biasanya ditinggalkan, default ke 0.

Setelah Anda memiliki objek soket , maka Anda dapat menggunakan fungsi yang diperlukan untuk membuat program klien atau server Anda. Berikut adalah daftar fungsi yang dibutuhkan -

Metode Soket Server

Sr.No. Metode & Deskripsi
1

s.bind()

Metode ini mengikat alamat (nama host, pasangan nomor port) ke soket.

2

s.listen()

Metode ini menyiapkan dan memulai pendengar TCP.

3

s.accept()

Ini secara pasif menerima koneksi klien TCP, menunggu sampai koneksi tiba (memblokir).

Metode Soket Klien

Sr.No. Metode & Deskripsi
1

s.connect()

Metode ini secara aktif memulai koneksi server TCP.

Metode Soket Umum

Sr.No. Metode & Deskripsi
1

s.recv()

Metode ini menerima pesan TCP

2

s.send()

Metode ini mengirimkan pesan TCP

3

s.recvfrom()

Metode ini menerima pesan UDP

4

s.sendto()

Metode ini mengirimkan pesan UDP

5

s.close()

Metode ini menutup soket

6

socket.gethostname()

Mengembalikan nama host.

Server Sederhana

Untuk menulis server Internet, kami menggunakan socketfungsi yang tersedia dalam modul socket untuk membuat obyek socket. Objek soket kemudian digunakan untuk memanggil fungsi lain untuk menyiapkan server soket.

Sekarang panggil bind(hostname, port)berfungsi untuk menentukan port untuk layanan Anda pada host yang diberikan.

Selanjutnya, panggil metode terima dari objek yang dikembalikan. Metode ini menunggu hingga klien tersambung ke port yang Anda tentukan, dan kemudian mengembalikan objek koneksi yang mewakili koneksi ke klien tersebut.

#!/usr/bin/python           # This is server.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.
s.bind((host, port))        # Bind to the port

s.listen(5)                 # Now wait for client connection.
while True:
   c, addr = s.accept()     # Establish connection with client.
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # Close the connection

Klien Sederhana

Mari kita tulis program klien yang sangat sederhana yang membuka koneksi ke port tertentu 12345 dan host yang diberikan. Ini sangat sederhana untuk membuat klien soket menggunakan fungsi modul soket Python .

Itu socket.connect(hosname, port )membuka koneksi TCP ke nama host di port . Setelah Anda membuka soket, Anda dapat membacanya seperti objek IO lainnya. Setelah selesai, ingatlah untuk menutupnya, karena Anda akan menutup file.

Kode berikut adalah klien yang sangat sederhana yang terhubung ke host dan port tertentu, membaca data yang tersedia dari soket, dan kemudian keluar -

#!/usr/bin/python           # This is client.py file

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345                # Reserve a port for your service.

s.connect((host, port))
print s.recv(1024)
s.close()                  # Close the socket when done

Sekarang jalankan server.py ini di latar belakang dan kemudian jalankan di atas client.py untuk melihat hasilnya.

# Following would start a server in background.
$ python server.py & # Once server is started run client as follows: $ python client.py

Ini akan menghasilkan hasil sebagai berikut -

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Modul Internet Python

Daftar beberapa modul penting dalam pemrograman Jaringan / Internet Python.

Protokol Fungsi umum Port No. Modul Python
HTTP Halaman web 80 httplib, urllib, xmlrpclib
NNTP Berita Usenet 119 nntplib.dll
FTP Transfer file 20 ftplib, urllib
SMTP Mengirim email 25 smtplib.dll
POP3 Mengambil email 110 poplib
IMAP4 Mengambil email 143 imaplib.dll
Telnet Baris perintah 23 telnetlib.dll
Menggali Transfer dokumen 70 gopherlib, urllib

Harap periksa semua pustaka yang disebutkan di atas untuk bekerja dengan protokol FTP, SMTP, POP, dan IMAP.

Bacaan Lebih Lanjut

Ini adalah awal yang cepat dengan Pemrograman Socket. Ini adalah topik yang sangat luas. Dianjurkan untuk melihat tautan berikut untuk menemukan lebih detail -

  • Pemrograman Soket Unix .

  • Pustaka dan Modul Soket Python .

Simple Mail Transfer Protocol (SMTP) adalah protokol yang menangani pengiriman email dan perutean email antar server email.

Python menyediakan smtplib modul, yang mendefinisikan objek sesi klien SMTP yang dapat digunakan untuk mengirim email ke mesin Internet apa pun dengan daemon pendengar SMTP atau ESMTP.

Berikut ini sintaks sederhana untuk membuat satu objek SMTP, yang nantinya dapat digunakan untuk mengirim email -

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

Berikut detail parameternya -

  • host- Ini adalah host yang menjalankan server SMTP Anda. Anda dapat menentukan alamat IP dari host atau nama domain seperti tutorialspoint.com. Ini adalah argumen opsional.

  • port- Jika Anda memberikan argumen host , maka Anda perlu menentukan port, tempat server SMTP mendengarkan. Biasanya port ini akan menjadi 25.

  • local_hostname- Jika server SMTP Anda berjalan di komputer lokal Anda, maka Anda dapat menentukan localhost saja sebagai opsi ini.

Objek SMTP memiliki metode instance yang disebut sendmail, yang biasanya digunakan untuk mengirimkan pesan. Dibutuhkan tiga parameter -

  • The pengirim - Sebuah string dengan alamat pengirim.

  • The penerima - Sebuah daftar string, satu untuk setiap penerima.

  • The Pesan - Pesan sebagai string diformat sebagai ditentukan dalam berbagai RFC.

Contoh

Berikut adalah cara sederhana untuk mengirim satu email menggunakan skrip Python. Coba sekali -

#!/usr/bin/python

import smtplib

sender = '[email protected]'
receivers = ['[email protected]']

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: SMTP e-mail test

This is a test e-mail message.
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

Di sini, Anda telah menempatkan email dasar dalam pesan, menggunakan tanda kutip tiga, berhati-hati dalam memformat header dengan benar. Sebuah email membutuhkanFrom, To, dan Subject header, dipisahkan dari badan email dengan baris kosong.

Untuk mengirim email, Anda menggunakan smtpObj untuk menyambung ke server SMTP di mesin lokal dan kemudian menggunakan metode sendmail bersama dengan pesan, alamat dari, dan alamat tujuan sebagai parameter (meskipun alamat dari dan ke berada di dalam e -mail itu sendiri, ini tidak selalu digunakan untuk merutekan email).

Jika Anda tidak menjalankan server SMTP di komputer lokal Anda, Anda dapat menggunakan klien smtplib untuk berkomunikasi dengan server SMTP jauh. Kecuali jika Anda menggunakan layanan email web (seperti Hotmail atau Yahoo! Mail), penyedia email Anda pasti telah memberi Anda detail server email keluar yang dapat Anda berikan, sebagai berikut -

smtplib.SMTP('mail.your-domain.com', 25)

Mengirim email HTML menggunakan Python

Saat Anda mengirim pesan teks menggunakan Python, maka semua konten diperlakukan sebagai teks sederhana. Meskipun Anda menyertakan tag HTML dalam pesan teks, itu akan ditampilkan sebagai teks sederhana dan tag HTML tidak akan diformat sesuai dengan sintaks HTML. Tetapi Python menyediakan opsi untuk mengirim pesan HTML sebagai pesan HTML yang sebenarnya.

Saat mengirim pesan email, Anda dapat menentukan versi Mime, tipe konten dan set karakter untuk mengirim email HTML.

Contoh

Berikut ini adalah contoh untuk mengirim konten HTML sebagai email. Coba sekali -

#!/usr/bin/python

import smtplib

message = """From: From Person <[email protected]>
To: To Person <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test

This is an e-mail message to be sent in HTML format

<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

Mengirim Lampiran sebagai E-mail

Untuk mengirim e-mail dengan konten campuran perlu diatur Content-type tajuk ke multipart/mixed. Kemudian, bagian teks dan lampiran dapat ditentukan di dalamnyaboundaries.

Batas dimulai dengan dua tanda hubung diikuti dengan nomor unik, yang tidak dapat muncul di bagian pesan email. Batas akhir yang menunjukkan bagian terakhir email juga harus diakhiri dengan dua tanda hubung.

File yang dilampirkan harus dienkode dengan pack("m") berfungsi untuk memiliki pengkodean base64 sebelum transmisi.

Contoh

Berikut ini adalah contoh pengiriman file /tmp/test.txtsebagai lampiran. Coba sekali -

#!/usr/bin/python

import smtplib
import base64

filename = "/tmp/test.txt"

# Read a file and encode it into base64 format
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)  # base64

sender = '[email protected]'
reciever = '[email protected]'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# Define the message action
part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (body,marker)

# Define the attachment section
part3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, reciever, message)
   print "Successfully sent email"
except Exception:
   print "Error: unable to send email"

Menjalankan beberapa utas mirip dengan menjalankan beberapa program berbeda secara bersamaan, tetapi dengan manfaat berikut -

  • Beberapa utas dalam proses berbagi ruang data yang sama dengan utas utama dan oleh karena itu dapat berbagi informasi atau berkomunikasi satu sama lain dengan lebih mudah daripada jika mereka adalah proses yang terpisah.

  • Thread terkadang disebut proses ringan dan tidak membutuhkan banyak overhead memori; mereka lebih murah daripada proses.

Sebuah utas memiliki awal, urutan eksekusi, dan kesimpulan. Ini memiliki penunjuk instruksi yang melacak di mana dalam konteksnya saat ini berjalan.

  • Itu bisa lebih dulu (terputus)

  • Ini sementara dapat ditahan (juga dikenal sebagai tidur) sementara utas lain sedang berjalan - ini disebut melepaskan.

Memulai Thread Baru

Untuk menelurkan utas lain, Anda perlu memanggil metode berikut yang tersedia di modul utas -

thread.start_new_thread ( function, args[, kwargs] )

Panggilan metode ini memungkinkan cara yang cepat dan efisien untuk membuat utas baru di Linux dan Windows.

Panggilan metode segera kembali dan utas anak dimulai dan memanggil fungsi dengan daftar argumen yang diteruskan . Saat fungsi kembali, utas berhenti.

Di sini, args adalah tuple argumen; gunakan tupel kosong untuk memanggil fungsi tanpa memberikan argumen apa pun. kwargs adalah kamus opsional dari argumen kata kunci.

Contoh

#!/usr/bin/python

import thread
import time

# Define a function for the thread
def print_time( threadName, delay):
   count = 0
   while count < 5:
      time.sleep(delay)
      count += 1
      print "%s: %s" % ( threadName, time.ctime(time.time()) )

# Create two threads as follows
try:
   thread.start_new_thread( print_time, ("Thread-1", 2, ) )
   thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
   print "Error: unable to start thread"

while 1:
   pass

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Thread-1: Thu Jan 22 15:42:17 2009
Thread-1: Thu Jan 22 15:42:19 2009
Thread-2: Thu Jan 22 15:42:19 2009
Thread-1: Thu Jan 22 15:42:21 2009
Thread-2: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:25 2009
Thread-2: Thu Jan 22 15:42:27 2009
Thread-2: Thu Jan 22 15:42:31 2009
Thread-2: Thu Jan 22 15:42:35 2009

Meskipun sangat efektif untuk penguliran tingkat rendah, tetapi modul ulir sangat terbatas dibandingkan dengan modul penguliran yang lebih baru.

The Threading Modul

Modul threading yang lebih baru yang disertakan dengan Python 2.4 memberikan dukungan tingkat tinggi yang jauh lebih kuat untuk utas daripada modul utas yang dibahas di bagian sebelumnya.

The threading modul mengekspos semua metode dari benang modul dan menyediakan beberapa metode tambahan -

  • threading.activeCount() - Mengembalikan jumlah objek utas yang aktif.

  • threading.currentThread() - Mengembalikan jumlah objek utas dalam kontrol utas pemanggil.

  • threading.enumerate() - Menampilkan daftar semua objek utas yang saat ini aktif.

Selain metodenya, modul threading memiliki kelas Thread yang mengimplementasikan threading. Metode yang disediakan oleh kelas Thread adalah sebagai berikut -

  • run() - Metode run () adalah titik masuk untuk utas.

  • start() - Metode start () memulai utas dengan memanggil metode run.

  • join([time]) - Join () menunggu utas berakhir.

  • isAlive() - Metode isAlive () memeriksa apakah utas masih dijalankan.

  • getName() - Metode getName () mengembalikan nama utas.

  • setName() - Metode setName () menetapkan nama utas.

Membuat Thread Menggunakan Modul Threading

Untuk mengimplementasikan utas baru menggunakan modul threading, Anda harus melakukan hal berikut -

  • Tentukan subclass baru dari kelas Thread .

  • Ganti metode __init __ (self [, args]) untuk menambahkan argumen tambahan.

  • Kemudian, ganti metode run (self [, args]) untuk mengimplementasikan apa yang harus dilakukan thread saat dimulai.

Setelah Anda membuat subkelas Thread baru , Anda dapat membuat sebuah instance dan kemudian memulai thread baru dengan menjalankan metode start () , yang pada gilirannya akan memanggil metode run () .

Contoh

#!/usr/bin/python

import threading
import time

exitFlag = 0

class myThread (threading.Thread):
   def __init__(self, threadID, name, counter):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.counter = counter
   def run(self):
      print "Starting " + self.name
      print_time(self.name, self.counter, 5)
      print "Exiting " + self.name

def print_time(threadName, counter, delay):
   while counter:
      if exitFlag:
         threadName.exit()
      time.sleep(delay)
      print "%s: %s" % (threadName, time.ctime(time.time()))
      counter -= 1

# Create new threads
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# Start new Threads
thread1.start()
thread2.start()

print "Exiting Main Thread"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Starting Thread-1
Starting Thread-2
Exiting Main Thread
Thread-1: Thu Mar 21 09:10:03 2013
Thread-1: Thu Mar 21 09:10:04 2013
Thread-2: Thu Mar 21 09:10:04 2013
Thread-1: Thu Mar 21 09:10:05 2013
Thread-1: Thu Mar 21 09:10:06 2013
Thread-2: Thu Mar 21 09:10:06 2013
Thread-1: Thu Mar 21 09:10:07 2013
Exiting Thread-1
Thread-2: Thu Mar 21 09:10:08 2013
Thread-2: Thu Mar 21 09:10:10 2013
Thread-2: Thu Mar 21 09:10:12 2013
Exiting Thread-2

Sinkronisasi Thread

Modul threading yang disediakan oleh Python menyertakan mekanisme penguncian yang mudah diterapkan yang memungkinkan Anda untuk menyinkronkan utas. Kunci baru dibuat dengan memanggil metode Lock () , yang mengembalikan kunci baru.

Metode perolehan (pemblokiran) dari objek kunci baru digunakan untuk memaksa utas berjalan secara sinkron. Parameter pemblokiran opsional memungkinkan Anda untuk mengontrol apakah utas menunggu untuk mendapatkan kunci.

Jika pemblokiran disetel ke 0, utas segera kembali dengan nilai 0 jika kunci tidak dapat diperoleh dan dengan 1 jika kunci diperoleh. Jika pemblokiran diatur ke 1, utas akan memblokir dan menunggu kunci dilepaskan.

Metode release () dari objek kunci baru digunakan untuk melepaskan kunci saat tidak lagi diperlukan.

Contoh

#!/usr/bin/python

import threading
import time

class myThread (threading.Thread):
   def __init__(self, threadID, name, counter):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.counter = counter
   def run(self):
      print "Starting " + self.name
      # Get lock to synchronize threads
      threadLock.acquire()
      print_time(self.name, self.counter, 3)
      # Free lock to release next thread
      threadLock.release()

def print_time(threadName, delay, counter):
   while counter:
      time.sleep(delay)
      print "%s: %s" % (threadName, time.ctime(time.time()))
      counter -= 1

threadLock = threading.Lock()
threads = []

# Create new threads
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# Start new Threads
thread1.start()
thread2.start()

# Add threads to thread list
threads.append(thread1)
threads.append(thread2)

# Wait for all threads to complete
for t in threads:
    t.join()
print "Exiting Main Thread"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Starting Thread-1
Starting Thread-2
Thread-1: Thu Mar 21 09:11:28 2013
Thread-1: Thu Mar 21 09:11:29 2013
Thread-1: Thu Mar 21 09:11:30 2013
Thread-2: Thu Mar 21 09:11:32 2013
Thread-2: Thu Mar 21 09:11:34 2013
Thread-2: Thu Mar 21 09:11:36 2013
Exiting Main Thread

Antrean Prioritas Multithread

The Antrian modul memungkinkan Anda untuk membuat objek antrian baru yang dapat menampung jumlah tertentu item. Ada metode berikut untuk mengontrol Antrian -

  • get() - Get () menghapus dan mengembalikan item dari antrian.

  • put() - Put menambahkan item ke antrian.

  • qsize() - The qsize () mengembalikan jumlah item yang saat ini berada dalam antrian.

  • empty()- empty () mengembalikan True jika antrian kosong; jika tidak, Salah.

  • full()- full () mengembalikan True jika antrian penuh; jika tidak, Salah.

Contoh

#!/usr/bin/python

import Queue
import threading
import time

exitFlag = 0

class myThread (threading.Thread):
   def __init__(self, threadID, name, q):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.q = q
   def run(self):
      print "Starting " + self.name
      process_data(self.name, self.q)
      print "Exiting " + self.name

def process_data(threadName, q):
   while not exitFlag:
      queueLock.acquire()
         if not workQueue.empty():
            data = q.get()
            queueLock.release()
            print "%s processing %s" % (threadName, data)
         else:
            queueLock.release()
         time.sleep(1)

threadList = ["Thread-1", "Thread-2", "Thread-3"]
nameList = ["One", "Two", "Three", "Four", "Five"]
queueLock = threading.Lock()
workQueue = Queue.Queue(10)
threads = []
threadID = 1

# Create new threads
for tName in threadList:
   thread = myThread(threadID, tName, workQueue)
   thread.start()
   threads.append(thread)
   threadID += 1

# Fill the queue
queueLock.acquire()
for word in nameList:
   workQueue.put(word)
queueLock.release()

# Wait for queue to empty
while not workQueue.empty():
   pass

# Notify threads it's time to exit
exitFlag = 1

# Wait for all threads to complete
for t in threads:
   t.join()
print "Exiting Main Thread"

Ketika kode di atas dijalankan, itu menghasilkan hasil sebagai berikut -

Starting Thread-1
Starting Thread-2
Starting Thread-3
Thread-1 processing One
Thread-2 processing Two
Thread-3 processing Three
Thread-1 processing Four
Thread-2 processing Five
Exiting Thread-3
Exiting Thread-1
Exiting Thread-2
Exiting Main Thread

XML adalah bahasa sumber terbuka portabel yang memungkinkan pemrogram mengembangkan aplikasi yang dapat dibaca oleh aplikasi lain, apa pun sistem operasi dan / atau bahasa pengembangannya.

Apa itu XML?

Extensible Markup Language (XML) adalah bahasa markup seperti HTML atau SGML. Ini direkomendasikan oleh World Wide Web Consortium dan tersedia sebagai standar terbuka.

XML sangat berguna untuk melacak data dalam jumlah kecil hingga sedang tanpa memerlukan backbone berbasis SQL.

Arsitektur dan API Parser XML

Pustaka standar Python menyediakan sekumpulan antarmuka minimal tapi berguna untuk bekerja dengan XML.

Dua API yang paling dasar dan banyak digunakan untuk data XML adalah antarmuka SAX dan DOM.

  • Simple API for XML (SAX)- Di sini, Anda mendaftarkan callback untuk acara yang diminati dan kemudian membiarkan pengurai melanjutkan melalui dokumen. Ini berguna ketika dokumen Anda besar atau Anda memiliki keterbatasan memori, ini mengurai file saat membacanya dari disk dan seluruh file tidak pernah disimpan dalam memori.

  • Document Object Model (DOM) API - Ini adalah rekomendasi Konsorsium World Wide Web di mana seluruh file dibaca ke dalam memori dan disimpan dalam bentuk hierarki (berbasis pohon) untuk mewakili semua fitur dokumen XML.

SAX jelas tidak dapat memproses informasi secepat DOM saat bekerja dengan file besar. Di sisi lain, menggunakan DOM secara eksklusif dapat benar-benar mematikan sumber daya Anda, terutama jika digunakan pada banyak file kecil.

SAX bersifat read-only, sedangkan DOM memungkinkan perubahan pada file XML. Karena kedua API yang berbeda ini benar-benar saling melengkapi, tidak ada alasan mengapa Anda tidak dapat menggunakan keduanya untuk proyek besar.

Untuk semua contoh kode XML kita, mari gunakan file XML sederhana movies.xml sebagai input -

<collection shelf="New Arrivals">
<movie title="Enemy Behind">
   <type>War, Thriller</type>
   <format>DVD</format>
   <year>2003</year>
   <rating>PG</rating>
   <stars>10</stars>
   <description>Talk about a US-Japan war</description>
</movie>
<movie title="Transformers">
   <type>Anime, Science Fiction</type>
   <format>DVD</format>
   <year>1989</year>
   <rating>R</rating>
   <stars>8</stars>
   <description>A schientific fiction</description>
</movie>
   <movie title="Trigun">
   <type>Anime, Action</type>
   <format>DVD</format>
   <episodes>4</episodes>
   <rating>PG</rating>
   <stars>10</stars>
   <description>Vash the Stampede!</description>
</movie>
<movie title="Ishtar">
   <type>Comedy</type>
   <format>VHS</format>
   <rating>PG</rating>
   <stars>2</stars>
   <description>Viewable boredom</description>
</movie>
</collection>

Mengurai XML dengan SAX API

SAX adalah antarmuka standar untuk penguraian XML berbasis peristiwa. Parsing XML dengan SAX biasanya mengharuskan Anda membuat ContentHandler sendiri dengan membuat subclass xml.sax.ContentHandler.

ContentHandler Anda menangani tag dan atribut tertentu dari ragam XML Anda. Objek ContentHandler menyediakan metode untuk menangani berbagai peristiwa penguraian. Parser pemiliknya memanggil metode ContentHandler saat mengurai file XML.

Metode startDocument dan endDocument dipanggil di awal dan di akhir file XML. Karakter metode (teks) dikirimkan data karakter dari file XML melalui teks parameter.

ContentHandler dipanggil di awal dan akhir setiap elemen. Jika parser tidak dalam mode namespace, metode startElement (tag, atribut) dan endElement (tag) dipanggil; jika tidak, metode yang sesuai startElementNS dan endElementNS akan dipanggil. Di sini, tag adalah tag elemen, dan atribut adalah objek Attributes.

Berikut adalah metode penting lainnya untuk dipahami sebelum melanjutkan -

The make_parser Metode

Metode berikut membuat objek parser baru dan mengembalikannya. Objek parser yang dibuat akan menjadi jenis parser pertama yang ditemukan sistem.

xml.sax.make_parser( [parser_list] )

Berikut detail parameternya -

  • parser_list - Argumen opsional yang terdiri dari daftar parser yang akan digunakan yang semuanya harus mengimplementasikan metode make_parser.

The parse Metode

Metode berikut membuat pengurai SAX dan menggunakannya untuk mengurai dokumen.

xml.sax.parse( xmlfile, contenthandler[, errorhandler])

Berikut detail parameternya -

  • xmlfile - Ini adalah nama file XML yang akan dibaca.

  • contenthandler - Ini harus berupa objek ContentHandler.

  • errorhandler - Jika ditentukan, errorhandler harus berupa objek SAX ErrorHandler.

The parseString Metode

Ada satu metode lagi untuk membuat parser SAX dan mengurai yang ditentukan XML string.

xml.sax.parseString(xmlstring, contenthandler[, errorhandler])

Berikut detail parameternya -

  • xmlstring - Ini adalah nama string XML yang akan dibaca.

  • contenthandler - Ini harus berupa objek ContentHandler.

  • errorhandler - Jika ditentukan, errorhandler harus berupa objek SAX ErrorHandler.

Contoh

#!/usr/bin/python

import xml.sax

class MovieHandler( xml.sax.ContentHandler ):
   def __init__(self):
      self.CurrentData = ""
      self.type = ""
      self.format = ""
      self.year = ""
      self.rating = ""
      self.stars = ""
      self.description = ""

   # Call when an element starts
   def startElement(self, tag, attributes):
      self.CurrentData = tag
      if tag == "movie":
         print "*****Movie*****"
         title = attributes["title"]
         print "Title:", title

   # Call when an elements ends
   def endElement(self, tag):
      if self.CurrentData == "type":
         print "Type:", self.type
      elif self.CurrentData == "format":
         print "Format:", self.format
      elif self.CurrentData == "year":
         print "Year:", self.year
      elif self.CurrentData == "rating":
         print "Rating:", self.rating
      elif self.CurrentData == "stars":
         print "Stars:", self.stars
      elif self.CurrentData == "description":
         print "Description:", self.description
      self.CurrentData = ""

   # Call when a character is read
   def characters(self, content):
      if self.CurrentData == "type":
         self.type = content
      elif self.CurrentData == "format":
         self.format = content
      elif self.CurrentData == "year":
         self.year = content
      elif self.CurrentData == "rating":
         self.rating = content
      elif self.CurrentData == "stars":
         self.stars = content
      elif self.CurrentData == "description":
         self.description = content
  
if ( __name__ == "__main__"):
   
   # create an XMLReader
   parser = xml.sax.make_parser()
   # turn off namepsaces
   parser.setFeature(xml.sax.handler.feature_namespaces, 0)

   # override the default ContextHandler
   Handler = MovieHandler()
   parser.setContentHandler( Handler )
   
   parser.parse("movies.xml")

Ini akan menghasilkan hasil sebagai berikut -

*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Year: 2003
Rating: PG
Stars: 10
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Year: 1989
Rating: R
Stars: 8
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Stars: 10
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Stars: 2
Description: Viewable boredom

Untuk detail lengkap tentang dokumentasi SAX API, lihat API SAX Python standar .

Mengurai XML dengan DOM API

Model Objek Dokumen ("DOM") adalah API lintas bahasa dari World Wide Web Consortium (W3C) untuk mengakses dan memodifikasi dokumen XML.

DOM sangat berguna untuk aplikasi akses acak. SAX hanya memungkinkan Anda melihat satu bit dokumen dalam satu waktu. Jika Anda melihat satu elemen SAX, Anda tidak memiliki akses ke yang lain.

Berikut adalah cara termudah untuk memuat dokumen XML dengan cepat dan membuat objek minidom menggunakan modul xml.dom. Objek minidom menyediakan metode parser sederhana yang dengan cepat membuat pohon DOM dari file XML.

Frase sampel memanggil fungsi parse (file [, parser]) dari objek minidom untuk mengurai file XML yang ditunjuk oleh file ke dalam objek pohon DOM.

#!/usr/bin/python

from xml.dom.minidom import parse
import xml.dom.minidom

# Open XML document using minidom parser
DOMTree = xml.dom.minidom.parse("movies.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("shelf"):
   print "Root element : %s" % collection.getAttribute("shelf")

# Get all the movies in the collection
movies = collection.getElementsByTagName("movie")

# Print detail of each movie.
for movie in movies:
   print "*****Movie*****"
   if movie.hasAttribute("title"):
      print "Title: %s" % movie.getAttribute("title")

   type = movie.getElementsByTagName('type')[0]
   print "Type: %s" % type.childNodes[0].data
   format = movie.getElementsByTagName('format')[0]
   print "Format: %s" % format.childNodes[0].data
   rating = movie.getElementsByTagName('rating')[0]
   print "Rating: %s" % rating.childNodes[0].data
   description = movie.getElementsByTagName('description')[0]
   print "Description: %s" % description.childNodes[0].data

Ini akan menghasilkan hasil sebagai berikut -

Root element : New Arrivals
*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Rating: PG
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Rating: R
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Description: Viewable boredom

Untuk detail lengkap tentang dokumentasi API DOM, lihat API DOM Python standar .

Python menyediakan berbagai opsi untuk mengembangkan antarmuka pengguna grafis (GUI). Yang terpenting tercantum di bawah ini.

  • Tkinter- Tkinter adalah antarmuka Python ke toolkit Tk GUI yang dikirimkan dengan Python. Kami akan melihat opsi ini di bab ini.

  • wxPython - Ini adalah antarmuka Python open-source untuk wxWindows http://wxpython.org.

  • JPython - JPython adalah port Python untuk Java yang memberi skrip Python akses tanpa batas ke pustaka kelas Java di mesin lokal http://www.jython.org.

Ada banyak antarmuka lain yang tersedia, yang dapat Anda temukan di internet.

Pemrograman Tkinter

Tkinter adalah pustaka GUI standar untuk Python. Python jika digabungkan dengan Tkinter memberikan cara yang cepat dan mudah untuk membuat aplikasi GUI. Tkinter menyediakan antarmuka berorientasi objek yang kuat ke toolkit Tk GUI.

Membuat aplikasi GUI menggunakan Tkinter adalah tugas yang mudah. Yang perlu Anda lakukan adalah melakukan langkah-langkah berikut -

  • Impor modul Tkinter .

  • Buat jendela utama aplikasi GUI.

  • Tambahkan satu atau lebih widget yang disebutkan di atas ke aplikasi GUI.

  • Masuk ke putaran peristiwa utama untuk mengambil tindakan terhadap setiap peristiwa yang dipicu oleh pengguna.

Contoh

#!/usr/bin/python

import Tkinter
top = Tkinter.Tk()
# Code to add widgets will go here...
top.mainloop()

Ini akan membuat jendela berikut -

Widget Tkinter

Tkinter menyediakan berbagai kontrol, seperti tombol, label, dan kotak teks yang digunakan dalam aplikasi GUI. Kontrol ini biasa disebut widget.

Saat ini ada 15 jenis widget di Tkinter. Kami menyajikan widget ini serta deskripsi singkat di tabel berikut -

Sr.No. Operator & Deskripsi
1 Tombol

Widget Tombol digunakan untuk menampilkan tombol di aplikasi Anda.

2 Kanvas

Widget Canvas digunakan untuk menggambar bentuk, seperti garis, oval, poligon, dan persegi panjang, dalam aplikasi Anda.

3 Tombol centang

Widget tombol centang digunakan untuk menampilkan sejumlah opsi sebagai kotak centang. Pengguna dapat memilih beberapa opsi sekaligus.

4 Masuk

Widget Entri digunakan untuk menampilkan bidang teks satu baris untuk menerima nilai dari pengguna.

5 Bingkai

Widget Frame digunakan sebagai wadah widget untuk mengatur widget lainnya.

6 Label

Widget Label digunakan untuk memberikan keterangan satu baris untuk widget lain. Itu juga bisa berisi gambar.

7 Kotak daftar

Widget Listbox digunakan untuk memberikan daftar opsi kepada pengguna.

8 Tombol menu

Widget Menubutton digunakan untuk menampilkan menu di aplikasi Anda.

9 Tidak bisa

Widget Menu digunakan untuk menyediakan berbagai perintah kepada pengguna. Perintah-perintah ini terdapat di dalam Menubutton.

10 Pesan

Widget Pesan digunakan untuk menampilkan bidang teks multiline untuk menerima nilai dari pengguna.

11 Tombol radio

Widget Radiobutton digunakan untuk menampilkan sejumlah opsi sebagai tombol radio. Pengguna hanya dapat memilih satu opsi dalam satu waktu.

12 Skala

Widget Skala digunakan untuk menyediakan widget slider.

13 Scroll bar

Widget Scrollbar digunakan untuk menambahkan kemampuan scrolling ke berbagai widget, seperti kotak daftar.

14 Teks

Widget Teks digunakan untuk menampilkan teks dalam beberapa baris.

15 Level tertinggi

Widget Toplevel digunakan untuk menyediakan wadah jendela terpisah.

16 Spinbox

Widget Spinbox adalah varian dari widget Tkinter Entry standar, yang dapat digunakan untuk memilih dari sejumlah nilai tetap.

17 PanedWindow

PanedWindow adalah widget kontainer yang mungkin berisi sejumlah panel, disusun secara horizontal atau vertikal.

18 LabelFrame

Labelframe adalah widget penampung sederhana. Tujuan utamanya adalah bertindak sebagai spacer atau wadah untuk tata letak jendela yang kompleks.

19 tkMessageBox

Modul ini digunakan untuk menampilkan kotak pesan dalam aplikasi Anda.

Mari kita pelajari widget ini secara mendetail -

Atribut standar

Mari kita lihat bagaimana beberapa atribut umum mereka, seperti ukuran, warna dan font ditentukan.

  • Dimensions

  • Colors

  • Fonts

  • Anchors

  • Gaya bantuan

  • Bitmaps

  • Cursors

Mari kita pelajari secara singkat -

Manajemen Geometri

Semua widget Tkinter memiliki akses ke metode manajemen geometri tertentu, yang bertujuan untuk mengatur widget di seluruh area widget induk. Tkinter memperlihatkan kelas manajer geometri berikut: paket, kisi, dan tempat.

  • The pack () Method - Manajer geometri ini mengatur widget di blok sebelum menempatkan mereka di widget induk.

  • The grid () Method - Manajer geometri ini mengatur widget di meja-seperti struktur di widget induk.

  • The place () Method - Manajer geometri ini mengatur widget dengan menempatkan mereka dalam posisi tertentu dalam widget induk.

Mari kita pelajari metode manajemen geometri secara singkat -

Kode apa pun yang Anda tulis menggunakan bahasa terkompilasi seperti C, C ++, atau Java dapat diintegrasikan atau diimpor ke skrip Python lain. Kode ini dianggap sebagai "ekstensi".

Modul ekstensi Python tidak lebih dari pustaka C biasa. Pada mesin Unix, pustaka ini biasanya diakhiri dengan.so(untuk objek bersama). Di mesin Windows, Anda biasanya melihat.dll (untuk perpustakaan yang terhubung secara dinamis).

Prasyarat untuk Menulis Ekstensi

Untuk mulai menulis ekstensi Anda, Anda memerlukan file header Python.

  • Pada mesin Unix, ini biasanya memerlukan penginstalan paket khusus pengembang seperti python2.5-dev .

  • Pengguna Windows mendapatkan header ini sebagai bagian dari paket ketika mereka menggunakan penginstal Python biner.

Selain itu, diasumsikan bahwa Anda memiliki pengetahuan yang baik tentang C atau C ++ untuk menulis Ekstensi Python apa pun menggunakan pemrograman C.

Pertama lihat Ekstensi Python

Untuk tampilan pertama Anda pada modul ekstensi Python, Anda perlu mengelompokkan kode Anda menjadi empat bagian -

  • File header Python.h .

  • Fungsi C yang ingin Anda tampilkan sebagai antarmuka dari modul Anda.

  • Tabel yang memetakan nama fungsi Anda saat developer Python melihatnya ke fungsi C di dalam modul ekstensi.

  • Fungsi inisialisasi.

File Header Python.h

Anda perlu menyertakan file header Python.h di file sumber C Anda, yang memberi Anda akses ke Python API internal yang digunakan untuk menghubungkan modul Anda ke interpreter.

Pastikan untuk menyertakan Python.h sebelum header lain yang mungkin Anda perlukan. Anda harus mengikuti penyertaan dengan fungsi yang ingin Anda panggil dari Python.

Fungsi C.

Tanda tangan implementasi C fungsi Anda selalu mengambil salah satu dari tiga bentuk berikut -

static PyObject *MyFunction( PyObject *self, PyObject *args );

static PyObject *MyFunctionWithKeywords(PyObject *self,
                                 PyObject *args,
                                 PyObject *kw);

static PyObject *MyFunctionWithNoArgs( PyObject *self );

Setiap deklarasi sebelumnya mengembalikan objek Python. Tidak ada yang namanya fungsi void di Python seperti di C.Jika Anda tidak ingin fungsi Anda mengembalikan nilai, kembalikan persamaan C dari PythonNonenilai. Header Python mendefinisikan makro, Py_RETURN_NONE, yang melakukan ini untuk kita.

Nama fungsi C Anda bisa apa saja yang Anda suka karena tidak pernah terlihat di luar modul ekstensi. Mereka didefinisikan sebagai fungsi statis .

Fungsi C Anda biasanya dinamai dengan menggabungkan modul Python dan nama fungsi bersama, seperti yang ditunjukkan di sini -

static PyObject *module_func(PyObject *self, PyObject *args) {
   /* Do your stuff here. */
   Py_RETURN_NONE;
}

Ini adalah fungsi Python yang disebut func di dalam modul modul . Anda akan meletakkan pointer ke fungsi C Anda ke dalam tabel metode untuk modul yang biasanya muncul berikutnya dalam kode sumber Anda.

Tabel Pemetaan Metode

Tabel metode ini adalah larik sederhana dari struktur PyMethodDef. Struktur itu terlihat seperti ini -

struct PyMethodDef {
   char *ml_name;
   PyCFunction ml_meth;
   int ml_flags;
   char *ml_doc;
};

Berikut adalah deskripsi anggota struktur ini -

  • ml_name - Ini adalah nama fungsi yang disajikan oleh penerjemah Python saat digunakan dalam program Python.

  • ml_meth - Ini harus berupa alamat ke fungsi yang memiliki salah satu dari tanda tangan yang dijelaskan pada bagian sebelumnya.

  • ml_flags - Ini memberi tahu penerjemah mana dari tiga tanda tangan yang digunakan ml_meth.

    • Bendera ini biasanya memiliki nilai METH_VARARGS.

    • Bendera ini dapat di-bitwise dengan METH_KEYWORDS jika Anda ingin mengizinkan argumen kata kunci ke dalam fungsi Anda.

    • Ini juga dapat memiliki nilai METH_NOARGS yang menunjukkan Anda tidak ingin menerima argumen apa pun.

  • ml_doc - Ini adalah fungsi docstring, yang bisa menjadi NULL jika Anda tidak ingin menulisnya.

Tabel ini perlu diakhiri dengan sentinel yang terdiri dari NULL dan 0 nilai untuk anggota yang sesuai.

Contoh

Untuk fungsi yang didefinisikan di atas, kami memiliki tabel pemetaan metode berikut -

static PyMethodDef module_methods[] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { NULL, NULL, 0, NULL }
};

Fungsi Inisialisasi

Bagian terakhir dari modul ekstensi Anda adalah fungsi inisialisasi. Fungsi ini dipanggil oleh interpreter Python saat modul dimuat. Diperlukan agar fungsi tersebut dinamaiinitModule, di mana Module adalah nama modul.

Fungsi inisialisasi perlu diekspor dari perpustakaan yang akan Anda buat. Header Python mendefinisikan PyMODINIT_FUNC untuk menyertakan mantera yang sesuai agar hal itu terjadi untuk lingkungan tertentu tempat kita menyusun. Yang harus Anda lakukan adalah menggunakannya saat mendefinisikan fungsi.

Fungsi inisialisasi C Anda umumnya memiliki struktur keseluruhan berikut -

PyMODINIT_FUNC initModule() {
   Py_InitModule3(func, module_methods, "docstring...");
}

Berikut adalah deskripsi fungsi Py_InitModule3 -

  • func - Ini adalah fungsi yang akan diekspor.

  • module_methods - Ini adalah nama tabel pemetaan yang ditentukan di atas.

  • docstring - Ini adalah komentar yang ingin Anda berikan di ekstensi Anda.

Menyatukan semua ini terlihat seperti berikut -

#include <Python.h>

static PyObject *module_func(PyObject *self, PyObject *args) {
   /* Do your stuff here. */
   Py_RETURN_NONE;
}

static PyMethodDef module_methods[] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { NULL, NULL, 0, NULL }
};

PyMODINIT_FUNC initModule() {
   Py_InitModule3(func, module_methods, "docstring...");
}

Contoh

Contoh sederhana yang menggunakan semua konsep di atas -

#include <Python.h>

static PyObject* helloworld(PyObject* self) {
   return Py_BuildValue("s", "Hello, Python extensions!!");
}

static char helloworld_docs[] =
   "helloworld( ): Any message you want to put here!!\n";

static PyMethodDef helloworld_funcs[] = {
   {"helloworld", (PyCFunction)helloworld, 
      METH_NOARGS, helloworld_docs},
      {NULL}
};

void inithelloworld(void) {
   Py_InitModule3("helloworld", helloworld_funcs,
                  "Extension module example!");
}

Di sini fungsi Py_BuildValue digunakan untuk membangun nilai Python. Simpan kode di atas dalam file hello.c. Kami akan melihat bagaimana mengkompilasi dan menginstal modul ini untuk dipanggil dari skrip Python.

Membangun dan Memasang Ekstensi

The distutils paket membuatnya sangat mudah untuk mendistribusikan modul Python, baik murni Python dan ekstensi modul, dengan cara standar. Modul didistribusikan dalam bentuk sumber dan dibangun serta dipasang melalui skrip pengaturan yang biasanya disebut setup.py sebagai berikut.

Untuk modul di atas, Anda perlu mempersiapkan skrip setup.py berikut -

from distutils.core import setup, Extension
setup(name='helloworld', version='1.0',  \
      ext_modules=[Extension('helloworld', ['hello.c'])])

Sekarang, gunakan perintah berikut, yang akan melakukan semua langkah kompilasi dan penautan yang diperlukan, dengan perintah dan flag compiler dan linker yang tepat, dan menyalin pustaka dinamis yang dihasilkan ke direktori yang sesuai -

$ python setup.py install

Pada sistem berbasis Unix, kemungkinan besar Anda harus menjalankan perintah ini sebagai root agar memiliki izin untuk menulis ke direktori paket situs. Ini biasanya tidak menjadi masalah di Windows.

Mengimpor Ekstensi

Setelah Anda memasang ekstensi Anda, Anda akan dapat mengimpor dan memanggil ekstensi itu dalam skrip Python Anda sebagai berikut -

#!/usr/bin/python
import helloworld

print helloworld.helloworld()

Ini akan menghasilkan hasil sebagai berikut -

Hello, Python extensions!!

Parameter Fungsi Lewat

Karena Anda kemungkinan besar ingin mendefinisikan fungsi yang menerima argumen, Anda dapat menggunakan salah satu tanda tangan lain untuk fungsi C. Misalnya, fungsi berikut, yang menerima sejumlah parameter, akan didefinisikan seperti ini -

static PyObject *module_func(PyObject *self, PyObject *args) {
   /* Parse args and do something interesting here. */
   Py_RETURN_NONE;
}

Tabel metode yang berisi entri untuk fungsi baru akan terlihat seperti ini -

static PyMethodDef module_methods[] = {
   { "func", (PyCFunction)module_func, METH_NOARGS, NULL },
   { "func", module_func, METH_VARARGS, NULL },
   { NULL, NULL, 0, NULL }
};

Anda dapat menggunakan fungsi API PyArg_ParseTuple untuk mengekstrak argumen dari satu penunjuk PyObject yang diteruskan ke fungsi C.

Argumen pertama PyArg_ParseTuple adalah argumen args. Ini adalah objek yang akan Anda parsing . Argumen kedua adalah string format yang mendeskripsikan argumen seperti yang Anda harapkan. Setiap argumen diwakili oleh satu atau lebih karakter dalam format string sebagai berikut.

static PyObject *module_func(PyObject *self, PyObject *args) {
   int i;
   double d;
   char *s;

   if (!PyArg_ParseTuple(args, "ids", &i, &d, &s)) {
      return NULL;
   }
   
   /* Do something interesting here. */
   Py_RETURN_NONE;
}

Mengompilasi versi baru modul Anda dan mengimpornya memungkinkan Anda untuk menjalankan fungsi baru dengan sejumlah argumen jenis apa pun -

module.func(1, s="three", d=2.0)
module.func(i=1, d=2.0, s="three")
module.func(s="three", d=2.0, i=1)

Anda mungkin bisa mendapatkan lebih banyak variasi.

The PyArg_ParseTuple Fungsi

Ini adalah tanda tangan standar untuk PyArg_ParseTuple fungsi -

int PyArg_ParseTuple(PyObject* tuple,char* format,...)

Fungsi ini mengembalikan 0 untuk kesalahan, dan nilai tidak sama dengan 0 untuk keberhasilan. tuple adalah PyObject * yang merupakan argumen kedua fungsi C. Berikut Format adalah C string yang menjelaskan argumen wajib dan opsional.

Berikut adalah daftar kode format untuk PyArg_ParseTuple fungsi -

Kode Tipe C. Berarti
c arang String Python dengan panjang 1 menjadi karakter C.
d dua kali lipat Float Python menjadi C double.
f mengapung Float Python menjadi float C.
saya int Sebuah Python int menjadi sebuah C int.
l panjang Sebuah int Python menjadi C panjang.
L Panjang panjang Sebuah int Python menjadi panjang C
HAI PyObject * Mendapat referensi pinjaman non-NULL ke argumen Python.
s arang* String Python tanpa null yang disematkan ke C char *.
s # char * + int String Python apa pun ke alamat dan panjang C.
t # char * + int Buffer segmen tunggal baca-saja ke alamat dan panjang C.
u Py_UNICODE * Python Unicode tanpa null tertanam ke C.
u # Py_UNICODE * + int Alamat dan panjang Python Unicode C apa pun.
w # char * + int Baca / tulis buffer segmen tunggal ke alamat dan panjang C.
z arang* Seperti s, juga menerima None (set C char * ke NULL).
z # char * + int Seperti s #, juga menerima None (set C char * ke NULL).
(...) sesuai ... Urutan Python diperlakukan sebagai satu argumen per item.
|   Argumen berikut ini opsional.
:   Akhir format, diikuti dengan nama fungsi untuk pesan kesalahan.
;   Format akhir, diikuti dengan seluruh teks pesan kesalahan.

Mengembalikan Nilai

Py_BuildValue mengambil format string seperti yang dilakukan PyArg_ParseTuple . Alih-alih memasukkan alamat dari nilai yang Anda bangun, Anda meneruskan nilai sebenarnya. Berikut adalah contoh yang menunjukkan bagaimana mengimplementasikan fungsi add -

static PyObject *foo_add(PyObject *self, PyObject *args) {
   int a;
   int b;

   if (!PyArg_ParseTuple(args, "ii", &a, &b)) {
      return NULL;
   }
   return Py_BuildValue("i", a + b);
}

Ini akan terlihat seperti jika diimplementasikan dengan Python -

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

Anda dapat mengembalikan dua nilai dari fungsi Anda sebagai berikut, ini akan ditangkap menggunakan daftar dengan Python.

static PyObject *foo_add_subtract(PyObject *self, PyObject *args) {
   int a;
   int b;

   if (!PyArg_ParseTuple(args, "ii", &a, &b)) {
      return NULL;
   }
   return Py_BuildValue("ii", a + b, a - b);
}

Ini akan terlihat seperti jika diimplementasikan dengan Python -

def add_subtract(a, b):
   return (a + b, a - b)

The Py_BuildValue Fungsi

Ini adalah tanda tangan standar untuk Py_BuildValue fungsi -

PyObject* Py_BuildValue(char* format,...)

Berikut Format adalah C string yang menggambarkan objek Python untuk membangun. Argumen Py_BuildValue berikut adalah nilai C dari mana hasil dibuat. Hasil PyObject * adalah referensi baru.

Tabel berikut mencantumkan string kode yang umum digunakan, di mana nol atau lebih digabungkan ke dalam format string.

Kode Tipe C. Berarti
c arang Karakter AC menjadi string Python dengan panjang 1.
d dua kali lipat AC ganda menjadi float Python.
f mengapung AC float menjadi float Python.
saya int AC int menjadi int Python.
l panjang AC lama menjadi int Python.
N PyObject * Meneruskan objek Python dan mencuri referensi.
HAI PyObject * Meneruskan objek Python dan INCREF seperti biasa.
HAI& konversikan + batal * Konversi sewenang-wenang
s arang* C 0-diakhiri char * ke string Python, atau NULL ke None.
s # char * + int C char * dan panjang ke string Python, atau NULL ke None.
u Py_UNICODE * C-wide, string diakhiri null ke Python Unicode, atau NULL ke None.
u # Py_UNICODE * + int String C-wide dan panjang ke Python Unicode, atau NULL ke None.
w # char * + int Baca / tulis buffer segmen tunggal ke alamat dan panjang C.
z arang* Seperti s, juga menerima None (set C char * ke NULL).
z # char * + int Seperti s #, juga menerima None (set C char * ke NULL).
(...) sesuai ... Membangun tupel Python dari nilai C.
[...] sesuai ... Membangun daftar Python dari nilai C.
{...} sesuai ... Membangun kamus Python dari nilai C, kunci dan nilai bergantian.

Kode {...} membuat kamus dari nilai C bilangan genap, sebagai alternatif kunci dan nilai. Misalnya, Py_BuildValue ("{issi}", 23, "zig", "zag", 42) mengembalikan kamus seperti {23: 'zig', 'zag': 42} Python.