Khóa học nhập môn Python

Chào mừng bạn đến với hướng dẫn trực tuyến về Python của Google. Nó dựa trên khóa học Python cơ bản được cung cấp nội bộ. Như đã đề cập trên trang thiết lập, tài liệu này bao gồm Python 3

Nếu bạn đang tìm kiếm một khóa học MOOC đồng hành, hãy thử những khóa học từ Udacity và Coursera [giới thiệu về lập trình [người mới bắt đầu] hoặc giới thiệu về Python]. Cuối cùng, nếu bạn đang muốn tự học trực tuyến mà không cần xem video, hãy thử những cách được liệt kê ở cuối bài đăng này — mỗi nội dung học tập đều có tính năng cũng như trình thông dịch tương tác Python mà bạn có thể thực hành. "Thông dịch viên" mà chúng tôi đề cập là gì?

Giới thiệu ngôn ngữ

Python là một ngôn ngữ động, được giải thích [biên dịch mã byte]. Không có khai báo kiểu của biến, tham số, hàm hoặc phương thức trong mã nguồn. Điều này làm cho mã ngắn gọn và linh hoạt, đồng thời bạn không phải kiểm tra kiểu thời gian biên dịch của mã nguồn. Python theo dõi các loại của tất cả các giá trị trong thời gian chạy và đánh dấu mã không có ý nghĩa khi nó chạy

Một cách tuyệt vời để xem mã Python hoạt động như thế nào là chạy trình thông dịch Python và nhập mã ngay vào đó. Nếu bạn từng có câu hỏi như "Điều gì xảy ra nếu tôi thêm

#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
9 vào
$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice
0?" . [Xem bên dưới để biết điều gì thực sự xảy ra. ]

$ python        ## Run the Python interpreter
Python 3.X.X [XXX, XXX XX XXXX, 03:41:42] [XXX] on XXX
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 6       ## set a variable in this interpreter session
>>> a           ## entering an expression prints its value
6
>>> a + 2
8
>>> a = 'hi'    ## 'a' can hold a string just as well
>>> a
'hi'
>>> len[a]      ## call the len[] function on a string
2
>>> a + len[a]  ## try something that doesn't work
Traceback [most recent call last]:
  File "", line 1, in 
TypeError: can only concatenate str [not "int"] to str
>>> a + str[len[a]]  ## probably what you really wanted
'hi2'
>>> foo         ## try something else that doesn't work
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'foo' is not defined
>>> ^D          ## type CTRL-d to exit [CTRL-z in Windows/DOS terminal]

Hai dòng python in sau khi bạn nhập python và trước dấu nhắc >>> cho bạn biết về phiên bản python bạn đang sử dụng và nơi nó được tạo. Miễn là thứ đầu tiên được in là "Python 3. ", những ví dụ này sẽ phù hợp với bạn

Như bạn có thể thấy ở trên, thật dễ dàng để thử nghiệm với các biến và toán tử. Ngoài ra, trình thông dịch ném hoặc "tăng" theo cách nói của Python, lỗi thời gian chạy nếu mã cố đọc một biến chưa được gán giá trị. Giống như C++ và Java, Python phân biệt chữ hoa chữ thường nên "a" và "A" là các biến khác nhau. Phần cuối của một dòng đánh dấu sự kết thúc của một câu lệnh, vì vậy không giống như C++ và Java, Python không yêu cầu dấu chấm phẩy ở cuối mỗi câu lệnh. Nhận xét bắt đầu bằng dấu '#' và kéo dài đến cuối dòng

Mã nguồn Python

Các tệp nguồn Python sử dụng ". py" và được gọi là "mô-đun. " Với một mô-đun Python

$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice
1, cách dễ nhất để chạy nó là sử dụng lệnh shell "python hello. py Alice" gọi trình thông dịch Python để thực thi mã trong
$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice
1, chuyển cho nó đối số dòng lệnh "Alice". Xem trang tài liệu chính thức về tất cả các tùy chọn khác nhau mà bạn có khi chạy Python từ dòng lệnh

Đây là một chương trình

$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice
1 rất đơn giản [lưu ý rằng các khối mã được phân định rõ ràng bằng cách sử dụng dấu thụt đầu dòng thay vì dấu ngoặc nhọn — sẽ nói thêm về điều này sau. ]

#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]

Chạy chương trình này từ dòng lệnh trông giống như

$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice

Nhập khẩu, đối số dòng lệnh và
#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
2

Các câu lệnh ngoài cùng trong tệp Python, hoặc "mô-đun", thực hiện thiết lập một lần — các câu lệnh đó chạy từ trên xuống dưới khi mô-đun được nhập lần đầu tiên ở đâu đó, thiết lập các biến và chức năng của nó. Một mô-đun Python có thể được chạy trực tiếp — như trên "python hello. py Bob" - hoặc nó có thể được nhập và sử dụng bởi một số mô-đun khác. Khi tệp Python được chạy trực tiếp, biến đặc biệt "__name__" được đặt thành "__main__". Do đó, thường có bản soạn sẵn

