4.3 Memulai dengan bahasa Python

Penulis:Kebaikan, Dibuat: 2019-04-28 09:55:02, Diperbarui:

Peluh awal

Jadi, Anda ingin belajar bahasa pemrograman Python tetapi tidak dapat menemukan tutorial yang ringkas namun penuh fitur. Tutorial ini akan mencoba mengajarkan Anda Python dalam 10 menit. Ini mungkin bukan tutorial, karena ini adalah silang antara tutorial dan cheatsheet, jadi hanya akan menunjukkan beberapa konsep dasar untuk memulai. Jelas, jika Anda benar-benar ingin belajar bahasa, Anda perlu memprogram di dalamnya untuk sementara waktu. Saya akan berasumsi bahwa Anda sudah terbiasa dengan pemrograman dan karena itu akan melewatkan sebagian besar hal non-khusus bahasa. Kata kunci penting akan disorot sehingga Anda dapat dengan mudah menemukannya. Juga, karena kesingkatannya tutorial ini, beberapa hal akan diperkenalkan langsung ke dalam kode dan hanya dikomentari secara singkat.

Kita akan fokus pada Python 3, karena itu adalah versi yang harus Anda gunakan. semua contoh dalam buku adalah di Python 3, dan jika ada yang menyarankan Anda untuk menggunakan 2, mereka bukan teman Anda.

Properti

Python sangat tipe (yaitu tipe diberlakukan), dinamis, implisit tipe (yaitu Anda tidak perlu menyatakan variabel), case sensitive (yaitu var dan VAR adalah dua variabel yang berbeda) dan berorientasi objek (yaitu segala sesuatu adalah objek).

Mendapatkan bantuan

Bantuan dalam Python selalu tersedia langsung di interpreter. Jika Anda ingin tahu bagaimana sebuah objek bekerja, yang harus Anda lakukan adalah memanggil help() ! Juga berguna adalah dir() , yang menunjukkan semua metode objek, dan .Dok., yang menunjukkan string dokumentasinya:

>>> help(5)
Help on int object:
(etc etc)

>>> dir(5)
['__abs__', '__add__', ...]

>>> abs.__doc__
'abs(number) -> number

Return the absolute value of the argument.

Sintaks

