Cách gọi hàm trong sổ ghi chép Python Jupyter

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?

Trong bài viết này của Cyrille Rossant, trích từ cuốn sách của anh ấy, Learning IPython for Interactive Computing and Data Visualization – Second Edition, chúng ta sẽ xem cách sử dụng bảng điều khiển IPython, Jupyter Notebook và tìm hiểu những điều cơ bản về Python

Ban đầu, IPython cung cấp bảng điều khiển dòng lệnh nâng cao để chạy mã Python một cách tương tác. Máy tính xách tay Jupyter là một sự thay thế mới hơn và tinh vi hơn cho bảng điều khiển. Ngày nay, cả hai công cụ đều khả dụng và chúng tôi khuyên bạn nên học cách sử dụng cả hai

[box type=”note” align=”alignleft” class=”” width=””]Chương đầu tiên của cuốn sách, Chương 1, Bắt đầu với IPython, chứa tất cả các hướng dẫn cài đặt. Bước chính là tải xuống và cài đặt bản phân phối Anaconda miễn phí tại https. //www. sự liên tục. io/downloads [phiên bản Python 3 64-bit dành cho hệ điều hành của bạn]. [/hộp]

Khởi chạy bảng điều khiển IPython

Để chạy bảng điều khiển IPython, hãy nhập ipython vào thiết bị đầu cuối của hệ điều hành. Ở đó, bạn có thể viết các lệnh Python và xem kết quả ngay lập tức. Đây là một ảnh chụp màn hình


Bảng điều khiển IPython

Bảng điều khiển IPython thuận tiện nhất khi bạn có quy trình làm việc dựa trên dòng lệnh và bạn muốn thực thi một số lệnh Python nhanh

Bạn có thể thoát khỏi bảng điều khiển IPython bằng cách gõ lệnh thoát

[box type=”note” align=”alignleft” class=”” width=””]Hãy đề cập đến bảng điều khiển Qt, tương tự như bảng điều khiển IPython nhưng cung cấp các tính năng bổ sung như chỉnh sửa nhiều dòng, hoàn thành tab nâng cao, hỗ trợ hình ảnh, . Bảng điều khiển Qt cũng có thể được tích hợp trong một ứng dụng đồ họa được viết bằng Python và Qt. Xem http. // jupyter. org/qtconsole/stable/ để biết thêm thông tin. [/hộp]

Ra mắt Máy tính xách tay Jupyter

