Vì vậy, bạn muốn học ngôn ngữ lập trình Python nhưng không thể tìm thấy một hướng dẫn ngắn gọn nhưng đầy đủ tính năng. Bài hướng dẫn này sẽ cố gắng dạy bạn Python trong 10 phút. Nó có lẽ không phải là một hướng dẫn mà là một sự chéo giữa một hướng dẫn và một trang cheatsheet, vì vậy nó sẽ chỉ cho bạn thấy một số khái niệm cơ bản để bắt đầu. Rõ ràng, nếu bạn thực sự muốn học một ngôn ngữ bạn cần lập trình trong đó trong một thời gian. Tôi sẽ giả định rằng bạn đã quen thuộc với lập trình và do đó sẽ bỏ qua hầu hết các thứ không cụ thể về ngôn ngữ. Các từ khóa quan trọng sẽ được làm nổi bật để bạn có thể dễ dàng phát hiện chúng. Ngoài ra, bởi vì, do sự ngắn gọn của bài hướng dẫn này, một số thứ sẽ được giới thiệu trực tiếp trong mã và chỉ được bình luận ngắn gọn.
Chúng tôi sẽ tập trung vào Python 3, vì đó là phiên bản bạn nên sử dụng. Tất cả các ví dụ trong cuốn sách đều ở Python 3, và nếu ai khuyên bạn nên sử dụng 2, họ không phải là bạn của bạn.
Python có kiểu mạnh mẽ (tức là các loại được thực thi), động, ẩn kiểu (tức là bạn không cần phải tuyên bố biến), nhạy với chữ cái (tức là var và VAR là hai biến khác nhau) và hướng đối tượng (tức là mọi thứ là một đối tượng).
Trợ giúp trong Python luôn có sẵn ngay trong trình diễn. Nếu bạn muốn biết một đối tượng hoạt động như thế nào, tất cả những gì bạn phải làm là gọi
>>> 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 không có các ký tự kết thúc câu lệnh bắt buộc và các khối được chỉ định bằng cách nhấp. Nhấp để bắt đầu một khối, giảm để kết thúc một. Các câu lệnh mong đợi mức nhấp kết thúc bằng dấu chấm hai (:). Các bình luận bắt đầu bằng dấu pound (#) và là một dòng, chuỗi nhiều dòng được sử dụng cho các bình luận nhiều dòng. Các giá trị được gán (thực tế, các đối tượng bị ràng buộc với tên) với dấu bằng (
>>> 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
Các cấu trúc dữ liệu có sẵn trong python là danh sách, tuples và từ điển. Các tập hợp có sẵn trong thư viện tập hợp (nhưng được tích hợp trong Python 2.5 và mới hơn). Danh sách giống như mảng một chiều (nhưng bạn cũng có thể có danh sách các danh sách khác), từ điển là mảng liên kết (hay còn gọi là bảng băm) và tuples là mảng một chiều không thể thay đổi (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
Bạn có thể truy cập phạm vi mảng bằng dấu chấm hai dấu (:). Để lại chỉ mục bắt đầu trống giả định mục đầu tiên, để lại chỉ mục cuối giả định mục cuối cùng. Chỉ mục là bao gồm-độc quyền, vì vậy chỉ định
>>> 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]
Các chuỗi của nó có thể sử dụng dấu ngoặc kép đơn hoặc đôi, và bạn có thể có dấu ngoặc kép của một loại bên trong một chuỗi sử dụng loại khác (ví dụ:
>>> 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!
Các câu lệnh kiểm soát dòng chảy là
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!")
Các hàm được tuyên bố bằng từ khóa
# 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 hỗ trợ một hình thức giới hạn về thừa kế nhiều trong các lớp. Các biến riêng và phương thức có thể được tuyên bố (theo quy ước, điều này không được thực thi bởi ngôn ngữ) bằng cách thêm một dấu gạch dưới dẫn đầu (ví dụ:
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
Các ngoại lệ trong Python được xử lý bằng các khối 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.
Các thư viện bên ngoài được sử dụng với từ khóa
import random
from time import clock
randomint = random.randint(1, 100)
>>> print(randomint)
64
Python có một loạt các thư viện được xây dựng trong. Ví dụ, đây là cách sử dụng serializing (chuyển đổi cấu trúc dữ liệu thành chuỗi bằng thư viện
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
Bài hướng dẫn này không có nghĩa là một danh sách đầy đủ của tất cả (hoặc thậm chí một tập con) của Python. Python có một loạt các thư viện và nhiều chức năng khác mà bạn sẽ phải khám phá thông qua các phương tiện khác, chẳng hạn như cuốn sách tuyệt vời Thâm nhập vào Python. Tôi hy vọng tôi đã làm cho quá trình chuyển đổi của bạn trong Python dễ dàng hơn. Xin vui lòng để lại bình luận nếu bạn tin rằng có một cái gì đó có thể được cải thiện hoặc thêm hoặc nếu có bất cứ điều gì khác bạn muốn xem (lớp học, xử lý lỗi, bất cứ điều gì).