Daily Archives: 20/01/2016

Python – Các thành phần của ngôn ngữ Python

Ngôn ngữ lập trình cũng như ngôn ngữ tự nhiên của con người, tất cả đều có các thành phần cấu tạo nên nó. Các thành phần của Python gồm có chú thích (comment), biến (variable), giá trị (value), toán tử (operator), từ khóa (keyword), và ký hiệu (delimeter).

Chú thích

Các dòng chú thích được dùng để ghi chú cho người viết code dễ đọc các đoạn code khác, chú thích không được dịch bởi trình thông dịch. Để biến một dòng thành chú thích thì chúng ta thêm dấu # vào trước dòng đó.

>>># Day la ham main
>>># Tac gia Pho Code

def main():
    print ("Comments example")

main()

Tất cả những dòng phía sau dấu # đều không được dịch bởi trình thông dịch.

Biến

Biến là một cái tên dùng để lưu trữ một giá trị nào đó, có thể là một số, một chuỗi kí tự… Khác với các ngôn ngữ lập trình như C, Java… bạn phải khai báo cả kiểu dữ liệu đi kèm, thì trong Python bạn không phải khai báo kiểu dữ liệu, trình thông dịch Python sẽ tự phát hiện kiểu dữ liệu khi bạn gán giá trị cho biến đó.

Biến trong Python được đặt tên bằng chữ cái, chữ số và dấu gạch dưới _, tuy nhiên tên biến không được phép bắt đầu bằng chữ số, còn lại chữ cái và dấu _ thì được phép.

Value
value2
company_name

Trên đây là những tên biến hợp lệ.

12Val
exx$
first-name

Trên đây là những tên biến không hợp lệ.

Tên biến trong Python phân biệt chữ HOA và thường, tức là Price, price, và PRICE là ba biến khác nhau.

number = 10
Number = 11
NUMBER = 12

print (number, Number, NUMBER)

Đoạn code trên gán 3 giá trị số vào 3 biến khác nhau.

10 11 12

Giá trị

Giá trị là các ký tự đại diện cho một đại lượng gắn liền với một biến nào đó.

age = 29
nationality = "Hungarian"

Trên đây agenationality là các biến. 29"Hungarian" là các giá trị.


# literals.py

name1 = "Jane"
age1 = 12

name2 = "Rose"
age2 = 16

"Patrick"
34

"Luke"
23

print (name1, age1)
print (name2, age2)

Nếu chúng ta không gán các giá trị vào biến thì chúng sẽ bị hủy bỏ.

Jane 12
Rose 16

Toán tử

Toán tử chính là các phép tính toán.

+    -    ~    *    **    /    %
<< >>    &    |    ^
and    or    not    in    not in 
is    is not    < >    !=    <>
==    <= >=

Trên đây là danh sách các toán tử trong ngôn ngữ Python. Chúng ta sẽ nói chi tiết về các toán tử ở bài sau.

Khối lệnh

Trong các ngôn ngữ lập trình khác như Pascal, Java… một khối lệnh được nằm trong cặp dấu {} hoặc cặp từ khóa BEGINEND. Còn Python thì dùng khoảng trắng, bạn có thể dùng dấu tab hoặc dấu cách (space) đều được. Trên hướng dẫn của Python khuyến khích dùng 4 dấu cách.

if age > 18:
    print ("adult person")

for i in range(5):
    print (i)

Trong đoạn code trên, sau câu lệnh if là một khối lệnh. Câu lệnh mới trong khối lệnh này phải thụt dòng vào trong. Khi muốn thoát ra khỏi khối lệnh thì thụt ra ngoài 🙂 Giả sử như câu lệnh for cũng thụt vào bằng chiều dài với câu lệnh print thì câu lệnh for nằm cùng khối lệnh với câu lệnh print.

Ký hiệu

Các ký hiệu dùng để bao bọc lấy các biểu thức, điều kiện… Trong các ví dụ trước có hàm print chúng ta phải dùng cặp ký hiệu () để bao bọc lấy nội dung cần được in ra màn hình. Thực ra đối với Python 2.x thì lệnh print không cần cặp ký tự này, nhưng Python 3.x thì phải có cặp ký tự này, lý do là vì trong phiên bản 2.x, print là một câu lệnh nhưng trong 3.x thì print đã được phát triển thành một hàm riêng.