Để chạy Jupyter Notebook, hãy mở một thiết bị đầu cuối của hệ điều hành, truy cập ~/minibook/ [hoặc vào thư mục mà bạn đã tải xuống sổ ghi chép của cuốn sách] và nhập jupyter notebook. Thao tác này sẽ khởi động máy chủ Jupyter và mở một cửa sổ mới trong trình duyệt của bạn [nếu không phải như vậy, hãy truy cập URL sau. http. //máy chủ cục bộ. 8888]. Đây là ảnh chụp màn hình điểm vào của Jupyter, bảng điều khiển Notebook

Bảng điều khiển Notebook

[box type=”note” align=”alignleft” class=”” width=””]Tại thời điểm viết bài này, các trình duyệt sau được hỗ trợ chính thức. Chrome 13 trở lên; . Các trình duyệt khác cũng có thể hoạt động. Số dặm của bạn có thể thay đổi. [/hộp]

Notebook thuận tiện nhất khi bạn bắt đầu một dự án phân tích phức tạp sẽ liên quan đến một lượng lớn thử nghiệm tương tác với mã của bạn. Các trường hợp sử dụng phổ biến khác bao gồm theo dõi phiên tương tác của bạn [như sổ ghi chép trong phòng thí nghiệm] hoặc viết tài liệu kỹ thuật liên quan đến mã, phương trình và số liệu

Trong phần còn lại của phần này, chúng ta sẽ tập trung vào giao diện Notebook

[box type=”note” align=”alignleft” class=”” width=””]Đóng máy chủ Notebook
Để đóng máy chủ Notebook, hãy truy cập thiết bị đầu cuối hệ điều hành . Bạn có thể cần xác nhận với y. [/box]

Bảng điều khiển Notebook

Bảng điều khiển chứa một số tab như sau

  • Các tập tin. hiển thị tất cả các tệp và sổ ghi chép trong thư mục hiện tại
  • Đang chạy. hiển thị tất cả các hạt nhân hiện đang chạy trên máy tính của bạn
  • cụm. cho phép bạn khởi chạy hạt nhân để tính toán song song

Sổ ghi chép là một tài liệu tương tác có chứa mã, văn bản và các thành phần khác. Một sổ ghi chép được lưu trong một tệp có tên. phần mở rộng ipynb. Tệp này là một tệp văn bản thuần túy lưu trữ cấu trúc dữ liệu JSON

Nhân là một tiến trình đang chạy một phiên tương tác. Khi sử dụng IPython, hạt nhân này là một quy trình Python. Có kernel trong nhiều ngôn ngữ khác ngoài Python

[box type=”note” align=”alignleft” class=”” width=””]Chúng tôi tuân theo quy ước để sử dụng thuật ngữ notebook cho tệp và Notebook cho ứng dụng và giao diện web. [/hộp]

Trong Jupyter, sổ ghi chép và hạt nhân được tách biệt rõ ràng. Sổ ghi chép là một tệp, trong khi hạt nhân là một quá trình. Nhân nhận các đoạn mã từ giao diện Notebook, thực thi chúng và gửi kết quả đầu ra cũng như các lỗi có thể xảy ra trở lại giao diện Notebook. Do đó, nói chung, kernel không có khái niệm về Notebook. Một sổ ghi chép là liên tục [đó là một tệp], trong khi một hạt nhân có thể bị đóng vào cuối phiên tương tác và do đó, nó không liên tục. Khi một sổ ghi chép được mở lại, nó cần được thực hiện lại

Nói chung, không thể kết nối nhiều hơn một giao diện Notebook với một nhân nhất định. Tuy nhiên, một số bảng điều khiển IPython có thể được kết nối với một kernel nhất định

Giao diện người dùng Notebook

Để tạo sổ ghi chép mới, nhấp vào nút Mới và chọn Sổ ghi chép [Python 3]. Một tab trình duyệt mới mở ra và hiển thị giao diện Notebook như sau

Một cuốn sổ mới

Dưới đây là các thành phần chính của giao diện, từ trên xuống dưới

  • Tên sổ ghi chép mà bạn có thể thay đổi bằng cách nhấp vào nó. Đây cũng là tên của. tập tin ipynb
  • Thanh Menu cung cấp cho bạn quyền truy cập vào một số hành động liên quan đến sổ ghi chép hoặc nhân
  • Bên phải thanh menu là tên Kernel. Bạn có thể thay đổi ngôn ngữ nhân của sổ ghi chép của mình từ menu Nhân
  • Thanh công cụ chứa các biểu tượng cho các hành động phổ biến. Đặc biệt, trình đơn thả xuống hiển thị Mã cho phép bạn thay đổi loại ô
  • Sau đây là thành phần chính của giao diện người dùng. Notebook thực tế. Nó bao gồm một danh sách tuyến tính của các ô. Chúng tôi sẽ trình bày chi tiết cấu trúc của một ô trong các phần sau

Cấu trúc của một ô máy tính xách tay

Có hai loại tế bào chính. Các ô đánh dấu và các ô mã, và chúng được mô tả như sau

  • Một ô Markdown chứa văn bản có định dạng. Ngoài các tùy chọn định dạng cổ điển như in đậm hoặc in nghiêng, chúng tôi có thể thêm liên kết, hình ảnh, phần tử HTML, phương trình toán học LaTeX, v.v.
  • Một ô mã chứa mã sẽ được thực thi bởi hạt nhân. Ngôn ngữ lập trình tương ứng với ngôn ngữ của kernel. Chúng tôi sẽ chỉ sử dụng Python trong cuốn sách này, nhưng bạn có thể sử dụng nhiều ngôn ngữ khác

Bạn có thể thay đổi loại ô bằng cách trước tiên nhấp vào ô để chọn ô đó, sau đó chọn loại ô trong menu thả xuống của thanh công cụ hiển thị Markdown hoặc Code

ô đánh dấu

Đây là một ảnh chụp màn hình của một ô Markdown

Một ô Markdown

Bảng trên cùng hiển thị ô ở chế độ chỉnh sửa, trong khi bảng dưới cùng hiển thị ô ở chế độ kết xuất. Chế độ chỉnh sửa cho phép bạn chỉnh sửa văn bản, trong khi chế độ hiển thị cho phép bạn hiển thị ô được hiển thị. Chúng tôi sẽ giải thích sự khác biệt giữa các chế độ này chi tiết hơn trong phần sau

ô mã

Đây là một ảnh chụp màn hình của một ô mã phức tạp

Cấu trúc của một ô mã

Ô mã này chứa một số phần, như sau

  • Số Prompt hiển thị số của ô. Con số này tăng lên mỗi khi bạn chạy ô. Vì bạn có thể chạy các ô của một sổ ghi chép không theo thứ tự, nên không có gì đảm bảo rằng các mã số sẽ tăng tuyến tính trong một sổ ghi chép nhất định
  • Khu vực Đầu vào chứa một trình soạn thảo văn bản nhiều dòng cho phép bạn viết một hoặc một số dòng mã với cú pháp tô sáng
  • Khu vực Tiện ích có thể chứa các điều khiển đồ họa;
  • Vùng Đầu ra có thể chứa nhiều đầu ra, tại đây
    • Đầu ra tiêu chuẩn [văn bản màu đen]
    • Đầu ra lỗi [văn bản có nền đỏ]
    • Đầu ra phong phú [bảng HTML và hình ảnh ở đây]

Giao diện kiểu máy tính xách tay

Notebook triển khai giao diện phương thức tương tự như một số trình soạn thảo văn bản như vim. Làm chủ giao diện này có thể là một đường cong học tập nhỏ đối với một số người dùng

  • Sử dụng chế độ soạn thảo để viết code [ô được chọn có viền xanh, trên cùng bên phải giao diện có biểu tượng cây bút]. Nhấp vào bên trong một ô để bật chế độ chỉnh sửa cho ô này [bạn cần nhấp đúp vào các ô Markdown]
  • Sử dụng chế độ lệnh để thao tác trên ô [ô được chọn có viền màu xám, không có biểu tượng bút]. Nhấp vào bên ngoài vùng văn bản của ô để bật chế độ lệnh [bạn cũng có thể nhấn phím Esc]

Phím tắt có sẵn trong giao diện Notebook. Nhập h để hiển thị chúng. Chúng tôi xem xét ở đây những cái phổ biến nhất [dành cho Windows và Linux; các phím tắt cho Mac OS X có thể hơi khác một chút]

Phím tắt có sẵn trong cả hai chế độ

Dưới đây là một vài phím tắt luôn khả dụng khi một ô được chọn

  • Ctrl + Nhập. chạy tế bào
  • Ca + Nhập. chạy ô và chọn ô bên dưới
  • Alt + Nhập. chạy ô và chèn một ô mới bên dưới
  • Ctrl + S. lưu sổ tay

Phím tắt khả dụng trong chế độ chỉnh sửa

Trong chế độ chỉnh sửa, bạn có thể nhập mã như bình thường và bạn có quyền truy cập vào các phím tắt sau

  • Thoát ra. chuyển sang chế độ lệnh
  • Ctrl + Shift + –. chia ô

Phím tắt khả dụng trong chế độ lệnh

Trong chế độ lệnh, tổ hợp phím được liên kết với các hoạt động của ô. Đừng viết mã trong chế độ lệnh hoặc những điều không mong muốn sẽ xảy ra. Ví dụ: gõ dd trong chế độ lệnh sẽ xóa ô đã chọn. Dưới đây là một số phím tắt có sẵn trong chế độ lệnh

  • đi vào. chuyển sang chế độ chỉnh sửa
  • Lên hoặc k. chọn ô trước đó
  • Xuống hoặc j. chọn ô tiếp theo
  • y/m. thay đổi loại ô thành ô mã/ô Markdown
  • một / b. chèn một ô mới bên trên/bên dưới ô hiện tại
  • x/c/v. cắt/sao chép/dán ô hiện tại
  • đ. xóa ô hiện tại
  • z. hoàn tác thao tác xóa cuối cùng
  • Ca + =. hợp nhất ô bên dưới
  • h. hiển thị menu trợ giúp với danh sách phím tắt

Rất khuyến khích dành thời gian học các phím tắt này

Người giới thiệu

Dưới đây là một vài tài liệu tham khảo

  • Tài liệu chính về Jupyter tại http. // jupyter. đọcthedocs. org/vi/mới nhất/
  • Giao diện Jupyter Notebook được giải thích tại http. // jupyter-notebook. đọcthedocs. org/vi/mới nhất/sổ tay. html
Một khóa học cấp tốc về Python

Nếu bạn không biết Python, hãy đọc phần này để tìm hiểu các nguyên tắc cơ bản. Python là một ngôn ngữ rất dễ tiếp cận và thậm chí còn được dạy cho học sinh. Nếu bạn đã từng lập trình, bạn sẽ chỉ mất vài phút để học những điều cơ bản

Chào thế giới

Mở một sổ ghi chép mới và nhập nội dung sau vào ô đầu tiên

In [1]: print["Hello world!"]
Out[1]: Hello world!

Đây là một ảnh chụp màn hình

“Xin chào thế giới” trong Notebook

[box type=”note” align=”alignleft” class=”” width=””]Prompt string

Lưu ý rằng quy ước được chọn trong bài viết này là hiển thị mã Python [còn được gọi là đầu vào] có tiền tố là In [x]. [không nên gõ]. Đây là lời nhắc IPython tiêu chuẩn. Tại đây, bạn chỉ cần gõ print[“Xin chào thế giới. ”] rồi nhấn Shift + Enter. [/hộp]

Xin chúc mừng. Bây giờ bạn là một lập trình viên Python

Biến

Hãy sử dụng Python như một máy tính

In [2]: 2 * 2
Out[2]: 4

Ở đây, 2 * 2 là một câu lệnh biểu thức. Thao tác này được thực hiện, kết quả được trả về và IPython hiển thị nó trong đầu ra của ô sổ ghi chép

[box type=”note” align=”alignleft” class=”” width=””]Phân chia

Trong Python 3, 3/2 trả về 1. 5 [phép chia dấu phẩy động], trong khi nó trả về 1 trong Python 2 [phép chia số nguyên]. Đây có thể là nguồn gốc của lỗi khi chuyển mã Python 2 sang Python 3. Nên luôn luôn sử dụng 3 rõ ràng. 0 / 2. 0 cho phép chia dấu phẩy động [bằng cách sử dụng số dấu phẩy động] và 3 // 2 cho phép chia số nguyên. Cả hai cú pháp đều hoạt động trong Python 2 và Python 3. xem http. // python3porting. com/sự khác biệt. html#integer-chia để biết thêm chi tiết. [/hộp]

Các toán tử toán học tích hợp khác bao gồm +, –, ** cho phép lũy thừa và các toán tử khác. Bạn sẽ tìm thấy thêm chi tiết tại https. // tài liệu. con trăn. org/3/tham chiếu/biểu thức. html#the-power-toán tử

Các biến tạo thành một khái niệm cơ bản của bất kỳ ngôn ngữ lập trình nào. Một biến có tên và giá trị. Đây là cách tạo một biến mới trong Python

In [3]: a = 2

Và đây là cách sử dụng một biến hiện có

In [4]: a * 3
Out[4]: 6

Một số biến có thể được xác định cùng một lúc [điều này được gọi là giải nén]

In [5]: a, b = 2, 6

Có nhiều loại biến khác nhau. Ở đây, chúng tôi đã sử dụng một số [chính xác hơn là một số nguyên]. Các loại quan trọng khác bao gồm số dấu phẩy động để biểu thị số thực, chuỗi để biểu thị văn bản và booleans để biểu thị giá trị Đúng/Sai. Đây là vài ví dụ

In [6]: somefloat = 3.1415
        sometext = 'pi is about'  # You can also use double quotes.
        print[sometext, somefloat]  # Display several variables.
Out[6]: pi is about 3.1415

Lưu ý cách chúng tôi sử dụng ký tự # để viết nhận xét. Trong khi Python loại bỏ hoàn toàn các nhận xét, thì việc thêm nhận xét vào mã là rất quan trọng khi mã sẽ được đọc bởi người khác [bao gồm cả bạn trong tương lai]

Chuỗi thoát

Thoát chuỗi đề cập đến khả năng chèn các ký tự đặc biệt vào chuỗi. Ví dụ: làm thế nào bạn có thể chèn ‘ và “, với điều kiện là các ký tự này được sử dụng để phân định một chuỗi trong mã Python? . Đây là vài ví dụ

In [7]: print["Hello "world""]
        print["A list:n* item 1n* item 2"]
        print["C:pathonwindows"]
        print[r"C:pathonwindows"]
Out[7]: Hello "world"
        A list:
        * item 1
        * item 2
        C:pathonwindows
        C:pathonwindows

Ký tự đặc biệt n là ký tự xuống dòng [hoặc xuống dòng] mới. Để chèn dấu gạch chéo ngược, bạn cần thoát dấu gạch chéo ngược, điều này giải thích tại sao dấu gạch chéo ngược cần được nhân đôi thành

Bạn cũng có thể vô hiệu hóa thoát bằng cách sử dụng chữ thô với tiền tố r trước chuỗi, như trong ví dụ cuối cùng ở trên. Trong trường hợp này, dấu gạch chéo ngược được coi là ký tự bình thường

Điều này thuận tiện khi viết đường dẫn Windows, vì Windows sử dụng dấu gạch chéo ngược thay vì dấu gạch chéo lên như trên các hệ thống Unix. Một lỗi rất phổ biến trên Windows là quên thoát dấu gạch chéo ngược trong đường dẫn. viết “C. path” có thể dẫn đến các lỗi tinh vi

Bạn sẽ tìm thấy danh sách các ký tự đặc biệt trong Python tại

danh sách

Một danh sách chứa một chuỗi các mục. Bạn có thể hướng dẫn ngắn gọn Python thực hiện các hành động lặp lại trên các phần tử của danh sách. Trước tiên hãy tạo một danh sách các số như sau

In [8]: items = [1, 3, 0, 4, 1]

Lưu ý cú pháp chúng tôi đã sử dụng để tạo danh sách. dấu ngoặc vuông [] và dấu phẩy , để phân tách các mục

Hàm dựng sẵn len[] trả về số phần tử trong danh sách

________số 8

[box type=”note” align=”alignleft” class=”” width=””]Python đi kèm với một tập hợp các hàm dựng sẵn, bao gồm print[], len[], max[], các thủ tục chức năng như filter[ . Bạn sẽ tìm thấy danh sách đầy đủ các hàm tích hợp tại https. // tài liệu. con trăn. tổ chức/3. 4/thư viện/chức năng. html. [/hộp]

Bây giờ, hãy tính tổng của tất cả các phần tử trong danh sách. Python cung cấp một chức năng tích hợp cho việc này

In [10]: sum[items]
Out[10]: 9

Chúng ta cũng có thể truy cập các phần tử riêng lẻ trong danh sách, sử dụng cú pháp sau

In [2]: 2 * 2
Out[2]: 4
0

Lưu ý rằng việc lập chỉ mục bắt đầu từ 0 trong Python. phần tử đầu tiên của danh sách được lập chỉ mục bằng 0, phần tử thứ hai bằng 1, v.v. Ngoài ra, -1 chỉ phần tử cuối cùng, -2, chỉ phần tử áp chót, v.v.

Cú pháp tương tự có thể được sử dụng để thay đổi các phần tử trong danh sách

In [2]: 2 * 2
Out[2]: 4
1

Chúng tôi có thể truy cập danh sách con với cú pháp sau

In [2]: 2 * 2
Out[2]: 4
2

Đây, 1. 3 đại diện cho một lát cắt đi từ phần tử 1 được bao gồm [đây là phần tử thứ hai của danh sách] đến phần tử 3 bị loại trừ. Như vậy, ta được một danh sách con có phần tử thứ hai và thứ ba của danh sách gốc. Sự bất đối xứng bao gồm đầu tiên/loại trừ cuối cùng dẫn đến cách xử lý trực quan các phần chồng chéo giữa các lát cắt liên tiếp. Ngoài ra, hãy lưu ý rằng danh sách phụ đề cập đến dạng xem động của danh sách gốc, không phải bản sao;

Python cung cấp một số loại vùng chứa khác

  • Các bộ dữ liệu là bất biến và chứa một số phần tử cố định.
    In [2]: 2 * 2
    Out[2]: 4
    
    3
  • In [2]: 2 * 2
    Out[2]: 4
    
    4
    In [2]: 2 * 2
    Out[2]: 4
    
    5

    Không có khái niệm về thứ tự trong từ điển. Tuy nhiên, mô-đun bộ sưu tập riêng cung cấp cấu trúc OrderedDict giữ thứ tự chèn [xem https. // tài liệu. con trăn. tổ chức/3. 4/thư viện/bộ sưu tập. html]

  • Các tập hợp, giống như các tập hợp toán học, chứa các phần tử riêng biệt.
    In [2]: 2 * 2
    Out[2]: 4
    
    6

Một đối tượng Python có thể thay đổi nếu giá trị của nó có thể thay đổi sau khi được tạo. Nếu không, nó là bất biến. Ví dụ, một chuỗi là bất biến; . Một danh sách, một từ điển hoặc một bộ có thể thay đổi; . Ngược lại, một bộ dữ liệu là bất biến và không thể thay đổi các phần tử mà nó chứa mà không tạo lại bộ dữ liệu. Xem https. // tài liệu. con trăn. tổ chức/3. 4/tham chiếu/mô hình dữ liệu. html để biết thêm chi tiết

vòng lặp

Chúng ta có thể chạy qua tất cả các phần tử của danh sách bằng vòng lặp for

In [2]: 2 * 2
Out[2]: 4
7

Có một số điều cần lưu ý ở đây

  • Cú pháp for item in items có nghĩa là một biến tạm thời có tên là item được tạo ở mỗi lần lặp lại. Biến này chứa giá trị của mọi mục trong danh sách, từng mục một
  • Lưu ý dấu hai chấm. ở cuối câu lệnh for. Quên nó sẽ dẫn đến lỗi cú pháp
  • Câu lệnh print[item] sẽ được thực thi cho tất cả các mục trong danh sách
  • Lưu ý bốn khoảng trắng trước khi in. đây được gọi là vết lõm. Bạn sẽ tìm thấy thêm chi tiết về thụt đầu dòng trong tiểu mục tiếp theo

Python hỗ trợ một cú pháp ngắn gọn để thực hiện một thao tác nhất định trên tất cả các phần tử của danh sách, như sau

In [2]: 2 * 2
Out[2]: 4
8

Đây được gọi là hiểu danh sách. Một danh sách mới được tạo ở đây; . Cú pháp ngắn gọn này dẫn đến mã Pythonic rất dễ đọc

thụt đầu dòng

Thụt đầu dòng đề cập đến khoảng trắng có thể xuất hiện ở đầu một số dòng mã. Đây là một khía cạnh cụ thể của cú pháp Python

Trong hầu hết các ngôn ngữ lập trình, thụt đầu dòng là tùy chọn và thường được sử dụng để làm cho mã rõ ràng hơn. Nhưng trong Python, thụt đầu dòng cũng có ý nghĩa cú pháp. Các quy tắc thụt đầu dòng cụ thể cần phải được tuân theo để mã Python chính xác

Nói chung, có hai cách để thụt lề một số văn bản. bằng cách chèn một ký tự tab [còn được gọi là t] hoặc bằng cách chèn một số khoảng trắng [thường là bốn]. Nên sử dụng dấu cách thay vì ký tự tab. Trình soạn thảo văn bản của bạn phải được định cấu hình sao cho phím Tab trên bàn phím sẽ chèn bốn dấu cách thay vì ký tự tab

Trong Notebook, thụt lề được tự động cấu hình đúng cách; . Câu hỏi chỉ phát sinh nếu bạn sử dụng trình soạn thảo văn bản khác cho mã Python của mình

Cuối cùng, ý nghĩa của thụt đầu dòng là gì? . Khi các ngôn ngữ khác như C hoặc JavaScript sử dụng dấu ngoặc nhọn để phân định các khối như vậy, thì Python sử dụng dấu thụt đầu dòng

nhánh có điều kiện

Đôi khi, bạn cần thực hiện các thao tác khác nhau trên dữ liệu của mình tùy thuộc vào một số điều kiện. Ví dụ: hãy hiển thị tất cả các số chẵn trong danh sách của chúng tôi

In [2]: 2 * 2
Out[2]: 4
9

Một lần nữa, đây là một số điều cần lưu ý

  • Một câu lệnh if được theo sau bởi một biểu thức boolean
  • Nếu a và b là hai số nguyên, toán hạng modulo a % b trả về phần còn lại từ phép chia a cho b. Ở đây, mục %2 là 0 cho số chẵn và 1 cho số lẻ
  • Đẳng thức được biểu thị bằng dấu bằng kép == để tránh nhầm lẫn với toán tử gán = mà chúng ta sử dụng khi tạo biến
  • Giống như vòng lặp for, câu lệnh if kết thúc bằng dấu hai chấm
  • Phần mã được thực thi khi điều kiện được thỏa mãn sau câu lệnh if. Nó được thụt vào. Thụt đầu dòng là tích lũy. vì if này nằm trong vòng lặp for, nên có tám khoảng trắng trước câu lệnh print[item]

Python hỗ trợ cú pháp ngắn gọn để chọn tất cả các phần tử trong danh sách thỏa mãn các thuộc tính nhất định. Đây là cách tạo danh sách con chỉ có số chẵn

In [3]: a = 2
0

Đây cũng là một hình thức hiểu danh sách

Chức năng

Mã thường được tổ chức thành các chức năng. Một chức năng gói gọn một phần mã của bạn. Các chức năng cho phép bạn sử dụng lại các bit chức năng mà không cần sao chép mã. Đây là một hàm cho biết một số nguyên có phải là số chẵn hay không

In [3]: a = 2
1

Có một số điều cần lưu ý ở đây

  • Một chức năng được xác định với từ khóa def
  • Sau def là tên hàm. Một quy ước chung trong Python là chỉ sử dụng các ký tự viết thường và phân tách các từ bằng dấu gạch dưới _. Tên hàm thường bắt đầu bằng một động từ
  • Tên hàm được theo sau bởi dấu ngoặc đơn, với một hoặc một số tên biến được gọi là đối số. Đây là các đầu vào của chức năng. Có một đối số duy nhất ở đây, được đặt tên là số
  • Không có loại nào được chỉ định cho đối số. Điều này là do Python được gõ động; . Ví dụ, chức năng này sẽ hoạt động tốt với các số dấu phẩy động [thao tác modulo hoạt động với các số dấu phẩy động ngoài số nguyên]
  • Phần thân của hàm được thụt lề [và lưu ý dấu hai chấm. ở cuối câu lệnh def]
  • Có một chuỗi tài liệu được bao bọc bởi ba dấu ngoặc kép “””. Đây là một dạng bình luận cụ thể giải thích những gì chức năng làm. Không bắt buộc, nhưng chúng tôi khuyên bạn nên viết chuỗi tài liệu cho các chức năng tiếp xúc với người dùng
  • Từ khóa return trong phần thân của hàm chỉ định đầu ra của hàm. Ở đây, đầu ra là một Boolean, thu được từ biểu thức số % 2 == 0. Có thể trả về một số giá trị;

Khi một chức năng được xác định, nó có thể được gọi như thế này

In [3]: a = 2
2

Ở đây, 3 và 4 lần lượt được chuyển thành đối số cho hàm

Đối số vị trí và từ khóa

Hàm Python có thể chấp nhận số lượng đối số tùy ý, được gọi là đối số vị trí. Nó cũng có thể chấp nhận các đối số được đặt tên tùy chọn, được gọi là đối số từ khóa. Đây là một ví dụ

In [3]: a = 2
3

Đối số thứ hai của hàm này, số chia, là tùy chọn. Nếu nó không được cung cấp bởi người gọi, nó sẽ mặc định là số 2, như được hiển thị ở đây

In [3]: a = 2
4

Có hai cách tương đương để chỉ định đối số từ khóa khi gọi hàm. Chúng như sau

In [3]: a = 2
5

Trong trường hợp đầu tiên, 3 được hiểu là đối số thứ hai, ước số. Trong trường hợp thứ hai, tên của đối số được đưa ra rõ ràng bởi người gọi. Cú pháp thứ hai này rõ ràng hơn và ít bị lỗi hơn cú pháp thứ nhất

Các hàm cũng có thể chấp nhận các bộ đối số vị trí và từ khóa tùy ý, sử dụng cú pháp sau

In [3]: a = 2
6

Bên trong hàm, args là một bộ chứa các đối số vị trí và kwargs là một từ điển chứa các đối số từ khóa

Vượt qua bài tập

Khi truyền tham số cho hàm Python, tham chiếu đến đối tượng thực sự được truyền [chuyển theo phép gán]

  • Nếu đối tượng được truyền là có thể thay đổi, nó có thể được sửa đổi bởi hàm
  • Nếu đối tượng được truyền là bất biến, nó không thể được sửa đổi bởi hàm

Đây là một ví dụ

In [3]: a = 2
7

Hàm add[] sửa đổi một đối tượng được xác định bên ngoài nó [trong trường hợp này là đối tượng my_list]; . Một chức năng không có tác dụng phụ được gọi là một chức năng thuần túy. nó không sửa đổi bất cứ thứ gì trong bối cảnh bên ngoài và nó trả về kết quả tương tự một cách chắc chắn cho bất kỳ tập hợp đầu vào đã cho nào. Các chức năng thuần túy sẽ được ưu tiên hơn các chức năng có tác dụng phụ

Biết điều này có thể giúp bạn phát hiện ra các lỗi tinh vi. Có nhiều khái niệm liên quan hữu ích để biết, bao gồm phạm vi chức năng, đặt tên, ràng buộc, v.v. Dưới đây là một vài liên kết

  • Đoạn văn bằng cách tham khảo tại https. // tài liệu. con trăn. org/3/faq/lập trình. html#cách-làm-tôi-ghi-một-hàm-với-tham-số-đầu-ra-gọi-theo-tham-chiếu
  • Đặt tên, ràng buộc và phạm vi tại https. // tài liệu. con trăn. tổ chức/3. 4/tham chiếu/mô hình thực thi. html

lỗi

Hãy thảo luận về các lỗi trong Python. Khi bạn tìm hiểu, chắc chắn bạn sẽ gặp lỗi và ngoại lệ. Trình thông dịch Python hầu hết thời gian sẽ cho bạn biết vấn đề là gì và nó xảy ra ở đâu. Điều quan trọng là phải hiểu từ vựng mà Python sử dụng để bạn có thể tìm và sửa lỗi nhanh hơn

Hãy xem ví dụ sau

In [3]: a = 2
8

Ở đây, chúng ta đã định nghĩa một hàmdivid[] và gọi nó để chia 1 cho 0. Chia một số cho 0 là lỗi trong Python. Tại đây, một ngoại lệ ZeroDivisionError đã được nêu ra. Ngoại lệ là một loại lỗi cụ thể có thể xuất hiện tại bất kỳ thời điểm nào trong chương trình. Nó được lan truyền từ phần bên trong của mã cho đến lệnh khởi chạy mã. Nó có thể được bắt và xử lý tại bất kỳ điểm nào. Bạn sẽ tìm thấy thêm chi tiết về các trường hợp ngoại lệ tại https. // tài liệu. con trăn. org/3/hướng dẫn/lỗi. html và các loại ngoại lệ phổ biến tại https. // tài liệu. con trăn. org/3/thư viện/ngoại lệ. html#bltin-ngoại lệ

Thông báo lỗi mà bạn nhìn thấy chứa dấu vết ngăn xếp, loại ngoại lệ và thông báo ngoại lệ. Dấu vết ngăn xếp hiển thị tất cả các lệnh gọi hàm giữa ngoại lệ đã nêu và điểm gọi tập lệnh

Khung trên cùng, được biểu thị bằng mũi tên đầu tiên —->, hiển thị điểm vào của quá trình thực thi mã. Ở đây, nó là phép chia [1, 0], được gọi trực tiếp trong Notebook. Đã xảy ra lỗi khi chức năng này được gọi

Khung tiếp theo và khung cuối cùng được biểu thị bằng mũi tên thứ hai. Nó tương ứng với dòng 2 trong chức năng của chúng tôi chia [a, b]. Đây là khung cuối cùng trong dấu vết ngăn xếp. điều này có nghĩa là lỗi xảy ra ở đó

Lập trình hướng đối tượng

Lập trình hướng đối tượng [OOP] là một chủ đề tương đối nâng cao. Mặc dù chúng ta sẽ không sử dụng nó nhiều trong cuốn sách này, nhưng sẽ rất hữu ích khi biết những điều cơ bản. Ngoài ra, thành thạo OOP thường là điều cần thiết khi bạn bắt đầu có một cơ sở mã lớn

Trong Python, mọi thứ đều là đối tượng. Một số, một chuỗi hoặc một hàm là một đối tượng. Một đối tượng là một thể hiện của một loại [còn được gọi là lớp]. Một đối tượng có các thuộc tính và phương thức, như được chỉ định bởi loại của nó. Một thuộc tính là một biến được liên kết với một đối tượng, cung cấp một số thông tin về nó. Một phương thức là một chức năng áp dụng cho đối tượng

Ví dụ: đối tượng 'xin chào' là một thể hiện của loại str tích hợp [chuỗi]. Hàm type[] trả về kiểu của đối tượng, như minh họa ở đây

In [3]: a = 2
9

Có các loại gốc, như str hoặc int [số nguyên] và các loại tùy chỉnh, còn được gọi là các lớp, có thể được tạo bởi người dùng

Trong IPython, bạn có thể khám phá các thuộc tính và phương thức của bất kỳ đối tượng nào bằng cú pháp dấu chấm và hoàn thành tab. Ví dụ: gõ 'xin chào'. u và nhấn Tab sẽ tự động cho chúng ta thấy sự tồn tại của phương thức upper[]

In [4]: a * 3
Out[4]: 6
0

Ở đây, upper[] là một phương thức có sẵn cho tất cả các đối tượng str;

Một phương thức chuỗi hữu ích là format[]. Hệ thống tạo khuôn mẫu đơn giản và thuận tiện này cho phép bạn tạo các chuỗi một cách linh hoạt, như minh họa trong ví dụ sau

In [4]: a * 3
Out[4]: 6
1

{0. s} có nghĩa là “thay thế điều này bằng đối số đầu tiên của định dạng [], phải là một chuỗi”. Loại biến sau dấu hai chấm đặc biệt hữu ích cho các số, nơi bạn có thể chỉ định cách hiển thị số [ví dụ:. 3f để hiển thị ba số thập phân]. 0 cho phép thay thế một giá trị nhất định nhiều lần trong một chuỗi nhất định. Bạn cũng có thể sử dụng tên thay cho chức vụ—ví dụ: 'Xin chào {tên}. ’. định dạng [tên = 'Python']

Một số phương pháp được bắt đầu bằng dấu gạch dưới _; . Việc hoàn thành tab của IPython sẽ không hiển thị cho bạn các thuộc tính và phương thức riêng tư này trừ khi bạn nhập rõ ràng _ trước khi nhấn Tab

Trong thực tế, điều quan trọng nhất cần nhớ là việc thêm dấu chấm. vào bất kỳ đối tượng Python nào và nhấn Tab trong IPython sẽ hiển thị cho bạn rất nhiều chức năng liên quan đến đối tượng đó

lập trình chức năng

Python là một ngôn ngữ đa mô hình; . Các hàm Python là các đối tượng và có thể được xử lý như các đối tượng khác. Đặc biệt, chúng có thể được truyền dưới dạng đối số cho các hàm khác [còn được gọi là hàm bậc cao hơn]. Đây là bản chất của lập trình chức năng

Trình trang trí cung cấp cấu trúc cú pháp thuận tiện để xác định các hàm bậc cao hơn. Đây là một ví dụ sử dụng hàm is_even[] từ phần Hàm trước

In [4]: a * 3
Out[4]: 6
2

Hàm show_output[] biến đổi một hàm tùy ý func[] thành một hàm mới, có tên là wrap[], hiển thị kết quả của hàm như sau

In [4]: a * 3
Out[4]: 6
3

Tương tự, chức năng bậc cao hơn này cũng có thể được sử dụng với một trình trang trí, như sau

In [4]: a * 3
Out[4]: 6
4

Bạn có thể tìm thêm thông tin về trình trang trí Python tại https. // vi. wikipedia. org/wiki/Python_syntax_and_semantics#Decorators và tại http. //www. mật mã. com/patterns/guide-to-python-function-decorators/

Trăn 2 và 3

Hãy kết thúc phần này với một số lưu ý về vấn đề tương thích Python 2 và Python 3

Vẫn còn một số mã và thư viện Python 2 không tương thích với Python 3. Do đó, đôi khi rất hữu ích khi nhận thức được sự khác biệt giữa hai phiên bản. Một trong những khác biệt rõ ràng nhất là print là một câu lệnh trong Python 2, trong khi nó là một hàm trong Python 3. Do đó, print “Xin chào” [không có dấu ngoặc đơn] hoạt động trong Python 2 nhưng không hoạt động trong Python 3, trong khi print[“Xin chào”] hoạt động trong cả Python 2 và Python 3

Có một số tùy chọn không loại trừ lẫn nhau để viết mã di động hoạt động với cả hai phiên bản

  • tương lai. Mô-đun tích hợp hỗ trợ cú pháp Python không tương thích ngược
  • 2 đến 3. Mô-đun Python tích hợp để chuyển mã Python 2 sang Python 3
  • sáu. Một thư viện nhẹ bên ngoài để viết mã tương thích

Dưới đây là một vài tài liệu tham khảo

  • Trang wiki Python 2/3 chính thức tại https. //wiki. con trăn. org/moin/Python2orPython3
  • Cuốn sách Chuyển sang Python 3, của Nền tảng xuất bản độc lập CreateSpace tại http. //www. python3porting. com/bookindex. html
  • 2to3 tại https. // tài liệu. con trăn. tổ chức/3. 4/thư viện/2to3. html
  • sáu tại https. //pythonhosted. tổ chức/sáu/
  • tương lai tại https. // tài liệu. con trăn. tổ chức/3. 4/thư viện/__tương lai__. html
  • IPython Cookbook chứa một công thức chuyên sâu về việc lựa chọn giữa Python 2 và 3 và cách hỗ trợ cả hai

Vượt ra ngoài những điều cơ bản

Bây giờ bạn đã biết các nguyên tắc cơ bản của Python, mức tối thiểu mà bạn sẽ cần trong cuốn sách này. Như bạn có thể tưởng tượng, còn nhiều điều để nói về Python

Sau đây là một số khái niệm cơ bản khác thường hữu ích và rất tiếc chúng tôi không thể trình bày ở đây. Bạn rất nên xem chúng trong các tài liệu tham khảo được đưa ra ở cuối phần này

  • phạm vi và liệt kê
  • vượt qua, phá vỡ và, tiếp tục, được sử dụng trong các vòng lặp
  • Làm việc với các tập tin
  • Tạo và nhập các mô-đun
  • Thư viện chuẩn Python cung cấp nhiều chức năng [hệ điều hành, mạng, hệ thống tệp, nén, toán học, v.v.]

Dưới đây là một số khái niệm nâng cao hơn một chút mà bạn có thể thấy hữu ích nếu muốn nâng cao kỹ năng Python của mình

  • Biểu thức chính quy để xử lý chuỗi nâng cao
  • Các hàm lambda để xác định các hàm ẩn danh nhỏ
  • Trình tạo để kiểm soát các vòng lặp tùy chỉnh
  • Ngoại lệ để xử lý lỗi
  • với các câu lệnh để xử lý bối cảnh một cách an toàn
  • Lập trình hướng đối tượng nâng cao
  • Lập trình meta để sửa đổi mã Python động
  • Mô-đun dưa chua để duy trì các đối tượng Python trên đĩa và trao đổi chúng qua mạng

Cuối cùng, đây là một vài tài liệu tham khảo

  • Bắt đầu với Python. https. //www. con trăn. org/về/bắt đầu/
  • Hướng dẫn Python. https. // tài liệu. con trăn. org/3/hướng dẫn/chỉ mục. html
  • Thư viện chuẩn Python. https. // tài liệu. con trăn. org/3/library/index. html
  • hướng dẫn tương tác. http. //www. học trăn. tổ chức/
  • Khóa học Python của Codecademy. http. //www. học viện mật mã. com/bản nhạc/trăn
  • Tham khảo ngôn ngữ [cấp độ chuyên gia]. https. // tài liệu. con trăn. org/3/tham khảo/chỉ mục. html
  • Sách dạy nấu ăn Python, của David Beazley và Brian K. Jones, O'Reilly Media [trình độ nâng cao, rất khuyến khích nếu bạn muốn trở thành chuyên gia Python]

Tóm lược

Trong bài viết này, chúng ta đã xem cách khởi chạy bảng điều khiển IPython và Jupyter Notebook, các khía cạnh khác nhau của Notebook và giao diện người dùng của nó, cấu trúc của ô sổ tay, phím tắt có sẵn trong giao diện Notebook và kiến ​​thức cơ bản về Python

Làm cách nào để gọi một hàm trong Python?

Để gọi một hàm, bạn viết tên hàm theo sau là dấu hai chấm . N. B. Đảm bảo rằng bạn không chỉ định lệnh gọi hàm bên trong khối chức năng.

Bạn có thể gọi các chức năng từ sổ ghi chép Jupyter khác không?

py tệp] hoặc Jupyter Notebook. Lưu ý file chứa định nghĩa hàm và file gọi hàm phải cùng thư mục. Để sử dụng các hàm được viết trong một tệp bên trong một tệp khác, hãy bao gồm dòng nhập, from filename import function_name .

Chủ Đề