#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
3 hiển thị ở trên để gọi hàm main[] khi mô-đun được chạy trực tiếp, chứ không phải khi mô-đun được nhập bởi một số mô-đun khác

Trong một chương trình Python tiêu chuẩn, danh sách

#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
4 chứa các đối số dòng lệnh theo cách tiêu chuẩn với sys. argv[0] chính là chương trình, sys. argv[1] đối số đầu tiên, v.v. Nếu bạn biết về
#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
5 hoặc số lượng đối số, bạn có thể chỉ cần yêu cầu giá trị này từ Python với
#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
6, giống như chúng ta đã làm trong mã trình thông dịch tương tác ở trên khi yêu cầu độ dài của chuỗi. Nói chung,
#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
2 có thể cho bạn biết độ dài của một chuỗi, số lượng phần tử trong danh sách và bộ dữ liệu [một cấu trúc dữ liệu dạng mảng khác] và số lượng cặp khóa-giá trị trong từ điển

Hàm do người dùng định nghĩa

Các hàm trong Python được định nghĩa như thế này

# Defines a "repeat" function that takes 2 arguments.
def repeat[s, exclaim]:
    """
    Returns the string 's' repeated 3 times.
    If exclaim is true, add exclamation marks.
    """

    result = s + s + s # can also use "s * 3" which is faster [Why?]
    if exclaim:
        result = result + '!!!'
    return result

Cũng lưu ý cách các dòng tạo nên hàm hoặc câu lệnh if được nhóm lại bởi tất cả đều có cùng mức thụt đầu dòng. Chúng tôi cũng đã trình bày 2 cách khác nhau để lặp lại chuỗi, sử dụng toán tử + thân thiện với người dùng hơn, nhưng * cũng hoạt động vì đó là toán tử "lặp lại" của Python, nghĩa là

#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
8 cung cấp cho
#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
9, một cách gọn gàng để tạo một dòng "trên màn hình. " Trong nhận xét mã, chúng tôi gợi ý rằng * hoạt động nhanh hơn +, lý do là * tính toán kích thước của đối tượng kết quả một lần trong khi với +, phép tính đó được thực hiện mỗi lần + được gọi. Cả + và * đều được gọi là toán tử "quá tải" vì chúng có ý nghĩa khác nhau đối với số so với. cho chuỗi [và các loại dữ liệu khác]

Từ khóa

$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice
0 xác định chức năng với các tham số của nó trong ngoặc đơn và mã của nó được thụt vào. Dòng đầu tiên của hàm có thể là một chuỗi tài liệu ["docstring"] mô tả chức năng của hàm đó. Chuỗi tài liệu có thể là một dòng hoặc mô tả nhiều dòng như trong ví dụ trên. [Vâng, đó là "ba trích dẫn", một tính năng độc đáo của Python. ] Các biến được định nghĩa trong hàm là cục bộ của hàm đó, vì vậy "kết quả" trong hàm trên tách biệt với biến "kết quả" trong hàm khác. Câu lệnh
$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice
1 có thể lấy một đối số, trong trường hợp đó là giá trị được trả về cho người gọi

Đây là mã gọi hàm repeat[] ở trên, in những gì nó trả về

#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
4

Trong thời gian chạy, các chức năng phải được xác định bằng cách thực thi "def" trước khi chúng được gọi. Thông thường, hàm main[] sẽ được đặt ở dưới cùng của tệp với các hàm mà nó gọi phía trên nó

thụt đầu dòng

Một tính năng bất thường của Python là việc thụt lề khoảng trắng của một đoạn mã ảnh hưởng đến ý nghĩa của nó. Một khối logic của các câu lệnh, chẳng hạn như các câu lệnh tạo nên một hàm, tất cả phải có cùng một khoảng thụt đầu dòng, được đặt từ dấu đầu dòng của hàm cha của chúng hoặc "nếu" hoặc bất kỳ thứ gì. Nếu một trong các dòng trong một nhóm có cách thụt đầu dòng khác, thì dòng đó được gắn cờ là lỗi cú pháp

Việc sử dụng khoảng trắng của Python lúc đầu cảm thấy hơi lạ, nhưng nó hợp lý và tôi thấy mình đã quen với nó rất nhanh. Tránh sử dụng TAB vì chúng làm phức tạp rất nhiều sơ đồ thụt đầu dòng [chưa kể TAB có thể có ý nghĩa khác nhau trên các nền tảng khác nhau]. Đặt trình chỉnh sửa của bạn để chèn khoảng trắng thay vì TAB cho mã Python