(       )       [       ]       {       }      
,       :       .       `       =       ;
+=      -=      *=      /=      //=     %=
<= |= ^= >>=     <<=     **=
'       "       \       @

Từ khóa

Từ khóa là các từ dành riêng cho Python. Từ khóa thường được dùng để thi hành một lệnh nào đó, hoặc tên của một thành phần trong Python. Chẳng hạn từ khóa if thi hành lệnh so sánh. Từ khóa for để bắt đầu một vòng lặp, từ khóa and là tên của toán tử and… Bạn không được đặt tên biến hay tên hàm trùng với tên của các từ khóa.

and       del       from      not       while
as        elif      global    or        with
assert    else      if        pass      yield
break     except    import    print
class     exec      in        raise
continue  finally   is        return 
def       for       lambda    try

Trên đây là danh sách các từ khóa trong Python. Chúng ta sẽ tìm hiểu sâu hơn về từ khóa trong bài khác.

Python – Trình thông dịch Python

Trong bài này chúng ta sẽ cùng tìm hiểu về cách sử dụng trình thông dịch Python.

Như đã nói ở phần trước, có 2 cách để chạy các đoạn code Python. Một là dùng trực tiếp trong trình thông dịch, hai là chạy trên file script riêng.

C:\Users\PhoCode\python hello_world.py
Hello World!

Ở trên là cách sử dụng bằng cách viết file script.

Trình thông dịch Python

Nhưng trong phần này chúng ta sẽ không viết code trong file riêng mà chúng ta sẽ dùng trình thông dịch Python. Trình thông dịch này rất hữu ích cho việc khám phá thế giới của Python. Mỗi khi chúng ta muốn test một hàm, một module nào đó… cách nhanh nhất là mở trình thông dịch Python lên và test chứ ngồi tạo một file script rồi viết thì mất thời gian quá. Để chạy trình thông dịch Python, bạn mở terminal lên (trong Windows là Command Prompt – cmd) rồi gõ lệnh python.exe.

C:\Users\PhoCode>python.exe 
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>

Python sẽ hiện ra câu giới thiệu với tên, phiên bản… ở đây mình dùng là phiên bản 3.5.1. Sau đó là dấu nhắc lệnh >>> đặc trưng của Python. Nếu muốn thoát Python, bạn gõ lệnh quit() hoặc exit().

Bây giờ chúng ta tìm hiểu một số lệnh cơ bản.

>>> credits
    Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
    for supporting Python development.  See www.python.org for more information.

Như trong dòng giới thiệu của Python, bạn có thể gõ credits, copyright, hoặc license() để xem một số thông tin. Như trên mình gõ credits, Python hiện ra thông tin của những tổ chức đã góp phần phát triển nên Python.

>>> copyright
Copyright (c) 2001-2011 Python Software Foundation.
All Rights Reserved.

Copyright (c) 2000 BeOpen.com.
All Rights Reserved.

Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.

Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
All Rights Reserved.

Lệnh copyright hiện ra thông tin bản quyền của ngôn ngữ Python.

Lệnh license() hiện ra quy định sử dụng của Python. Khi dùng lệnh này, Python chỉ hiện ra từng đoạn ngắn chứ không hiện hết, bạn bấm Enter để Python hiện ra dần dần hoặc bấm q để thoát.

Lệnh help()

Lệnh help cung cấp các thông tin trợ giúp cho bạn trong việc sử dụng Python.

>>> help
Type help() for interactive help, or help(object) for help about object.
>>> 

Có hai cách để dùng trợ giúp. Bạn có thể gõ help() và Python sẽ chuyển sang chế độ trợ giúp, hoặc gõ help(<tên>) để nhận ngay trợ giúp về tên của một thành phần nào đó trong Python.

Ví dụ, gõ help(True) thì Python sẽ hiện ra thông tin về các đối tượng bool.

Help on bool object:

class bool(int)
 |  bool(x) -> bool
 |  
 |  Returns True when the argument x is true, False otherwise.
 |  The builtins True and False are the only two instances of the class bool.
 |  The class bool is a subclass of the class int, and cannot be subclassed.
 |  
 |  Method resolution order:
 |      bool
 |      int
 |      object
 |  
 |  Methods defined here:
 |  
 |  __and__(...)
 |      x.__and__(y) <==> x&yhelp()

 ...

Nếu phần thông tin trợ giúp quá dài, bạn bấm Enter để python tiếp tục hiện ra. Nếu muốn thoát thì bấm phím q.

Bây giờ chúng ta thử gõ help() để chuyển sang chế độ trợ giúp.

>>> help()

Welcome to Python 2.7!  This is the online help utility.

If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules.  To quit this help utility and
return to the interpreter, just type "quit".

To get a list of available modules, keywords, or topics, type "modules",
"keywords", or "topics".  Each module also comes with a one-line summary
of what it does; to list the modules whose summaries contain a given word
such as "spam", type "modules spam".

help> 

Đoạn giới thiệu về chế độ trợ giúp của Python hiện ra, nếu muốn thoát thì bạn gõ quit.

Tại đây bạn có thể gõ vào tên của bất kỳ thành phần nào có trong Python và Python sẽ in ra đầy đủ thông tin của thành phần đó. Ngoài ra nếu bạn chưa biết hết tên về các thành phần có trong Python, bạn có thể gõ modules và Python sẽ hiện ra tên các module có trong Python, gõ keywords để Python hiện ra danh sách các từ khóa, gõ topics để Python hiện ra danh sách các chủ đề.

help> keywords

Here is a list of the Python keywords.  Enter any keyword to get more help.

and                 elif                if                  print
as                  else                import              raise
assert              except              in                  return
break               exec                is                  try
class               finally             lambda              while
continue            for                 not                 with
def                 from                or                  yield
del                 global              pass

keywords để hiện ra danh sách các từ khóa trong Python. Sau đó bạn có thể gõ một từ khóa nào đó và Python sẽ cung cấp thông tin của từ khóa đó. Modules và topics cũng tương tự.

help> if
The "if" statement
******************
The "if" statement is used for conditional execution:
if_stmt ::= "if" expression ":" suite
 ( "elif" expression ":" suite )*
 ["else" ":" suite]
It selects exactly one of the suites by evaluating the expressions one
by one until one is found to be true (see section *Boolean operations*
for the definition of true and false); then that suite is executed
(and no other part of the "if" statement is executed or evaluated).
If all expressions are false, the suite of the "else" clause, if
present, is executed.
Related help topics: TRUTHVALUE
help>

Ở trên mình gõ từ khóa if và Python hiện ra thông tin của từ khóa này.

Viết code trong Python

Đây mới là sự tiện lợi bậc nhất mà Python đem lại.

>>> 2 + 4
6
>>> 5 * 56
280
>>> 5 - 45
-40
>>> 

Bạn có thể dùng Python làm một chiếc máy tính. Khi bạn gõ một biểu thức nào đó, Python sẽ tính toán ngay và trả lại kết quả cho bạn.

>>> a = 3
>>> b = 4
>>> a**b
81
>>> a == b
False
>>> a < b True >>>

Ngoài ra bạn có thể định nghĩa biến và thực hiện tính toán trên chúng. Lưu ý ** là phép lấy lũy thừa nhé.

>>> class Car:
...   pass
... 
>>> def function():
...   pass
... 
>>> for i in range(5):
...   print (i)
... 
0
1
2
3
4
>>> 

Bạn có thể định nghĩa lớp, hàm, các lệnh điều khiển… Lưu ý là bạn phải nhớ bấm Tab để thụt dòng vì Python dùng dấu thụt dòng này để nhận biết các câu lệnh và khối lệnh. Khi muốn thoát khỏi một khối lệnh thì bạn bấm Enter hai lần.

>>> import os
>>> os.getcwd()
C:\\Python

Ở trên chúng ta báo với Python là chúng ta sẽ sử dụng module os bằng câu lệnh import, sau đó chúng ta dùng phương thức getcwd() để lấy đường dẫn thư mục hiện tại.

Cuối cùng, nếu bạn muốn thoát Python, gõ lệnh quit() hoặc exit(), cái nào cũng được.

Triết lý Python – The Zen of Python

Đây chắc là một bài thơ hay cái gì đó mình cũng không rõ ^^. Để hiện ra đoạn “triết lý” này thì bạn gõ import this.

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!