Oleh itu, anda ingin belajar bahasa pengaturcaraan Python tetapi tidak dapat mencari tutorial ringkas dan penuh ciri. Tutorial ini akan cuba mengajar anda Python dalam 10 minit. Ini mungkin bukan tutorial kerana ia adalah persilangan antara tutorial dan cheatsheet, jadi ia hanya akan menunjukkan beberapa konsep asas untuk memulakan anda. Jelas, jika anda benar-benar ingin belajar bahasa anda perlu memprogram di dalamnya untuk sementara waktu. Saya akan menganggap bahawa anda sudah biasa dengan pengaturcaraan dan oleh itu akan melangkau kebanyakan perkara yang tidak khusus bahasa. Kata kunci penting akan disorot supaya anda dapat dengan mudah melihatnya. Juga, kerana kesempitan tutorial ini, beberapa perkara akan diperkenalkan secara langsung dalam kod dan hanya dikomentari secara ringkas.
Kita akan fokus pada Python 3, kerana itu adalah versi yang anda harus gunakan. semua contoh dalam buku adalah dalam Python 3, dan jika sesiapa menasihati anda untuk menggunakan 2, mereka bukan kawan anda.
Python sangat ditypkan (iaitu jenis yang dikuatkuasakan), dinamik, secara tersirat ditypkan (iaitu anda tidak perlu mengisytiharkan pembolehubah), sensitif huruf besar (iaitu var dan VAR adalah dua pembolehubah yang berbeza) dan berorientasikan objek (iaitu segala-galanya adalah objek).
Bantuan dalam Python sentiasa tersedia di penerjemah. Jika anda ingin tahu bagaimana objek berfungsi, yang perlu anda lakukan adalah memanggil
>>> help(5)
Help on int object:
(etc etc)
>>> dir(5)
['__abs__', '__add__', ...]
>>> abs.__doc__
'abs(number) -> number
Return the absolute value of the argument.
Python tidak mempunyai watak pengakhiran pernyataan wajib dan blok ditentukan dengan penggoresan. Indent untuk memulakan blok, dedent untuk menamatkan satu. Perkataan yang mengharapkan tahap penggoresan berakhir dengan titik titik (:). Komen bermula dengan tanda pound (#) dan berbaris tunggal, rentetan pelbagai baris digunakan untuk komen berbaris. Nilai diberikan (pada hakikatnya, objek terikat dengan nama) dengan tanda sama (
>>> 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
Struktur data yang tersedia dalam python adalah senarai, tuples dan kamus. Set tersedia di perpustakaan set (tetapi terbina dalam Python 2.5 dan kemudian). Senarai seperti array satu dimensi (tetapi anda juga boleh mempunyai senarai senarai lain), kamus adalah array asosiatif (juga dikenali sebagai jadual hash) dan tuples adalah array satu dimensi yang tidak dapat diubah (Python
>>> 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 boleh mengakses julat array menggunakan titik koma (:). Meninggalkan indeks permulaan kosong mengandaikan item pertama, meninggalkan indeks akhir mengandaikan item terakhir. Pengindeksan termasuk-eksklusif, jadi menentukan
>>> 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]
Stringnya boleh menggunakan tanda petikan tunggal atau berganda, dan anda boleh mempunyai tanda petik satu jenis di dalam rentetan yang menggunakan jenis yang lain (iaitu
>>> 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!
Perkataan kawalan aliran adalah
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 diisytiharkan dengan kata kunci
# 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
Python menyokong satu bentuk yang terhad warisan berganda dalam kelas. pembolehubah peribadi dan kaedah boleh diisytiharkan (dengan konvensyen, ini tidak dikuatkuasakan oleh bahasa) dengan menambah tanda bawah utama (contohnya
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 dalam Python dikendalikan dengan blok try-except [nama pengecualian]:
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.
Perpustakaan luaran digunakan dengan kata kunci
import random
from time import clock
randomint = random.randint(1, 100)
>>> print(randomint)
64
Python mempunyai pelbagai perpustakaan terbina dalam. Sebagai contoh, berikut adalah cara mengurutkan (mengubah struktur data menjadi rentetan menggunakan perpustakaan
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]
>>> 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
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
Tutorial ini tidak dimaksudkan untuk menjadi senarai lengkap semua (atau bahkan subset) Python. Python mempunyai pelbagai perpustakaan dan banyak lagi fungsi yang perlu anda temui melalui cara lain, seperti buku yang sangat baik Dive into Python. Saya harap saya telah membuat peralihan anda di Python lebih mudah. Sila tinggalkan komen jika anda percaya ada sesuatu yang boleh diperbaiki atau ditambah atau jika ada sesuatu yang lain yang anda ingin lihat (kelas, penanganan ralat, apa-apa).