Một câu hỏi phổ biến mà những người mới bắt đầu hỏi là "Tôi nên thụt lề bao nhiêu khoảng trống?" . [Sự thật thú vị. Nguyên tắc phong cách nội bộ của Google yêu cầu thụt lề bằng 2 dấu cách. ]

Mã được kiểm tra trong thời gian chạy

Python thực hiện rất ít kiểm tra tại thời điểm biên dịch, trì hoãn hầu hết tất cả các loại, tên, v.v. kiểm tra từng dòng cho đến khi dòng đó chạy. Giả sử các cuộc gọi main[] ở trên repeat[] như thế này

#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
5

Câu lệnh if chứa một lỗi rõ ràng, trong đó hàm repeat[] vô tình được nhập thành repeeeet[]. Điều buồn cười trong Python. mã này biên dịch và chạy tốt miễn là tên trong thời gian chạy không phải là 'Guido'. Chỉ khi một lần chạy thực sự cố gắng thực thi lệnh lặp lại [] thì nó mới thông báo rằng không có chức năng đó và phát sinh lỗi. Ngoài ra còn có một lỗi thứ hai trong đoạn mã này. tên không được gán giá trị trước khi nó được so sánh với 'Guido'. Python sẽ báo lỗi 'NameError' nếu bạn cố đánh giá một biến chưa được gán. Đây là một số ví dụ chứng minh rằng khi bạn chạy chương trình Python lần đầu tiên, một số lỗi đầu tiên bạn thấy sẽ là lỗi chính tả đơn giản hoặc các biến chưa được khởi tạo như thế này. Đây là một lĩnh vực mà các ngôn ngữ có hệ thống kiểu dài dòng hơn, như Java, có lợi thế hơn. họ có thể bắt lỗi như vậy tại thời điểm biên dịch [nhưng tất nhiên bạn phải duy trì tất cả thông tin loại đó. đó là một sự đánh đổi]

Tên biến

Vì các biến Python không có bất kỳ loại nào được đánh vần trong mã nguồn, nên việc đặt tên có ý nghĩa cho các biến của bạn để nhắc nhở bản thân về những gì đang diễn ra sẽ rất hữu ích. Vì vậy, hãy sử dụng "tên" nếu đó là một tên và "tên" nếu đó là danh sách tên và "bộ" nếu đó là danh sách các bộ. Nhiều lỗi Python cơ bản là do quên loại giá trị trong mỗi biến, vì vậy hãy sử dụng tên biến của bạn [tất cả những gì bạn thực sự có] để giúp mọi thứ diễn ra suôn sẻ

Theo như cách đặt tên thực tế, một số ngôn ngữ thích underscored_parts hơn cho các tên biến được tạo thành từ "nhiều hơn một từ", nhưng các ngôn ngữ khác thích camelCasing. Nói chung, Python thích phương thức gạch dưới nhưng hướng dẫn các nhà phát triển trì hoãn sử dụng camelCasing nếu tích hợp vào mã Python hiện có đã sử dụng kiểu đó. số lượng khả năng đọc. Đọc thêm trong phần về quy ước đặt tên trong PEP 8

Như bạn có thể đoán, các từ khóa như 'if' và 'while' không thể được sử dụng làm tên biến — bạn sẽ gặp lỗi cú pháp nếu làm như vậy. Tuy nhiên, hãy cẩn thận không sử dụng các phần dựng sẵn làm tên biến. Ví dụ: trong khi 'str', 'list' và 'print' có vẻ là những cái tên hay, thì bạn sẽ ghi đè các biến hệ thống đó. Các phần dựng sẵn không phải là từ khóa và do đó, dễ bị các nhà phát triển Python mới vô tình sử dụng

Thông tin thêm về Mô-đun và Không gian tên của chúng

Giả sử bạn có một mô-đun "binky. py" có chứa "def foo[]". Tên đầy đủ của hàm foo đó là "binky. foo". Theo cách này, các mô-đun Python khác nhau có thể đặt tên cho các hàm và biến của chúng theo bất kỳ thứ gì chúng muốn và các tên biến sẽ không xung đột — module1. foo khác với module2. foo. Trong từ vựng Python, chúng tôi muốn nói rằng mỗi binky, module1 và module2 đều có "không gian tên" riêng, mà bạn có thể đoán là các liên kết tên-đối tượng biến

Ví dụ: chúng tôi có mô-đun "sys" tiêu chuẩn chứa một số cơ sở hệ thống tiêu chuẩn, như danh sách argv và hàm exit[]. Với câu lệnh "nhập sys", bạn có thể truy cập các định nghĩa trong mô-đun sys và cung cấp chúng bằng tên đủ điều kiện của chúng, e. g. hệ thống. lối ra[]. [Vâng, 'sys' cũng có một không gian tên. ]