Python tidak memiliki karakter pengakhiran pernyataan yang wajib dan blok ditentukan dengan indentasi. Indent untuk memulai blok, dedent untuk mengakhiri satu. Pernyataan yang mengharapkan tingkat indentasi berakhir dengan titik koma (:). Komentar dimulai dengan tanda pound (#) dan berbaris tunggal, string multi-baris digunakan untuk komentar multi-baris. Nilai ditugaskan (pada kenyataannya, objek terikat pada nama) dengan tanda sama (=), dan pengujian kesetaraan dilakukan dengan menggunakan dua tanda sama (==). Anda dapat meningkatkan / mengurangi nilai menggunakan operator += dan -= masing-masing dengan jumlah sebelah kanan. Ini bekerja pada banyak jenis data, termasuk string. Anda juga dapat menggunakan beberapa variabel pada satu baris.

>>> myvar = 3
>>> myvar += 2
>>> myvar
5
>>> myvar -= 1
>>> myvar
4
"""This is a multiline comment.
The following lines concatenate the two strings."""
>>> mystring = "Hello"
>>> mystring += " world."
>>> print(mystring)
Hello world.
# This swaps the variables in one line(!).
# It doesn't violate strong typing because values aren't
# actually being assigned, but new objects are bound to
# the old names.
>>> myvar, mystring = mystring, myvar

Jenis data

Struktur data yang tersedia di python adalah daftar, tuples dan kamus. Set tersedia di perpustakaan set (tetapi dibangun di Python 2.5 dan lebih baru). Daftar seperti array satu dimensi (tetapi Anda juga dapat memiliki daftar daftar lain), kamus adalah array asosiatif (juga dikenal sebagai tabel hash) dan tuples adalah array satu dimensi yang tidak dapat diubah (Python arrays dapat dari jenis apa pun, sehingga Anda dapat mencampur misalnya bilangan bulat, string, dll dalam daftar / kamus / tuples). Indeks item pertama dalam semua jenis array adalah 0.

>>> sample = [1, ["another", "list"], ("a", "tuple")]
>>> mylist = ["List item 1", 2, 3.14]
>>> mylist[0] = "List item 1 again" # We're changing the item.
>>> mylist[-1] = 3.21 # Here, we refer to the last item.
>>> mydict = {"Key 1": "Value 1", 2: 3, "pi": 3.14}
>>> mydict["pi"] = 3.15 # This is how you change dictionary values.
>>> mytuple = (1, 2, 3)
>>> myfunction = len
>>> print(myfunction(mylist))
3

Anda dapat mengakses kisaran array menggunakan titik koma (:). Meninggalkan indeks awal kosong mengasumsikan item pertama, meninggalkan indeks akhir mengasumsikan item terakhir. Indexing inklusif-eksklusif, sehingga menentukan [2:10] akan mengembalikan item [2] (item ketiga, karena pengindeksan 0) ke [9] (item kesepuluh), inklusif (8 item). Indeks negatif dihitung dari item terakhir ke belakang (maka -1 adalah item terakhir) seperti ini:

>>> mylist = ["List item 1", 2, 3.14]
>>> print(mylist[:])
['List item 1', 2, 3.1400000000000001]
>>> print(mylist[0:2])
['List item 1', 2]
>>> print(mylist[-3:-1])
['List item 1', 2]
>>> print(mylist[1:])
[2, 3.14]
# Adding a third parameter, "step" will have Python step in
# N item increments, rather than 1.
# E.g., this will return the first item, then go to the third and
# return that (so, items 0 and 2 in 0-indexing).
>>> print(mylist[::2])
['List item 1', 3.14]

String

Stringnya dapat menggunakan tanda kutip tunggal atau ganda, dan Anda dapat memiliki tanda kutip dari satu jenis di dalam string yang menggunakan jenis lain (yaitu Dia mengatakan hello. adalah valid).triple double (atau single) quotes(). Python string selalu Unicode, tetapi ada jenis string lain yang murni bytes. Mereka disebut bystrings dan diwakili dengan b awalan, misalnya b Halo \xce\xb1. Untuk mengisi string dengan nilai, Anda menggunakan operator % (modulo) dan tuple. Setiap %s diganti dengan item dari tuple, kiri ke kanan, dan Anda juga dapat menggunakan substitusi kamus, seperti ini:

>>> print("Name: %s\
Number: %s\
String: %s" % (myclass.name, 3, 3 * "-"))
Name: Stavros
Number: 3
String: ---

strString = """This is
a multiline
string."""

# WARNING: Watch out for the trailing s in "%(key)s".
>>> print("This %(verb)s a %(noun)s." % {"noun": "test", "verb": "is"})
This is a test.

>>> name = "Stavros"
>>> "Hello, {}!".format(name)
Hello, Stavros!
>>> print(f"Hello, {name}!")
Hello, Stavros!

Pernyataan kontrol aliran

Pernyataan kontrol aliran adalah if, for, dan while. Tidak ada switch; sebaliknya, gunakan if. Gunakan for untuk menghitung melalui anggota daftar. Untuk mendapatkan urutan angka yang dapat Anda ulang, gunakan range() . Sintaks pernyataan ini adalah sebagai berikut:

rangelist = list(range(10))
>>> print(rangelist)
range(0, 10)
>>> print(list(rangelist))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for number in rangelist:
    # Check if number is one of
    # the numbers in the tuple.
    if number in (3, 4, 7, 9):
        # "Break" terminates a for without
        # executing the "else" clause.
        break
    else:
        # "Continue" starts the next iteration
        # of the loop. It's rather useless here,
        # as it's the last statement of the loop.
        continue
else:
    # The "else" clause is optional and is
    # executed only if the loop didn't "break".
    pass # Do nothing

if rangelist[1] == 2:
    print("The second item (lists are 0-based) is 2")
elif rangelist[1] == 3:
    print("The second item (lists are 0-based) is 3")
else:
    print("Dunno")

while rangelist[1] == 1:
    print("We are trapped in an infinite loop!")

Fungsi

Fungsi dinyatakan dengan kata kunci def. Argumen opsional ditetapkan dalam deklarasi fungsi setelah argumen wajib dengan diberikan nilai default. Untuk argumen yang diberi nama, nama argumen diberikan nilai. Fungsi dapat mengembalikan tuple (dan menggunakan unpacking tuple Anda dapat secara efektif mengembalikan beberapa nilai). Fungsi lambda adalah fungsi ad hoc yang terdiri dari satu pernyataan. Parameter diteruskan dengan referensi, tetapi jenis yang tidak dapat diubah (tuples, int, string, dll) tidak dapat diubah dalam pemanggil oleh pemanggil. Ini karena hanya lokasi memori item yang diteruskan, dan mengikat objek lain ke variabel membuang yang lama, sehingga jenis yang tidak dapat diubah diganti. Misalnya:

# Same as def funcvar(x): return x + 1
funcvar = lambda x: x + 1
>>> print(funcvar(1))
2

# an_int and a_string are optional, they have default values
# if one is not passed (2 and "A default string", respectively).
def passing_example(a_list, an_int=2, a_string="A default string"):
    a_list.append("A new item")
    an_int = 4
    return a_list, an_int, a_string

>>> my_list = [1, 2, 3]
>>> my_int = 10
>>> print(passing_example(my_list, my_int))
([1, 2, 3, 'A new item'], 4, "A default string")
>>> my_list
[1, 2, 3, 'A new item']
>>> my_int
10

Kelas

Python mendukung bentuk terbatas dari multiple inheritance dalam kelas. Variabel dan metode pribadi dapat dinyatakan (dengan konvensi, ini tidak diberlakukan oleh bahasa) dengan menambahkan underscore utama (misalnya _spam).

class MyClass(object):
    common = 10
    def __init__(self):
        self.myvariable = 3
    def myfunction(self, arg1, arg2):
        return self.myvariable

    # This is the class instantiation

>>> classinstance = MyClass()
>>> classinstance.myfunction(1, 2)
3
# This variable is shared by all instances.
>>> classinstance2 = MyClass()
>>> classinstance.common
10
>>> classinstance2.common
10
# Note how we use the class name
# instead of the instance.
>>> MyClass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# This will not update the variable on the class,
# instead it will bind a new object to the old
# variable name.
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> MyClass.common = 50
# This has not changed, because "common" is
# now an instance variable.
>>> classinstance.common
10
>>> classinstance2.common
50

# This class inherits from MyClass. The example
# class above inherits from "object", which makes
# it what's called a "new-style class".
# Multiple inheritance is declared as:
# class OtherClass(MyClass1, MyClass2, MyClassN)
class OtherClass(MyClass):
    # The "self" argument is passed automatically
    # and refers to the class instance, so you can set
    # instance variables as above, but from inside the class.
    def __init__(self, arg1):
        self.myvariable = 3
        print(arg1)

>>> classinstance = OtherClass("hello")
hello
>>> classinstance.myfunction(1, 2)
3
# This class doesn't have a .test member, but
# we can add one to the instance anyway. Note
# that this will only be a member of classinstance.
>>> classinstance.test = 10
>>> classinstance.test
10

Pengecualian

Pengecualian di Python ditangani dengan blok try-except [exceptionname]:

def some_function():
    try:
        # Division by zero raises an exception
        10 / 0
    except ZeroDivisionError:
        print("Oops, invalid.")
    else:
        # Exception didn't occur, we're good.
        pass
    finally:
        # This is executed after the code block is run
        # and all exceptions have been handled, even
        # if a new exception is raised while handling.
        print("We're done with that.")

>>> some_function()
Oops, invalid.
We're done with that.

Mengimpor

Perpustakaan eksternal digunakan dengan kata kunci import [libname]. Anda juga dapat menggunakan from [libname] import [funcname] untuk fungsi individu. Berikut adalah contoh:

import random
from time import clock

randomint = random.randint(1, 100)
>>> print(randomint)
64

File I/O

Python memiliki serangkaian perpustakaan yang dibangun. Sebagai contoh, berikut adalah cara serialiasi (mengkonversi struktur data ke string menggunakan perpustakaan pickle) dengan file I/O digunakan:

import pickle
mylist = ["This", "is", 4, 13327]
# Open the file C:\\binary.dat for writing. The letter r before the
# filename string is used to prevent backslash escaping.
myfile = open(r"C:\\binary.dat", "wb")
pickle.dump(mylist, myfile)
myfile.close()

myfile = open(r"C:\\text.txt", "w")
myfile.write("This is a sample string")
myfile.close()

myfile = open(r"C:\\text.txt")
>>> print(myfile.read())
'This is a sample string'
myfile.close()

# Open the file for reading.
myfile = open(r"C:\\binary.dat", "rb")
loadedlist = pickle.load(myfile)
myfile.close()
>>> print(loadedlist)
['This', 'is', 4, 13327]

Berbagai

  • Kondisi dapat dirantai: 1 < a < 3 memeriksa bahwa a sama-sama kurang dari 3 dan lebih besar dari 1.
  • Anda dapat menggunakan del untuk menghapus variabel atau item dalam array.
  • Pemahaman daftar menyediakan cara yang ampuh untuk membuat dan memanipulasi daftar. Mereka terdiri dari ekspresi diikuti oleh klausa for diikuti oleh nol atau lebih if atau for klausa, seperti ini:
>>> lst1 = [1, 2, 3]
>>> lst2 = [3, 4, 5]
>>> print([x * y for x in lst1 for y in lst2])
[3, 4, 5, 6, 8, 10, 9, 12, 15]
>>> print([x for x in lst1 if 4 > x > 1])
[2, 3]
# Check if a condition is true for any items.
# "any" returns true if any item in the list is true.
>>> any([i % 3 for i in [3, 3, 4, 4, 3]])
True
# This is because 4 % 3 = 1, and 1 is true, so any()
# returns True.

# Check for how many items a condition is true.
>>> sum(1 for i in [3, 3, 4, 4, 3] if i == 4)
2
>>> del lst1[0]
>>> print(lst1)
[2, 3]
>>> del lst1
  • Variabel global dinyatakan di luar fungsi dan dapat dibaca tanpa deklarasi khusus apa pun, tetapi jika Anda ingin menulis ke mereka Anda harus mendeklarasinya di awal fungsi dengan kata kunci global, jika tidak Python akan mengikat objek itu ke variabel lokal baru (hati-hatilah, ini adalah tangkapan kecil yang dapat Anda dapatkan jika Anda tidak mengetahuinya).
number = 5

def myfunc():
    # This will print 5.
    print(number)

def anotherfunc():
    # This raises an exception because the variable has not
    # been bound before printing. Python knows that it an
    # object will be bound to it later and creates a new, local
    # object instead of accessing the global one.
    print(number)
    number = 3

def yetanotherfunc():
    global number
    # This will correctly change the global.
    number = 3

Epilog

Tutorial ini tidak dimaksudkan untuk menjadi daftar lengkap dari semua (atau bahkan subset) Python. Python memiliki berbagai perpustakaan dan lebih banyak fungsi yang harus Anda temukan melalui cara lain, seperti buku yang sangat baik Dive into Python. Saya harap saya telah membuat transisi Anda di Python lebih mudah. Silakan tinggalkan komentar jika Anda percaya ada sesuatu yang dapat ditingkatkan atau ditambahkan atau jika ada sesuatu yang ingin Anda lihat (kelas, penanganan kesalahan, apa pun).


Lebih banyak