#!/usr/bin/env python

# import modules used here -- sys is a very standard one
import sys

# Gather our code in a main[] function
def main[]:
    print['Hello there', sys.argv[1]]
    # Command line args are in sys.argv[1], sys.argv[2] ...
    # sys.argv[0] is the script name itself and can be ignored

# Standard boilerplate to call the main[] function to begin
# the program.
if __name__ == '__main__':
    main[]
6

Có một hình thức nhập khẩu khác trông giống như thế này. "từ sys nhập argv, thoát". Điều đó làm cho argv và exit[] có sẵn bằng tên viết tắt của chúng;

Có nhiều mô-đun và gói đi kèm với bản cài đặt tiêu chuẩn của trình thông dịch Python, vì vậy bạn không cần phải làm gì thêm để sử dụng chúng. Chúng được gọi chung là "Thư viện chuẩn Python. " Các mô-đun/gói thường được sử dụng bao gồm

  • sys — truy cập để thoát [], argv, stdin, thiết bị xuất chuẩn,
  • lại - biểu thức chính quy
  • os — giao diện hệ điều hành, hệ thống tập tin

Bạn có thể tìm tài liệu về tất cả các gói và mô-đun Thư viện Chuẩn tại http. // tài liệu. con trăn. tổ chức/thư viện

Trợ giúp trực tuyến,
$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice
2 và
$ python hello.py Guido
Hello there Guido
$ ./hello.py Alice  ## without needing 'python' first [Unix]
Hello there Alice
3

Có nhiều cách để nhận trợ giúp về Python

  • Thực hiện tìm kiếm trên Google, bắt đầu bằng từ "python", như "danh sách trăn" hoặc "chữ thường chuỗi trăn". Cú đánh đầu tiên thường là câu trả lời. Kỹ thuật này dường như hoạt động tốt hơn với Python so với các ngôn ngữ khác vì một số lý do
  • Trang web tài liệu Python chính thức — docs. con trăn. org — có tài liệu chất lượng cao. Tuy nhiên, tôi thường tìm kiếm một vài từ trên Google để nhanh hơn
  • Ngoài ra còn có một danh sách gửi thư Tutor chính thức được thiết kế dành riêng cho những người mới làm quen với Python và/hoặc lập trình
  • Nhiều câu hỏi [và câu trả lời] có thể được tìm thấy trên StackOverflow và Quora
  • Sử dụng các hàm help[] và dir[] [xem bên dưới]

Bên trong trình thông dịch Python, hàm help[] kéo lên các chuỗi tài liệu cho các mô-đun, hàm và phương thức khác nhau. Các chuỗi tài liệu này tương tự như javadoc của Java. Hàm dir[] cho bạn biết các thuộc tính của một đối tượng là gì. Dưới đây là một số cách gọi help[] và dir[] từ trình thông dịch

Khóa học Python mới bắt đầu tốt nhất là gì?

10 khóa học Python trực tuyến hàng đầu .
Chuyên ngành Python cho mọi người. khóa học. .
Tự động hóa CNTT của Google với Python. Google. .
Hoàn thành chương trình đào tạo Python. Udemy. .
Nguyên tắc cơ bản về Python. .
Tính toán bằng Python I. Nguyên tắc cơ bản và lập trình thủ tục. .
Python cho người mới bắt đầu. .
Bắt đầu nhanh Python. .
Hoàn thành Nhà phát triển Python vào năm 2022. Zero to Mastery

3 tháng có đủ cho Python không?

Nói chung, bạn mất khoảng hai đến sáu tháng để tìm hiểu các kiến ​​thức cơ bản về Python . Nhưng bạn có thể học đủ để viết chương trình ngắn đầu tiên của mình chỉ trong vài phút. Việc phát triển thành thạo mảng thư viện rộng lớn của Python có thể mất hàng tháng hoặc hàng năm.

Tôi có thể học Python khi mới bắt đầu không?

Python có thể được coi là thân thiện với người mới bắt đầu, vì đây là ngôn ngữ lập trình ưu tiên khả năng đọc, giúp dễ hiểu và dễ sử dụng hơn. Cú pháp của nó có những điểm tương đồng với ngôn ngữ tiếng Anh, giúp các lập trình viên mới làm quen dễ dàng bước vào thế giới phát triển

Tôi có thể học Python trong 3 ngày không?

Học Python dễ đến mức bạn có thể học nó trong 3 ngày. Mặc dù bạn sẽ không trở thành một chuyên gia trong lĩnh vực này nhưng bạn sẽ cảm thấy thoải mái với nó. Sau khi học những điều cơ bản, bạn chỉ phải học cách sử dụng các thư viện theo công việc của mình. Có các thư viện khác nhau cho các nhiệm vụ khác nhau

Chủ Đề