Hướng dẫn is matlab based off python? - Matlab có dựa trên python không?

MATLAB® được biết đến rộng rãi như một môi trường chất lượng cao cho bất kỳ công việc nào liên quan đến mảng, ma trận hoặc đại số tuyến tính. Python mới hơn với lĩnh vực này nhưng ngày càng trở nên phổ biến cho các nhiệm vụ tương tự. Như bạn thấy trong bài viết này, Python có tất cả sức mạnh tính toán của Matlab cho các nhiệm vụ khoa học và giúp việc phát triển các ứng dụng mạnh mẽ và dễ dàng. Tuy nhiên, có một số khác biệt quan trọng khi so sánh Matlab vs Python mà bạn sẽ cần phải tìm hiểu về việc chuyển đổi hiệu quả.

Show

Trong bài viết này, bạn sẽ học cách:

  • Đánh giá sự khác biệt của việc sử dụng MATLAB vs Python
  • Thiết lập một môi trường cho Python sao chép phần lớn các chức năng MATLAB
  • Chuyển đổi tập lệnh từ Matlab sang Python
  • Tránh các vấn đề phổ biến mà bạn có thể gặp phải khi chuyển từ Matlab sang Python
  • Viết mã trông và cảm giác như Python

Matlab vs Python: So sánh các tính năng và triết lý

Python là một ngôn ngữ lập trình cấp cao, cấp cao được thiết kế để dễ sử dụng bởi con người hoàn thành tất cả các loại nhiệm vụ. Python được tạo ra bởi Guido Van Rossum và lần đầu tiên phát hành vào đầu những năm 1990. Python là một ngôn ngữ trưởng thành được phát triển bởi hàng trăm cộng tác viên trên khắp thế giới.

Python được sử dụng bởi các nhà phát triển làm việc trên các dự án nhỏ, cá nhân cho đến một số công ty Internet lớn nhất thế giới. Python không chỉ chạy Reddit và Dropbox, mà thuật toán Google ban đầu được viết bằng Python. Ngoài ra, khung Django dựa trên Python chạy Instagram và nhiều trang web khác. Về mặt khoa học và kỹ thuật, dữ liệu để tạo ra bức ảnh năm 2019 về một lỗ đen đã được xử lý trong Python và các công ty lớn như Netflix sử dụng Python trong công việc phân tích dữ liệu của họ.

Ngoài ra còn có một sự khác biệt triết học quan trọng trong so sánh Matlab vs Python. MATLAB là phần mềm độc quyền, nguồn đóng. Đối với hầu hết mọi người, giấy phép sử dụng MATLAB khá tốn kém, điều đó có nghĩa là nếu bạn có mã trong MATLAB, thì chỉ những người có thể đủ khả năng giấy phép mới có thể chạy nó. Thêm vào đó, người dùng được tính phí cho mỗi hộp công cụ bổ sung mà họ muốn cài đặt để mở rộng chức năng cơ bản của MATLAB. Ngoài chi phí, ngôn ngữ MATLAB được phát triển độc quyền bởi MathWorks. Nếu MathWorks từng ra khỏi kinh doanh, thì Matlab sẽ không còn có thể được phát triển và cuối cùng có thể ngừng hoạt động.MATLAB is proprietary, closed-source software. For most people, a license to use MATLAB is quite expensive, which means that if you have code in MATLAB, then only people who can afford a license will be able to run it. Plus, users are charged for each additional toolbox they want to install to extend the basic functionality of MATLAB. Aside from the cost, the MATLAB language is developed exclusively by Mathworks. If Mathworks were ever to go out of business, then MATLAB would no longer be able to be developed and might eventually stop functioning.

Mặt khác, Python là phần mềm miễn phí và nguồn mở. Bạn không chỉ có thể tải xuống Python miễn phí mà còn có thể tải xuống, xem và sửa đổi mã nguồn. Đây là một lợi thế lớn cho Python vì điều đó có nghĩa là bất kỳ ai cũng có thể chọn sự phát triển của ngôn ngữ nếu các nhà phát triển hiện tại không thể tiếp tục vì một số lý do.Python is free and open-source software. Not only can you download Python at no cost, but you can also download, look at, and modify the source code as well. This is a big advantage for Python because it means that anyone can pick up the development of the language if the current developers were unable to continue for some reason.

Nếu bạn là một nhà nghiên cứu hoặc nhà khoa học, thì việc sử dụng phần mềm nguồn mở có một số lợi ích khá lớn. Paul Romer, người đoạt giải Nobel năm 2018 về kinh tế, là một người chuyển đổi gần đây thành Python. Theo ước tính của mình, đặc biệt chuyển sang phần mềm nguồn mở và Python nói riêng, đã mang lại sự toàn vẹn và trách nhiệm lớn hơn cho nghiên cứu của mình. Điều này là do tất cả các mã có thể được chia sẻ và chạy bởi bất kỳ người đọc quan tâm nào. Giáo sư Romer đã viết một bài viết xuất sắc, Jupyter, Mathicala và tương lai của bài nghiên cứu, về kinh nghiệm của ông với phần mềm nguồn mở.

Hơn nữa, vì Python có sẵn miễn phí, đối tượng rộng hơn nhiều có thể sử dụng mã bạn phát triển. Như bạn sẽ thấy sau đó một chút trong bài viết, Python có một cộng đồng tuyệt vời có thể giúp bạn bắt đầu với ngôn ngữ và nâng cao kiến ​​thức của bạn. Có hàng chục ngàn hướng dẫn, bài báo và sách tất cả về phát triển phần mềm Python. Dưới đây là một số ít để giúp bạn bắt đầu:

  • Giới thiệu về Python 3
  • Các loại dữ liệu cơ bản trong Python
  • Python 3 Khái niệm cơ bản về đường dẫn học tập

Thêm vào đó, với rất nhiều nhà phát triển trong cộng đồng, có hàng trăm ngàn gói miễn phí để hoàn thành nhiều nhiệm vụ mà bạn sẽ muốn làm với Python. Bạn sẽ tìm hiểu thêm về cách lấy các gói này sau này trong bài viết này.

Giống như Matlab, Python là một ngôn ngữ được giải thích. Điều này có nghĩa là mã Python có thể được chuyển giữa tất cả các nền tảng hệ điều hành chính và kiến ​​trúc CPU ngoài kia, chỉ có những thay đổi nhỏ cần thiết cho các nền tảng khác nhau. Có các bản phân phối của Python cho CPU và máy tính xách tay và máy vi điều khiển như máy tính để bàn và máy tính xách tay như Adafruit. Python cũng có thể nói chuyện với các bộ vi điều khiển khác như Arduino với giao diện lập trình đơn giản gần như giống hệt nhau bất kể hệ điều hành máy chủ.MATLAB, Python is an interpreted language. This means that Python code can be ported between all of the major operating system platforms and CPU architectures out there, with only small changes required for different platforms. There are distributions of Python for desktop and laptop CPUs and microcontrollers like Adafruit. Python can also talk to other microcontrollers like Arduino with a simple programming interface that is almost identical no matter the host operating system.

Vì tất cả những lý do này, và nhiều hơn nữa, Python là một lựa chọn tuyệt vời để thay thế Matlab làm ngôn ngữ lập trình của bạn. Bây giờ, bạn đã thuyết phục để thử Python, hãy đọc tiếp để tìm hiểu làm thế nào để lấy nó trên máy tính của bạn và cách chuyển từ MATLAB!

Thiết lập môi trường của bạn cho Python

Trong phần này, bạn sẽ học:

  • Cách cài đặt Python trên máy tính của bạn để chuyển đổi liền mạch từ MATLAB
  • Cách cài đặt thay thế cho môi trường phát triển tích hợp MATLAB
  • Cách sử dụng các thay thế cho MATLAB trên máy tính của bạn

Nhận Python qua Anaconda

Python có thể được tải xuống từ một số nguồn khác nhau, được gọi là phân phối. Chẳng hạn, Python mà bạn có thể tải xuống từ trang web Python chính thức là một bản phân phối. Một phân phối Python rất phổ biến khác, đặc biệt đối với các ứng dụng toán học, khoa học, kỹ thuật và khoa học dữ liệu, là phân phối Anaconda.distributions. For instance, the Python that you can download from the official Python website is one distribution. Another very popular Python distribution, particularly for math, science, engineering, and data science applications, is the Anaconda distribution.

Có hai lý do chính khiến Anaconda rất phổ biến:

  1. Anaconda phân phối các gói được xây dựng sẵn cho Windows, MacOS và Linux, điều đó có nghĩa là quá trình cài đặt thực sự dễ dàng và giống nhau cho cả ba nền tảng chính.

  2. Anaconda bao gồm tất cả các gói phổ biến nhất cho khối lượng công việc loại kỹ thuật và khoa học dữ liệu trong một trình cài đặt duy nhất.

Đối với mục đích tạo ra một môi trường rất giống với MATLAB, bạn nên tải xuống và cài đặt Anaconda. Theo văn bản này, có hai phiên bản chính của Python có sẵn: Python 2 và Python 3. Bạn chắc chắn nên cài đặt phiên bản Anaconda cho Python 3, vì Python 2 sẽ không được hỗ trợ vào ngày 1 tháng 1 năm 2020. Python 3.7 là phần lớn nhất Phiên bản gần đây tại thời điểm viết bài này, nhưng Python 3.8 sẽ được phát hành một vài tháng sau khi bài viết này được xuất bản. 3,7 hoặc 3,8 sẽ hoạt động giống nhau cho bạn, vì vậy hãy chọn phiên bản gần đây nhất bạn có thể.

Khi bạn đã tải xuống trình cài đặt Anaconda, bạn có thể làm theo các quy trình thiết lập mặc định tùy thuộc vào nền tảng của bạn. Bạn nên cài đặt Anaconda trong một thư mục không yêu cầu quyền quản trị viên sửa đổi, đây là cài đặt mặc định trong trình cài đặt.

Với Anaconda được cài đặt, có một vài chương trình cụ thể mà bạn nên biết. Cách dễ nhất để khởi chạy các ứng dụng là sử dụng Navigator Anaconda. Trên Windows, bạn có thể tìm thấy điều này trong menu bắt đầu và trên macOS, bạn có thể tìm thấy nó trong LaunchPad. Tại đây, một ảnh chụp màn hình của Navigator Anaconda trên Windows:

Hướng dẫn is matlab based off python? - Matlab có dựa trên python không?

Trong ảnh chụp màn hình, bạn có thể thấy một số ứng dụng được cài đặt, bao gồm Jupyterlab, Jupyter Notebook và Spyder, mà bạn sẽ tìm hiểu thêm về sau này trong hướng dẫn này.JupyterLab, Jupyter Notebook, and Spyder, that you’ll learn more about later in this tutorial.

Trên Windows, có một ứng dụng khác mà bạn nên biết. Đây được gọi là lời nhắc Anaconda và nó là một dấu nhắc lệnh được thiết lập cụ thể để hoạt động với

In [2]: import antigravity
22 trên Windows. Nếu bạn muốn nhập các lệnh
In [2]: import antigravity
22 vào thiết bị đầu cuối, thay vì sử dụng GUI điều hướng, thì bạn nên sử dụng lời nhắc Anaconda trên Windows.Anaconda Prompt, and it is a command prompt set up specifically to work with
In [2]: import antigravity
22 on Windows. If you want to type
In [2]: import antigravity
22 commands in a terminal, rather than using the Navigator GUI, then you should use Anaconda Prompt on Windows.

Trên macOS, bạn có thể sử dụng bất kỳ ứng dụng đầu cuối nào như thiết bị đầu cuối mặc định.APP hoặc ITERM2 để truy cập

In [2]: import antigravity
22 từ dòng lệnh. Trên Linux, bạn có thể sử dụng trình giả lập thiết bị đầu cuối mà bạn chọn và trình giả lập cụ thể được cài đặt sẽ phụ thuộc vào phân phối Linux của bạn.

Python cũng bao gồm một cách khác để cài đặt các gói, được gọi là

In [2]: import antigravity
25. Nếu bạn sử dụng Anaconda, bạn nên luôn thích cài đặt các gói bằng cách sử dụng
In [2]: import antigravity
22 bất cứ khi nào có thể. Tuy nhiên, đôi khi, một gói chỉ có sẵn với
In [2]: import antigravity
25 và đối với những trường hợp đó, bạn có thể đọc PIP là gì? Hướng dẫn cho Pythonistas mới.

Nhận một môi trường phát triển tích hợp

Một trong những lợi thế lớn của MATLAB là nó bao gồm một môi trường phát triển với phần mềm. Đây là cửa sổ mà bạn rất có thể đã từng làm việc. Có một giao diện điều khiển ở trung tâm nơi bạn có thể nhập các lệnh, một trình thám hiểm biến ở bên phải và một danh sách thư mục ở bên trái.

Không giống như Matlab, bản thân Python không có môi trường phát triển mặc định. Tùy thuộc vào mỗi người dùng để tìm một người phù hợp với nhu cầu của họ. May mắn thay, Anaconda đi kèm với hai môi trường phát triển tích hợp khác nhau (IDE) tương tự như Matlab IDE để làm cho công tắc của bạn liền mạch. Chúng được gọi là Spyder và Jupyterlab. Trong hai phần tiếp theo, bạn sẽ thấy một phần giới thiệu chi tiết về Spyder và một tổng quan ngắn gọn về Jupyterlab.

Spyder

Spyder là một IDE cho Python được phát triển dành riêng cho công việc Python khoa học. Một trong những điều thực sự hay về Spyder là nó có một chế độ được thiết kế đặc biệt cho những người như bạn đang chuyển đổi từ Matlab sang Python. Bạn sẽ thấy rằng một chút sau đó.

Đầu tiên, bạn nên mở Spyder. Nếu bạn làm theo các hướng dẫn trong phần trước, bạn có thể mở Spyder bằng cách sử dụng Navigator Anaconda. Chỉ cần tìm biểu tượng Spyder và nhấp vào nút khởi chạy. Bạn cũng có thể khởi chạy Spyder từ menu Bắt đầu nếu bạn sử dụng Windows hoặc từ Launchpad nếu bạn sử dụng MacOS.

Thay đổi bố cục cửa sổ mặc định trong Spyder

Cửa sổ mặc định trong Spyder trông giống như hình ảnh bên dưới. Đây là cho phiên bản 3.3.4 của Spyder chạy trên Windows 10. Nó trông khá giống nhau trên MacOS hoặc Linux:

Hướng dẫn is matlab based off python? - Matlab có dựa trên python không?

Trước khi bạn tham quan giao diện người dùng, bạn có thể làm cho giao diện trông giống Matlab hơn một chút. Trong chế độ xem → menu bố cục cửa sổ Chọn Bố cục MATLAB. Điều đó sẽ tự động thay đổi cửa sổ để nó có cùng khu vực mà bạn đã sử dụng từ MATLAB, được chú thích trên hình dưới đây:

Hướng dẫn is matlab based off python? - Matlab có dựa trên python không?

Ở phía trên bên trái của cửa sổ là tệp explorer hoặc danh sách thư mục. Trong khung này, bạn có thể tìm thấy các tệp mà bạn muốn chỉnh sửa hoặc tạo các tệp và thư mục mới để làm việc.directory listing. In this pane, you can find files that you want to edit or create new files and folders to work with.

Trong trung tâm hàng đầu là một trình soạn thảo tập tin. Trong trình soạn thảo này, bạn có thể làm việc trên các tập lệnh Python mà bạn muốn lưu để chạy lại sau này. Theo mặc định, trình soạn thảo mở một tệp có tên

In [2]: import antigravity
28 nằm trong thư mục cấu hình Spyder. Tệp này có nghĩa là một nơi tạm thời để thử mọi thứ trước khi bạn lưu chúng trong một tệp ở một nơi khác trên máy tính của bạn.

Ở trung tâm dưới cùng là bảng điều khiển. Giống như trong Matlab, bảng điều khiển là nơi bạn có thể chạy các lệnh để xem những gì họ làm hoặc khi bạn muốn gỡ lỗi một số mã. Các biến được tạo trong bảng điều khiển không được lưu nếu bạn đóng Spyder và mở nó lại. Bảng điều khiển đang chạy ipython về mặt kỹ thuật theo mặc định.

Bất kỳ lệnh nào bạn nhập vào bảng điều khiển sẽ được đăng nhập vào tệp lịch sử ở khung dưới bên phải của cửa sổ. Hơn nữa, bất kỳ biến nào bạn tạo trong bảng điều khiển sẽ được hiển thị trong Trình thám hiểm biến ở khung trên cùng bên phải.

Lưu ý rằng bạn có thể điều chỉnh kích thước của bất kỳ khung nào bằng cách đặt chuột của bạn trên dải phân cách giữa các tấm, nhấp và kéo cạnh đến kích thước mà bạn muốn. Bạn có thể đóng bất kỳ bảng nào bằng cách nhấp vào X vào đầu khung.

Bạn cũng có thể phá vỡ bất kỳ khung nào ra khỏi cửa sổ chính bằng cách nhấp vào nút trông giống như hai cửa sổ ở đỉnh khung, ngay bên cạnh X đóng khung. Khi một khung bị vỡ ra khỏi cửa sổ chính, bạn có thể kéo nó xung quanh và sắp xếp lại nó theo cách bạn muốn. Nếu bạn muốn đặt khung trở lại trong cửa sổ chính, hãy kéo nó bằng chuột để nền màu xanh hoặc xám trong suốt xuất hiện và các tấm lân cận thay đổi kích thước, sau đó buông ra và khung sẽ được đặt vào vị trí.

Khi bạn đã sắp xếp các tấm chính xác theo cách bạn muốn, bạn có thể yêu cầu Spyder lưu bố cục. Chuyển đến menu Xem và tìm bố cục cửa sổ một lần nữa. Sau đó nhấp vào Lưu bố cục hiện tại và đặt tên cho nó. Điều này cho phép bạn đặt lại về bố cục ưa thích của bạn bất cứ lúc nào nếu có điều gì đó bị thay đổi một cách tình cờ. Bạn cũng có thể đặt lại về một trong các cấu hình mặc định từ menu này.

Chạy báo cáo trong bảng điều khiển trong Spyder

Trong phần này, bạn sẽ viết một số lệnh Python đơn giản, nhưng đừng lo lắng nếu bạn không hiểu ý nghĩa của chúng. Bạn sẽ tìm hiểu thêm về cú pháp Python một chút sau đó trong bài viết này. Những gì bạn muốn làm ngay bây giờ là có ý nghĩa về cách giao diện Spyder tương tự và khác với giao diện MATLAB.

Bạn sẽ làm việc rất nhiều với bảng điều khiển Spyder trong bài viết này, vì vậy bạn nên tìm hiểu về cách thức hoạt động của nó. Trong bảng điều khiển, bạn sẽ thấy một dòng bắt đầu bằng

In [2]: import antigravity
29, cho dòng đầu vào 1. Spyder (thực sự, bảng điều khiển ipython) có tất cả các dòng đầu vào mà bạn gõ. Vì đây là đầu vào đầu tiên mà bạn gõ, nên số dòng là 1. Trong phần còn lại của bài viết này, bạn sẽ thấy các tham chiếu đến dòng đầu vào X, trong đó X là số trong dấu ngoặc vuông.

Một trong những điều đầu tiên tôi thích làm với những người mới đến Python là cho họ thấy Zen of Python. Bài thơ ngắn này mang đến cho bạn cảm giác về những gì Python là tất cả và cách tiếp cận làm việc với Python.

Để xem Zen của Python, hãy nhập

In [2]: import antigravity
30 trên dòng đầu vào 1 và sau đó chạy mã bằng cách nhấn Enter. Bạn sẽ thấy một đầu ra như dưới đây:Enter. You’ll see an output like below:

>>>

In [1]: 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!

Mã này có

In [2]: import antigravity
30 trên dòng đầu vào 1. Đầu ra từ chạy
In [2]: import antigravity
30 là in zen của Python lên bảng điều khiển. Chúng tôi sẽ trở lại với một số khổ thơ trong bài thơ này sau đó trong bài viết.

Trong nhiều khối mã trong bài viết này, bạn sẽ thấy ba dấu hiệu lớn hơn (

In [2]: import antigravity
33) ở phía trên bên phải của khối mã. Nếu bạn nhấp vào đó, nó sẽ xóa dấu nhắc đầu vào và bất kỳ dòng đầu ra nào, để bạn có thể sao chép và dán mã ngay vào bảng điều khiển của bạn.

Nhiều Pythonistas duy trì khiếu hài hước lành mạnh. Điều này được hiển thị ở nhiều nơi trên khắp ngôn ngữ, bao gồm cả Zen of Python. Đối với một cái khác, trong bảng điều khiển Spyder, nhập mã sau, theo sau là Enter để chạy nó:Enter to run it:

>>>

In [2]: import antigravity

Tuyên bố đó sẽ mở trình duyệt web của bạn cho webcomic có tên XKCD, cụ thể là Comic #353, nơi tác giả đã phát hiện ra rằng Python đã cho anh ta khả năng bay!

Bây giờ bạn đã chạy thành công hai câu lệnh Python đầu tiên của mình! Xin chúc mừng

Nếu bạn nhìn vào nhật ký lịch sử, bạn sẽ thấy hai lệnh đầu tiên bạn đã nhập vào bảng điều khiển (

In [2]: import antigravity
30 và
In [2]: import antigravity
35). Hãy để xác định một số biến và thực hiện một số số học cơ bản ngay bây giờ. Trong bảng điều khiển, nhập các câu lệnh sau, nhấn enter sau mỗi cái:Enter after each one:

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30

Trong mã này, bạn đã xác định 3 biến:

In [2]: import antigravity
36,
In [2]: import antigravity
37 và
In [2]: import antigravity
38. Bạn đã gán
In [2]: import antigravity
36 Giá trị 10,
In [2]: import antigravity
37 Giá trị 20 và
In [2]: import antigravity
38 tổng của
In [2]: import antigravity
36 và
In [2]: import antigravity
37. Sau đó, bạn đã hiển thị giá trị của biến
In [2]: import antigravity
38 bằng cách viết nó là thứ duy nhất trên dòng đầu vào. Đầu ra từ câu lệnh đó được hiển thị trên dòng
In [2]: import antigravity
45 tiếp theo và số trên dòng
In [2]: import antigravity
45 phù hợp với dòng
In [2]: import antigravity
47 được liên kết.

Có hai điều chính để bạn chú ý trong các lệnh này:

  1. Nếu một câu lệnh không bao gồm một bài tập (với

    In [2]: import antigravity
    
    48), nó được in trên dòng
    In [2]: import antigravity
    
    45. Trong MATLAB, bạn sẽ cần phải bao gồm một dấu chấm phẩy để triệt tiêu đầu ra ngay cả từ các câu lệnh gán, nhưng điều đó là không cần thiết trong Python.

  2. Trên các dòng đầu vào 3, 4 và 5, Trình thám hiểm biến ở khung trên cùng bên phải được cập nhật.

Sau khi bạn chạy ba lệnh này, trình thám hiểm biến của bạn sẽ trông giống như hình ảnh bên dưới:

Hướng dẫn is matlab based off python? - Matlab có dựa trên python không?

Trong hình ảnh này, bạn có thể thấy một bảng có bốn cột:

  1. Tên cho thấy tên mà bạn đã đặt cho
    In [2]: import antigravity
    
    36,
    In [2]: import antigravity
    
    37 và
    In [2]: import antigravity
    
    38.
    shows the name that you gave to
    In [2]: import antigravity
    
    36,
    In [2]: import antigravity
    
    37, and
    In [2]: import antigravity
    
    38.
  2. Loại hiển thị loại python của biến, trong trường hợp này, tất cả
    In [2]: import antigravity
    
    53 cho số nguyên.
    shows the Python type of the variable, in this case, all
    In [2]: import antigravity
    
    53 for integer numbers.
  3. Kích thước cho thấy kích thước của biến được lưu trữ dữ liệu, hữu ích hơn cho danh sách và các cấu trúc dữ liệu khác. shows the size of the data stored variable, which is more useful for lists and other data structures.
  4. Giá trị hiển thị giá trị hiện tại của biến. shows the current value of the variable.

Chạy mã trong các tệp trong spyder

Điểm dừng cuối cùng trong chuyến tham quan ngắn gọn của chúng tôi về giao diện Spyder là khung trình chỉnh sửa tệp. Trong khung này, bạn có thể tạo và chỉnh sửa các tập lệnh Python và chạy chúng bằng cách sử dụng bảng điều khiển. Theo mặc định, Spyder tạo một tệp tạm thời có tên

In [2]: import antigravity
28 nhằm mục đích lưu trữ tạm thời các lệnh khi bạn làm việc trước khi bạn di chuyển hoặc lưu chúng trong một tệp khác.

Hãy cùng viết một số mã vào tệp

In [2]: import antigravity
28 và xem cách chạy nó. Tệp bắt đầu bằng mã sau, mà bạn có thể để tại chỗ:

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""

Trong mã này, bạn có thể thấy hai cấu trúc cú pháp Python:

  • Dòng 1 có một bình luận. Trong Python, nhân vật nhận xét là dấu hiệu băm hoặc pound (

    In [2]: import antigravity
    
    56). MATLAB sử dụng ký hiệu phần trăm (
    In [2]: import antigravity
    
    57) làm nhân vật nhận xét. Bất cứ điều gì sau băm trên dòng là một nhận xét và thường bị thông dịch viên Python bỏ qua.

  • Bắt đầu trên dòng 2 là một chuỗi cung cấp một số ngữ cảnh cho nội dung của tệp. Điều này thường được gọi là một chuỗi tài liệu hoặc tài liệu ngắn. Bạn sẽ tìm hiểu thêm về Docstrings trong một phần sau.documentation string or docstring for short. You’ll learn more about docstrings in a later section.

Bây giờ bạn có thể bắt đầu thêm mã vào tệp này. Bắt đầu trên dòng 8 trong

In [2]: import antigravity
28, nhập mã sau tương tự như những gì bạn đã nhập vào bảng điều khiển:

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5

Sau đó, có ba cách để chạy mã:

  1. Bạn có thể sử dụng phím tắt F5 để chạy tệp giống như trong MATLAB.F5 keyboard shortcut to run the file just like in MATLAB.
  2. Bạn có thể nhấp vào hình tam giác phía bên phải màu xanh lá cây trong thanh menu ngay phía trên trình chỉnh sửa và tệp trình thám hiểm tệp.
  3. Bạn có thể sử dụng tùy chọn Run → Run menu.

Lần đầu tiên bạn chạy tệp, Spyder sẽ mở cửa sổ hộp thoại yêu cầu bạn xác nhận các tùy chọn bạn muốn sử dụng. Đối với thử nghiệm này, các tùy chọn mặc định là tốt và bạn có thể nhấp vào chạy ở dưới cùng của hộp thoại:

Hướng dẫn is matlab based off python? - Matlab có dựa trên python không?

Điều này sẽ tự động thực thi mã sau trong bảng điều khiển:

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')

Mã này sẽ chạy tệp mà bạn đang làm việc. Lưu ý rằng chạy tệp đã thêm ba biến vào Trình thám hiểm biến:

In [2]: import antigravity
59,
In [2]: import antigravity
60 và
In [2]: import antigravity
61. Đây là ba biến mà bạn đã xác định trong tệp. Bạn cũng sẽ thấy
In [2]: import antigravity
62 được thêm vào nhật ký lịch sử.

Trong Spyder, bạn cũng có thể tạo các ô mã có thể được chạy riêng lẻ. Để tạo một ô mã, hãy thêm một dòng bắt đầu bằng

In [2]: import antigravity
63 vào tệp mở trong trình chỉnh sửa:

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")

Trong mã này, bạn đã tạo ô mã đầu tiên của mình trên dòng 11 với mã

In [2]: import antigravity
63. Những gì sau đây là một nhận xét dòng và bị Python bỏ qua. Trên dòng 12, bạn đang gán
In [2]: import antigravity
65 để có giá trị 42 và sau đó chỉ định dòng 13
In [2]: import antigravity
66 là
In [2]: import antigravity
65 lần hai. Dòng 15 bắt đầu một ô mã khác có thể được thực thi riêng biệt với đoạn đầu tiên.

Để thực hiện các ô mã, nhấp vào di động di động hiện tại hoặc chạy ô hiện tại và đi đến các nút tiếp theo bên cạnh nút chạy chung trong thanh công cụ. Bạn cũng có thể sử dụng các phím tắt CTRL+ENTER để chạy ô hiện tại và để nó được chọn, hoặc Shift+Enter để chạy ô hiện tại và chọn ô tiếp theo.Ctrl+Enter to run the current cell and leave it selected, or Shift+Enter to run the current cell and select the next cell.

Spyder cũng cung cấp các tính năng gỡ lỗi dễ sử dụng, giống như trong Matlab. Bạn có thể nhấp đúp vào bất kỳ số dòng nào trong trình soạn thảo để đặt điểm dừng trong mã của bạn. Bạn có thể chạy mã ở chế độ gỡ lỗi bằng hình tam giác phía bên phải màu xanh với hai đường thẳng đứng từ thanh công cụ hoặc phím tắt bàn phím Ctrl+F5. Điều này sẽ tạm dừng thực hiện tại bất kỳ điểm dừng nào bạn chỉ định và mở trình gỡ lỗi

In [2]: import antigravity
68 trong bảng điều khiển là cách tăng cường IPYTHON để chạy trình gỡ lỗi Python
In [2]: import antigravity
69. Bạn có thể đọc thêm trong Python gỡ lỗi với PDB.Ctrl+F5 keyboard shortcut. This will pause execution at any breakpoints you specify and open the
In [2]: import antigravity
68 debugger in the console which is an IPython-enhanced way to run the Python debugger
In [2]: import antigravity
69. You can read more in Python Debugging With pdb.

Tóm tắt trải nghiệm của bạn trong Spyder

Bây giờ bạn có các công cụ cơ bản để sử dụng Spyder để thay thế cho môi trường phát triển tích hợp MATLAB. Bạn biết cách chạy mã trong bảng điều khiển hoặc gõ mã vào một tệp và chạy tệp. Bạn cũng biết nơi để xem để xem các thư mục và tệp của mình, các biến mà bạn đã xác định và lịch sử của các lệnh bạn đã nhập.

Khi bạn đã sẵn sàng để bắt đầu tổ chức mã thành các mô -đun và gói, bạn có thể kiểm tra các tài nguyên sau:

  • Các mô -đun và gói Python - Giới thiệu
  • Cách xuất bản gói Python nguồn mở thành PYPI
  • Cách xuất bản gói Python của riêng bạn thành Pypi

Spyder là một phần mềm thực sự lớn và bạn chỉ bị trầy xước bề mặt. Bạn có thể tìm hiểu thêm về Spyder bằng cách đọc tài liệu chính thức, hướng dẫn xử lý sự cố và Câu hỏi thường gặp và Wiki Spyder.

Jupyterlab

Jupyterlab là một IDE được phát triển bởi Project Jupyter. Bạn có thể đã nghe nói về Notebook Jupyter, đặc biệt nếu bạn là một nhà khoa học dữ liệu. Chà, Jupyterlab là lần lặp tiếp theo của Notebook Jupyter. Mặc dù tại thời điểm viết Jupyterlab này vẫn còn trong phiên bản beta, Project Jupyter hy vọng rằng Jupyterlab cuối cùng sẽ thay thế giao diện máy chủ Notebook hiện tại. Tuy nhiên, Jupyterlab hoàn toàn tương thích với các máy tính xách tay hiện có nên quá trình chuyển đổi phải khá liền mạch.

Jupyterlab được cài đặt sẵn với Anaconda, vì vậy bạn có thể khởi chạy nó từ Navigator Anaconda. Tìm hộp Jupyterlab và nhấp vào khởi chạy. Điều này sẽ mở trình duyệt web của bạn đến địa chỉ

In [2]: import antigravity
70.

Cửa sổ Jupyterlab chính được hiển thị trong hình dưới đây:

Hướng dẫn is matlab based off python? - Matlab có dựa trên python không?

Có hai phần chính của giao diện:

  1. Bên trái là trình khám phá tệp cho phép bạn mở tệp từ máy tính của mình.
  2. Ở phía bên phải của cửa sổ là cách bạn có thể mở tạo các tệp máy tính xách tay mới, hoạt động trong bảng điều khiển hoặc thiết bị đầu cuối hệ thống IPYTHON hoặc tạo tệp văn bản mới.

Nếu bạn quan tâm đến việc tìm hiểu thêm về Jupyterlab, bạn có thể đọc thêm về sự phát triển tiếp theo của sổ ghi chép trong bài đăng trên blog thông báo bản phát hành beta hoặc trong tài liệu Jupyterlab. Bạn cũng có thể tìm hiểu về giao diện máy tính xách tay trong Jupyter Notebook: Giới thiệu và khóa học sử dụng Jupyter Notebooks. Một điều gọn gàng về tài liệu kiểu máy tính xách tay Jupyter là các ô mã bạn đã tạo trong Spyder rất giống với các ô mã trong sổ ghi chép Jupyter.

Tìm hiểu về các thư viện toán học Python

Bây giờ bạn đã có Python trên máy tính của bạn và bạn đã có một IDE nơi bạn cảm thấy như ở nhà. Vậy làm thế nào để bạn tìm hiểu về cách thực sự hoàn thành một nhiệm vụ trong Python? Với MATLAB, bạn có thể sử dụng công cụ tìm kiếm để tìm chủ đề mà bạn đang tìm kiếm chỉ bằng cách đưa

In [2]: import antigravity
71 vào truy vấn của bạn. Với Python, bạn sẽ thường nhận được kết quả tìm kiếm tốt hơn nếu bạn có thể cụ thể hơn một chút trong truy vấn của mình hơn là chỉ bao gồm
In [2]: import antigravity
72.

Trong phần này, bạn sẽ thực hiện bước tiếp theo để thực sự cảm thấy thoải mái với Python bằng cách tìm hiểu về cách chức năng Python được chia thành một số thư viện. Bạn cũng sẽ tìm hiểu những gì mỗi thư viện làm để bạn có thể nhận được kết quả hàng đầu với các tìm kiếm của mình!

Python đôi khi được gọi là ngôn ngữ bao gồm pin. Điều này có nghĩa là hầu hết các chức năng quan trọng bạn cần đã được bao gồm khi bạn cài đặt Python. Chẳng hạn, Python đã tích hợp các thư viện

In [2]: import antigravity
73 và
In [2]: import antigravity
74 bao gồm các hoạt động cơ bản.batteries-included language. This means that most of the important functions you need are already included when you install Python. For instance, Python has built-in
In [2]: import antigravity
73 and
In [2]: import antigravity
74 libraries that include the basic operations.

Tuy nhiên, đôi khi, bạn muốn làm một cái gì đó không có trong ngôn ngữ. Một trong những lợi thế lớn của Python là người khác có lẽ đã làm bất cứ điều gì bạn cần làm và xuất bản mã để hoàn thành nhiệm vụ đó. Có vài trăm ngàn gói có sẵn công khai và miễn phí mà bạn có thể dễ dàng cài đặt để thực hiện các nhiệm vụ khác nhau. Chúng bao gồm từ xử lý các tệp PDF đến xây dựng và lưu trữ một trang web tương tác đến làm việc với các chức năng khoa học và toán học được tối ưu hóa cao.

Làm việc với các mảng hoặc ma trận, tối ưu hóa hoặc vẽ đồ thị đòi hỏi các thư viện bổ sung phải được cài đặt. May mắn thay, nếu bạn cài đặt Python với trình cài đặt Anaconda, các thư viện này sẽ được cài đặt sẵn và bạn không cần phải lo lắng. Ngay cả khi bạn không sử dụng Anaconda, chúng thường khá dễ cài đặt cho hầu hết các hệ điều hành.

Tập hợp các thư viện quan trọng mà bạn sẽ cần chuyển từ MATLAB thường được gọi là SCIPY Stack. Ở cơ sở của ngăn xếp là các thư viện cung cấp các hoạt động mảng và ma trận cơ bản (NUMPY), tích hợp, tối ưu hóa, xử lý tín hiệu và các hàm đại số tuyến tính (SCIPY) và vẽ âm mưu (matplotlib). Các thư viện khác xây dựng dựa trên những điều này để cung cấp chức năng nâng cao hơn bao gồm gấu trúc, scikit-learn, sympy, v.v.SciPy stack. At the base of the stack are libraries that provide fundamental array and matrix operations (NumPy), integration, optimization, signal processing, and linear algebra functions (SciPy), and plotting (Matplotlib). Other libraries that build on these to provide more advanced functionality include Pandas, scikit-learn, SymPy, and more.

Numpy (Python số)

Numpy có lẽ là gói cơ bản nhất để điện toán khoa học trong Python. Nó cung cấp một giao diện hiệu quả cao để tạo và tương tác với các mảng đa chiều. Gần như mọi gói khác trong SCIPY Stack sử dụng hoặc tích hợp với Numpy theo một cách nào đó.

Các mảng Numpy tương đương với cấu trúc dữ liệu mảng cơ bản trong MATLAB. Với các mảng Numpy, bạn có thể làm những việc như các sản phẩm bên trong và bên ngoài, chuyển vị và hoạt động theo yếu tố. Numpy cũng chứa một số phương pháp hữu ích để đọc các tệp dữ liệu văn bản và dữ liệu nhị phân, phù hợp với các hàm đa thức, nhiều hàm toán học (sin, cosine, gốc, v.v.) và tạo các số ngẫu nhiên.

Các phần nhạy cảm với hiệu suất của Numpy đều được viết bằng ngôn ngữ C, vì vậy chúng rất nhanh. Numpy cũng có thể tận dụng các thư viện đại số tuyến tính được tối ưu hóa như Intel MKL MKL hoặc OpenBlas để tăng thêm hiệu suất.

Scipy (Python khoa học)

Gói SCIPY (khác biệt với SCIPY Stack) là một thư viện cung cấp một số lượng lớn các chức năng hữu ích cho các ứng dụng khoa học. Nếu bạn cần thực hiện công việc đòi hỏi tối ưu hóa, đại số tuyến tính hoặc đại số tuyến tính thưa thớt, biến đổi Fourier rời rạc, xử lý tín hiệu, hằng số vật lý, xử lý hình ảnh hoặc tích hợp số, thì SCIPY là thư viện cho bạn! Vì Scipy thực hiện rất nhiều tính năng khác nhau, nên nó gần giống như có quyền truy cập vào một loạt các hộp công cụ MATLAB trong một gói.

Scipy phụ thuộc rất nhiều vào các mảng numpy để thực hiện công việc của mình. Giống như Numpy, nhiều thuật toán trong SCIPY được thực hiện trong C hoặc Fortran, vì vậy chúng cũng rất nhanh. Cũng giống như Numpy, SCIPY có thể tận dụng các thư viện đại số tuyến tính được tối ưu hóa để cải thiện hiệu suất hơn nữa.

Matplotlib (Thư viện âm mưu giống MATLAB)

Matplotlib là một thư viện để tạo ra các lô hai chiều chất lượng cao và tương tác. Matplotlib được thiết kế để cung cấp giao diện âm mưu tương tự như hàm

In [2]: import antigravity
75 trong MATLAB, vì vậy mọi người chuyển đổi từ MATLAB nên thấy nó hơi quen thuộc. Mặc dù các chức năng cốt lõi trong matplotlib dành cho các sơ đồ dữ liệu 2 chiều, nhưng có các tiện ích mở rộng có sẵn cho phép vẽ theo ba chiều với gói mplot3D, vẽ dữ liệu địa lý với cartopy và nhiều thứ khác được liệt kê trong tài liệu matplotlib.

Các thư viện Python quan trọng khác

Với Numpy, Scipy và Matplotlib, bạn có thể chuyển rất nhiều mã MATLAB của mình sang Python. Nhưng có một vài thư viện có thể hữu ích để biết.

  • Pandas cung cấp một DataFrame, một mảng có khả năng đặt tên cho các hàng và cột để dễ dàng truy cập. provides a DataFrame, an array with the ability to name rows and columns for easy access.
  • Sympy cung cấp toán học tượng trưng và hệ thống đại số máy tính. provides symbolic mathematics and a computer algebra system.
  • Scikit-Learn cung cấp nhiều chức năng liên quan đến các nhiệm vụ học máy. provides many functions related to machine learning tasks.
  • SCIKIT-IMAGE cung cấp các chức năng liên quan đến xử lý hình ảnh, tương thích với thư viện tương tự trong Scipy. provides functions related to image processing, compatible with the similar library in SciPy.
  • TensorFlow cung cấp một nền tảng chung cho nhiều nhiệm vụ học máy. provides a common platform for many machine learning tasks.
  • Keras cung cấp một thư viện để tạo ra các mạng thần kinh. provides a library to generate neural networks.
  • Đa xử lý cung cấp một cách để thực hiện song song dựa trên đa quy trình. Nó được xây dựng thành Python. provides a way to perform multi-process based parallelism. It’s built into Python.
  • PINT cung cấp một thư viện đơn vị để tiến hành chuyển đổi tự động giữa các hệ thống đơn vị vật lý. provides a unit library to conduct automatic conversion between physical unit systems.
  • PyTables cung cấp một trình đọc và người viết cho các tệp định dạng HDF5. provides a reader and writer for HDF5 format files.
  • PYMC3 cung cấp mô hình thống kê Bayes và chức năng học máy xác suất. provides Bayesian statistical modeling and probabilistic machine learning functionality.

Sự khác biệt về cú pháp giữa MATLAB® và Python

Trong phần này, bạn sẽ học cách chuyển đổi mã MATLAB của mình thành mã Python. Bạn sẽ tìm hiểu về sự khác biệt cú pháp chính giữa Matlab và Python, xem tổng quan về các hoạt động mảng cơ bản và cách chúng khác nhau giữa Matlab và Python, và tìm hiểu về một số cách để thử chuyển đổi mã tự động của bạn.

Sự khác biệt kỹ thuật lớn nhất giữa Matlab và Python là ở Matlab, mọi thứ được coi là một mảng, trong khi ở Python, mọi thứ đều là một đối tượng chung hơn. Chẳng hạn, trong MATLAB, các chuỗi là các mảng ký tự hoặc mảng chuỗi, trong khi ở Python, các chuỗi có loại đối tượng riêng được gọi là

In [2]: import antigravity
76. Điều này có hậu quả sâu sắc cho cách bạn tiếp cận mã hóa trong mỗi ngôn ngữ, như bạn sẽ thấy bên dưới.

Với cách đó, hãy để bắt đầu! Để giúp bạn, các phần dưới đây được tổ chức thành các nhóm dựa trên khả năng bạn sẽ chạy vào cú pháp đó.

Bạn có thể sẽ thấy cú pháp này

Các ví dụ trong phần này đại diện cho mã mà bạn rất có thể thấy trong tự nhiên. Những ví dụ này cũng chứng minh một số tính năng ngôn ngữ Python cơ bản hơn. Bạn nên đảm bảo rằng bạn có một nắm bắt tốt về những ví dụ này trước khi tiếp tục.

Khoảng trắng ở đầu một dòng có ý nghĩa trong Python

Khi bạn viết mã trong MATLAB, các khối như các câu lệnh

In [2]: import antigravity
77, các vòng lặp
In [2]: import antigravity
78 và
In [2]: import antigravity
79 và các định nghĩa chức năng được hoàn thành với từ khóa
In [2]: import antigravity
80. Nó thường được coi là một thực tế tốt trong MATLAB để thụt mã trong các khối để mã được nhóm trực quan lại với nhau, nhưng nó không cần thiết về mặt cú pháp.

Ví dụ: hai khối mã sau đây tương đương về mặt chức năng trong MATLAB:

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")

Trong mã này, trước tiên bạn tạo

In [2]: import antigravity
81 để lưu trữ giá trị 10 và sau đó kiểm tra xem giá trị của
In [2]: import antigravity
81 có bằng 10. Nếu có, bạn đang hiển thị cụm từ
In [2]: import antigravity
83 trên bảng điều khiển từ dòng 2. Nếu không, điều khoản
In [2]: import antigravity
84 sẽ đá và hiển thị
In [2]: import antigravity
85. Tất nhiên, nếu bạn chạy mã này, bạn sẽ thấy đầu ra
In [2]: import antigravity
83 và sau đó
In [2]: import antigravity
87.

Bây giờ bạn nên sửa đổi mã của mình để có vẻ như mẫu dưới đây:

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")

Trong mã này, bạn chỉ thay đổi dòng 3 và 5 bằng cách thêm một số không gian hoặc thụt vào phía trước của dòng. Mã sẽ thực hiện giống hệt với mã ví dụ trước, nhưng với thụt lề, việc biết mã nào sẽ dễ dàng hơn trong phần

In [2]: import antigravity
77 của câu lệnh và mã nào trong phần
In [2]: import antigravity
84 của câu lệnh.

Trong Python, thụt vào khi bắt đầu một dòng được sử dụng để phân định phần bắt đầu và kết thúc của các định nghĩa của lớp và chức năng, các câu lệnh

In [2]: import antigravity
77 và các vòng lặp
In [2]: import antigravity
78 và
In [2]: import antigravity
79. Không có từ khóa
In [2]: import antigravity
80 trong Python. Điều này có nghĩa là thụt lề là rất quan trọng trong Python!

Ngoài ra, trong Python, dòng định nghĩa của một câu lệnh

In [2]: import antigravity
94, vòng lặp
In [2]: import antigravity
78 hoặc
In [2]: import antigravity
79, một hàm hoặc một lớp được kết thúc bởi một đại tràng. Trong Matlab, dấu hai chấm không được sử dụng để kết thúc dòng.

Xem xét ví dụ về mã này:

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")

Trên dòng đầu tiên, bạn đang xác định

In [2]: import antigravity
81 và đặt giá trị của nó thành 10. Trên dòng 2, viết
In [2]: import antigravity
98 kiểm tra giá trị của
In [2]: import antigravity
81 so với 10. Lưu ý đại tràng ở cuối dòng.

Tiếp theo, dòng 3 phải được thụt vào trong cú pháp Python. Trên dòng đó, bạn đang sử dụng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 để hiển thị một số đầu ra cho bảng điều khiển, theo cách tương tự như
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
01 trong MATLAB. Bạn sẽ đọc thêm về
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 so với
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
01 trong phần sau.

Trên dòng 4, bạn đang bắt đầu khối

In [2]: import antigravity
84. Lưu ý rằng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
05 trong từ khóa
In [2]: import antigravity
84 được liên kết theo chiều dọc với
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
07 trong từ khóa
In [2]: import antigravity
77 và dòng được kết thúc bởi một dấu hai chấm. Bởi vì
In [2]: import antigravity
84 được dành so với
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 trên dòng 3 và vì nó được liên kết với từ khóa
In [2]: import antigravity
77, Python biết rằng mã trong phần
In [2]: import antigravity
77 của khối đã kết thúc và phần
In [2]: import antigravity
84 đang bắt đầu. Dòng 5 được thụt vào một cấp, do đó, nó tạo thành khối mã được thực thi khi câu lệnh
In [2]: import antigravity
84 được thỏa mãn.

Cuối cùng, trên dòng 6, bạn đang in một tuyên bố từ bên ngoài khối ____ ____ 177/________ 184. Tuyên bố này sẽ được in bất kể giá trị của

In [2]: import antigravity
81. Lưu ý rằng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
18 trong
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 được liên kết theo chiều dọc với
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
07 trong
In [2]: import antigravity
77 và
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
05 trong
In [2]: import antigravity
84. Đây là cách Python biết rằng mã trong khối ________ 177/________ 184 đã kết thúc. Nếu bạn chạy mã ở trên, Python sẽ hiển thị
In [2]: import antigravity
83 theo sau là
In [2]: import antigravity
87.

Bây giờ bạn nên sửa đổi mã ở trên để loại bỏ thụt lề và xem điều gì sẽ xảy ra. Nếu bạn cố gắng nhập mã mà không cần thụt vào bảng điều khiển Spyder/Ipython, bạn sẽ nhận được

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
28:

>>>

In [2]: import antigravity
0

Trong mã này, trước tiên bạn đặt giá trị của

In [2]: import antigravity
81 thành 10 và sau đó cố gắng viết câu lệnh
In [2]: import antigravity
77 mà không cần thụt lề. Trên thực tế, bảng điều khiển Ipython thông minh và tự động chỉ ra dòng sau câu lệnh
In [2]: import antigravity
77 cho bạn, vì vậy bạn sẽ phải xóa thụt vào để tạo ra lỗi này.

Khi bạn thụt mã mã của mình, hướng dẫn kiểu Python chính thức có tên PEP 8 khuyên bạn nên sử dụng 4 ký tự không gian để thể hiện một cấp độ thụt. Hầu hết các trình chỉnh sửa văn bản được thiết lập để hoạt động với các tệp Python sẽ tự động chèn 4 khoảng trống nếu bạn nhấn phím tab trên bàn phím của mình. Bạn có thể chọn sử dụng ký tự tab cho mã của mình nếu bạn muốn, nhưng bạn không nên trộn các tab và khoảng trống hoặc bạn có thể sẽ kết thúc với

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
32 nếu thụt lề trở nên không phù hợp.Tab key on your keyboard. You can choose to use the tab character for your code if you want, but you shouldn’t mix tabs and spaces or you’ll probably end up with a
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
32 if the indentation becomes mismatched.

Các tuyên bố có điều kiện sử dụng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
33 trong Python

Trong MATLAB, bạn có thể xây dựng các câu lệnh có điều kiện với

In [2]: import antigravity
77,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
35 và
In [2]: import antigravity
84. Những loại câu lệnh này cho phép bạn kiểm soát luồng chương trình của mình để đáp ứng với các điều kiện khác nhau.

Bạn nên thử ý tưởng này với mã bên dưới, sau đó so sánh ví dụ về MATLAB vs Python cho các câu lệnh có điều kiện:

In [2]: import antigravity
1

Trong khối mã này, bạn đang xác định

In [2]: import antigravity
81 bằng 10. Sau đó, bạn đang kiểm tra xem giá trị của
In [2]: import antigravity
81 là 10 và nếu có, sử dụng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
01 để in đầu ra vào bảng điều khiển. Nếu
In [2]: import antigravity
81 là 20, bạn đang in một tuyên bố khác và nếu
In [2]: import antigravity
81 không phải là 10 hay 20, bạn đang in câu lệnh thứ ba.

Trong Python, từ khóa

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
35 được thay thế bằng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
33:

In [2]: import antigravity
2

Khối mã này có chức năng tương đương với khối mã MATLAB trước đó. Có 2 sự khác biệt chính. Trên dòng 4,

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
35 được thay thế bằng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
33 và không có câu lệnh
In [2]: import antigravity
80 để kết thúc khối. Thay vào đó, khối
In [2]: import antigravity
77 kết thúc khi dòng mã dành riêng tiếp theo được tìm thấy sau
In [2]: import antigravity
84. Bạn có thể đọc thêm trong tài liệu Python cho các câu lệnh
In [2]: import antigravity
77.

Gọi các chức năng và trình tự lập chỉ mục sử dụng các dấu ngoặc khác nhau trong Python

Trong MATLAB, khi bạn muốn gọi một hàm hoặc khi bạn muốn lập chỉ mục một mảng, bạn sử dụng dấu ngoặc tròn (

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
50), đôi khi còn được gọi là dấu ngoặc đơn. Dấu ngoặc vuông (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
51) được sử dụng để tạo mảng.

Bạn có thể kiểm tra sự khác biệt trong MATLAB vs Python với mã ví dụ bên dưới:

>>>

In [2]: import antigravity
3

Trong mã này, trước tiên bạn tạo một mảng bằng dấu ngoặc vuông ở phía bên phải của dấu bằng. Sau đó, bạn lấy giá trị của phần tử đầu tiên bằng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
52, sử dụng khung tròn làm toán tử lập chỉ mục. Trên dòng đầu vào thứ ba, bạn đang gọi
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 và sử dụng giá đỡ tròn để chỉ ra các tham số nên được chuyển vào
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53, trong trường hợp này chỉ
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55. MATLAB tính tổng của các phần tử trong
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55 và trả về kết quả đó.

Python sử dụng cú pháp riêng biệt để gọi các chức năng và trình tự lập chỉ mục. Trong Python, sử dụng dấu ngoặc tròn có nghĩa là phải thực thi chức năng và sử dụng dấu ngoặc vuông sẽ lập chỉ mục một chuỗi:

>>>

In [2]: import antigravity
4

Trong mã này, trước tiên bạn tạo một mảng bằng dấu ngoặc vuông ở phía bên phải của dấu bằng. Sau đó, bạn lấy giá trị của phần tử đầu tiên bằng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
52, sử dụng khung tròn làm toán tử lập chỉ mục. Trên dòng đầu vào thứ ba, bạn đang gọi
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 và sử dụng giá đỡ tròn để chỉ ra các tham số nên được chuyển vào
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53, trong trường hợp này chỉ
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55. MATLAB tính tổng của các phần tử trong
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55 và trả về kết quả đó.

Python sử dụng cú pháp riêng biệt để gọi các chức năng và trình tự lập chỉ mục. Trong Python, sử dụng dấu ngoặc tròn có nghĩa là phải thực thi chức năng và sử dụng dấu ngoặc vuông sẽ lập chỉ mục một chuỗi:

Trong mã này, bạn đang xác định danh sách Python trên dòng đầu vào 1. Danh sách Python có một số điểm khác biệt quan trọng từ các mảng trong MATLAB và các mảng từ gói Numpy. Bạn có thể đọc thêm về danh sách Python trong danh sách và bộ dữ liệu trong Python và bạn sẽ tìm hiểu thêm về các mảng numpy trong phần sau.

Trên dòng đầu vào 2, bạn đang hiển thị giá trị của phần tử đầu tiên của danh sách với thao tác lập chỉ mục bằng dấu ngoặc vuông. Trên dòng đầu vào 3, bạn đang gọi

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 bằng cách sử dụng dấu ngoặc tròn và chuyển trong danh sách được lưu trữ trong
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55. Điều này dẫn đến tổng của các yếu tố danh sách được hiển thị trên dòng cuối cùng. Lưu ý rằng Python sử dụng dấu ngoặc vuông để lập chỉ mục danh sách và dấu ngoặc tròn để gọi các chức năng.

>>>

In [2]: import antigravity
5

Trong mã này, trước tiên bạn tạo một mảng bằng dấu ngoặc vuông ở phía bên phải của dấu bằng. Sau đó, bạn lấy giá trị của phần tử đầu tiên bằng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
52, sử dụng khung tròn làm toán tử lập chỉ mục. Trên dòng đầu vào thứ ba, bạn đang gọi
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 và sử dụng giá đỡ tròn để chỉ ra các tham số nên được chuyển vào
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53, trong trường hợp này chỉ
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55. MATLAB tính tổng của các phần tử trong
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55 và trả về kết quả đó.

Python sử dụng cú pháp riêng biệt để gọi các chức năng và trình tự lập chỉ mục. Trong Python, sử dụng dấu ngoặc tròn có nghĩa là phải thực thi chức năng và sử dụng dấu ngoặc vuông sẽ lập chỉ mục một chuỗi:

>>>

In [2]: import antigravity
6

Trong mã này, trước tiên bạn tạo một mảng bằng dấu ngoặc vuông ở phía bên phải của dấu bằng. Sau đó, bạn lấy giá trị của phần tử đầu tiên bằng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
52, sử dụng khung tròn làm toán tử lập chỉ mục. Trên dòng đầu vào thứ ba, bạn đang gọi
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 và sử dụng giá đỡ tròn để chỉ ra các tham số nên được chuyển vào
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53, trong trường hợp này chỉ
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55. MATLAB tính tổng của các phần tử trong
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55 và trả về kết quả đó.

Python sử dụng cú pháp riêng biệt để gọi các chức năng và trình tự lập chỉ mục. Trong Python, sử dụng dấu ngoặc tròn có nghĩa là phải thực thi chức năng và sử dụng dấu ngoặc vuông sẽ lập chỉ mục một chuỗi:

Trong mã này, bạn đang xác định danh sách Python trên dòng đầu vào 1. Danh sách Python có một số điểm khác biệt quan trọng từ các mảng trong MATLAB và các mảng từ gói Numpy. Bạn có thể đọc thêm về danh sách Python trong danh sách và bộ dữ liệu trong Python và bạn sẽ tìm hiểu thêm về các mảng numpy trong phần sau.

Trên dòng đầu vào 2, bạn đang hiển thị giá trị của phần tử đầu tiên của danh sách với thao tác lập chỉ mục bằng dấu ngoặc vuông. Trên dòng đầu vào 3, bạn đang gọi

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 bằng cách sử dụng dấu ngoặc tròn và chuyển trong danh sách được lưu trữ trong
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55. Điều này dẫn đến tổng của các yếu tố danh sách được hiển thị trên dòng cuối cùng. Lưu ý rằng Python sử dụng dấu ngoặc vuông để lập chỉ mục danh sách và dấu ngoặc tròn để gọi các chức năng.

Hãy thử sự khác biệt trong Matlab vs Python với ví dụ này:

>>>

In [2]: import antigravity
7

Trong mã này, bạn đang tạo một mảng có ba số,

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
60,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
61 và
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Sau đó, bạn đang hiển thị giá trị của phần tử cuối cùng với chỉ mục
In [2]: import antigravity
80, đó là
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62.

Trong Python, giá trị cuối cùng trong một chuỗi có thể được lấy bằng cách sử dụng chỉ mục

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
68:

>>>

In [2]: import antigravity
8

Trong mã này, bạn đang tạo một mảng có ba số,

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
60,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
61 và
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Sau đó, bạn đang hiển thị giá trị của phần tử cuối cùng với chỉ mục
In [2]: import antigravity
80, đó là
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62.

Trong Python, giá trị cuối cùng trong một chuỗi có thể được lấy bằng cách sử dụng chỉ mục

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
68:

>>>

In [2]: import antigravity
9

Trong mã này, bạn đang tạo một mảng có ba số,

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
60,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
61 và
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Sau đó, bạn đang hiển thị giá trị của phần tử cuối cùng với chỉ mục
In [2]: import antigravity
80, đó là
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62.

Trong Python, giá trị cuối cùng trong một chuỗi có thể được lấy bằng cách sử dụng chỉ mục
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
68:

Trong mã này, bạn đang xác định danh sách Python với ba phần tử trên dòng đầu vào 1. Trên dòng đầu vào 2, bạn đang hiển thị giá trị của phần tử cuối cùng của danh sách, có chỉ mục

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
68 và giá trị 30.binary operator that takes two numbers. Other binary operators include addition (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
81), subtraction (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
82), multiplication (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
83), and division (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
84), among others. The number on the left of the caret is the base and the number on the right is the exponent.

Trên thực tế, bằng cách sử dụng các số âm làm giá trị chỉ mục, bạn có thể làm việc theo cách của mình thông qua chuỗi:

Trong mã này, bạn đang truy xuất các yếu tố từ thứ hai đến cuối cùng và thứ ba từ danh sách, có các giá trị tương ứng là

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
61 và
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
60.

Số mũ được thực hiện với

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
79 trong Python

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
0

Trong MATLAB, khi bạn muốn nâng một số lên một nguồn điện, bạn sử dụng toán tử Caret (

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
80). Toán tử Caret là một toán tử nhị phân có hai số. Các toán tử nhị phân khác bao gồm bổ sung (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
81), phép trừ (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
82), nhân (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
83) và chia (
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
84), trong số những người khác. Số ở bên trái của chăm sóc là cơ sở và số bên phải là số mũ.

Hãy thử sự khác biệt của Matlab vs Python với ví dụ này:

Trong mã này, bạn đang tăng 10 lên sức mạnh của 2 bằng cách sử dụng CARET dẫn đến câu trả lời 100.

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
1

Trong Python, bạn sử dụng hai dấu sao (

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
79) khi bạn muốn nâng một số lên một nguồn điện:string array that contains one element. Notice that MATLAB implicitly creates a string array, even though you did not use the square brackets to indicate it is an array.

Trong mã này, bạn đang tăng 10 lên sức mạnh của 2 bằng cách sử dụng hai dấu sao dẫn đến câu trả lời 100. Lưu ý rằng không có ảnh hưởng của việc bao gồm các khoảng trống ở hai bên của dấu sao. Trong Python, phong cách điển hình là có khoảng trống ở cả hai bên của toán tử nhị phân.

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
2

Độ dài của một chuỗi được tìm thấy với

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
86 trong Python

Trong MATLAB, bạn có thể có được độ dài của một mảng với
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
87. Hàm này lấy một mảng làm đối số và trả lại kích thước của kích thước lớn nhất trong mảng. Bạn có thể thấy những điều cơ bản của chức năng này với ví dụ này:

Trong mã này, trên dòng đầu vào đầu tiên, bạn đang tìm thấy độ dài của một mảng có 3 phần tử. Đúng như dự đoán,

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
87 trả về câu trả lời 3. Trên dòng đầu vào thứ hai, bạn đang tìm độ dài của mảng chuỗi chứa một phần tử. Lưu ý rằng MATLAB ngầm tạo ra một mảng chuỗi, mặc dù bạn không sử dụng dấu ngoặc vuông để cho biết đó là một mảng.

Trong Python, bạn có thể có được độ dài của một chuỗi với

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
86:

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
3

Trong mã này, trên dòng đầu vào 1, bạn đang tìm thấy độ dài của một danh sách với 3 yếu tố. Đúng như dự đoán,

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
86 trả về chiều dài 3. Trên dòng đầu vào 2, bạn đang tìm độ dài của một chuỗi làm đầu vào. Trong Python, các chuỗi là các chuỗi và
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
86 đếm số lượng ký tự trong chuỗi. Trong trường hợp này,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
92 có 8 ký tự.

Đầu ra bảng điều khiển được hiển thị với

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 trong Python

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
4

Trong MATLAB, bạn có thể sử dụng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
01,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
95 và
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
96 để in giá trị của các biến và đầu ra khác vào bảng điều khiển. Trong Python,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 phục vụ một chức năng tương tự như
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
01. Không giống như
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
01,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 có thể gửi đầu ra của nó đến một tệp tương tự như
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
95.

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
5

Trong mã này, bạn đã thêm đối số từ khóa

In [2]: import antigravity
80 vào
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00, đặt nó để in dấu chấm phẩy sau giá trị cuối cùng. Điều này được hiển thị trong đầu ra trên dòng bên dưới đầu vào.

Giống như

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
01 từ MATLAB,
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 không thể trực tiếp kiểm soát định dạng đầu ra của các biến và dựa vào bạn để thực hiện định dạng. Nếu bạn muốn kiểm soát nhiều hơn đối với định dạng của đầu ra, bạn nên sử dụng F-Strings hoặc
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
20. Trong các chuỗi này, bạn có thể sử dụng mã kiểu định dạng rất giống nhau như
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
95 trong MATLAB để định dạng số:

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
6

Trong mã này, dòng đầu vào 7 bao gồm một chuỗi F, được biểu thị bởi

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
22 để bắt đầu chuỗi. Điều này có nghĩa là Python sẽ thay thế giá trị của bất kỳ biến nào mà nó gặp phải giữa
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
23 hoặc niềng răng xoăn, trong chuỗi. Bạn có thể thấy rằng trong đầu ra, Python đã thay thế
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
24 bằng số điểm nổi với 8 cột trong đầu ra và 3 chữ số chính xác.

Dòng đầu vào 9 cho thấy một tính năng mới trong Python 3.8. Nếu một tên biến ngay lập tức được theo sau bởi một dấu hiệu tương đương bên trong niềng răng xoăn, tên của biến và giá trị sẽ được in tự động.

Bạn có thể đi sâu vào Python từ

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 bằng cách kiểm tra hướng dẫn cuối cùng về bản in Python.

Bạn có thể sẽ thấy những điều này, nhưng bạn có thể học chúng khi bạn cần

Trong phần này, bạn sẽ tìm thấy các ví dụ về mã mà bạn có thể sẽ thấy trong tự nhiên, nhưng bạn có thể đợi một chút để hiểu chúng nếu bạn muốn. Những ví dụ này sử dụng một số tính năng trung gian trong Python nhưng vẫn nằm trong cốt lõi của cách thức hoạt động của Python. Giống như trong phần cuối cùng, bạn sẽ thấy sự so sánh của sự khác biệt về cú pháp Matlab vs Python.

Định nghĩa chức năng bắt đầu với các giá trị
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
26 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
27 trong Python

Trong MATLAB, bạn có thể xác định một hàm bằng cách đặt từ khóa

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
28 khi bắt đầu một dòng. Tiếp theo là tên của bất kỳ biến đầu ra nào, một dấu bằng (
In [2]: import antigravity
48), sau đó tên của hàm và bất kỳ đối số đầu vào nào trong ngoặc đơn. Trong hàm, bạn phải gán cho bất kỳ biến nào bạn đã chỉ định trong dòng định nghĩa là đầu ra. Một chức năng MATLAB ví dụ đơn giản được hiển thị bên dưới:

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
7

Trong mã này, bạn thấy định nghĩa

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
28 trên dòng 1. Chỉ có một biến đầu ra, được gọi là
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
31, cho chức năng này. Tên của hàm là
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
32 và nó có hai đối số, sẽ được gán tên
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34 trong cơ thể chức năng. Dòng 2 là việc thực hiện chức năng. Giá trị của
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
31 được đặt bằng tổng của
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34. Dòng cuối cùng của hàm là từ khóa
In [2]: import antigravity
80 cho biết trình thông dịch MATLAB định nghĩa của hàm đã kết thúc.

Để sử dụng chức năng này trong MATLAB, bạn nên lưu nó trong một tệp có tên

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
39, khớp tên của hàm. Ngoài ra, nó có thể được đặt trong tệp với các lệnh khác với điều kiện định nghĩa hàm là điều cuối cùng trong tệp và tệp không được đặt tên là
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
39. Sau đó, bạn có thể chạy chức năng bằng cách nhập mã sau vào bảng điều khiển MATLAB:

>>>

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
8

Trong mã này, bạn đã xác định hai biến được gọi là

In [2]: import antigravity
36 và
In [2]: import antigravity
37 lần lượt giữ các giá trị 20 và 10. Sau đó, bạn đã tạo một biến thứ ba có tên
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
43 lưu trữ đầu ra từ
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
44. Kiểm tra biến Explorer biến và bạn sẽ thấy rằng
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
43 có giá trị 30, như mong đợi. Lưu ý rằng tên
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
43 không phải là cùng tên với biến đầu ra được sử dụng trong định nghĩa hàm, đó là
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
31.

MATLAB không yêu cầu một hàm để cung cấp giá trị đầu ra. Trong trường hợp này, bạn sẽ xóa biến đầu ra và dấu bằng từ định nghĩa hàm. Sửa đổi tệp

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
39 của bạn để mã trông như thế này:

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
9

Thay đổi duy nhất trong mã này từ mã trước đó là bạn đã xóa

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
49 khỏi dòng 1, các dòng khác hoàn toàn giống nhau. Bây giờ nếu bạn cố gắng gán kết quả gọi chức năng này cho một biến, MATLAB sẽ tạo ra lỗi trong bảng điều khiển:

>>>

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
0

Trong mã này, bạn đã xác định hai biến tương tự

In [2]: import antigravity
36 và
In [2]: import antigravity
37 như trước đây và được gọi là
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
44 theo cách tương tự như trước đây. Tuy nhiên, vì
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
44 không còn chỉ định biến đầu ra, MATLAB tạo ra một thông báo lỗi rằng có quá nhiều đối số đầu ra. Nhấp vào từ
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
32 sẽ mở định nghĩa về hàm để bạn chỉnh sửa hoặc xem mã nguồn để khắc phục sự cố.

Trong Python, từ khóa

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
26 bắt đầu định nghĩa hàm. Từ khóa
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
26 phải được theo sau bởi tên của hàm và bất kỳ đối số nào cho hàm bên trong ngoặc đơn, tương tự như MATLAB. Dòng với
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
26 phải được kết thúc bằng một đại tràng (
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
58).

Bắt đầu trên dòng tiếp theo, mã nên được thực thi như một phần của hàm phải được thụt vào một cấp. Trong Python, định nghĩa hàm kết thúc khi một dòng mã bắt đầu ở cùng mức thụt với từ khóa

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
26 trên dòng đầu tiên.

Nếu chức năng của bạn trả về một số đầu ra trở lại người gọi, Python không yêu cầu bạn chỉ định tên cho một biến đầu ra. Thay vào đó, bạn sử dụng câu lệnh

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
27 để gửi giá trị đầu ra từ hàm.

Một chức năng tương đương trong Python với ví dụ

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
44 đầu tiên của bạn với một biến đầu ra được hiển thị bên dưới:

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
1

Trong mã này, bạn thấy từ khóa

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
26 theo sau là tên hàm và hai đối số
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34 trên dòng 1. Trên dòng 2, bạn có thể thấy việc tạo một biến mới
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
31 để lưu trữ tổng của
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
3 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
3 3 Giá trị của
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
31 được trả về điểm mà hàm này được gọi. Lưu ý rằng các dòng 2 và 3 được thụt vào bởi 4 khoảng trống vì chúng tạo nên phần thân của chức năng.

Biến lưu trữ tổng của

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34 có thể có bất kỳ tên nào, nó không phải được gọi là
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
31. Trên thực tế, bạn không cần phải tạo ra một biến ở đó. Bạn có thể đơn giản hóa định nghĩa chức năng trước đây của mình bằng cách loại bỏ
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
31 và chỉ cần trả về giá trị của
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
73:

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
2

Dòng 1 Trong mã này giống như trước đây, bạn chỉ thay đổi dòng 2 và dòng đã xóa 3. Dòng 2 hiện tính giá trị của

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
73 và trả lại giá trị đó trở lại người gọi của hàm. Dòng 2 được thụt vào bởi 4 không gian vì nó tạo nên phần thân của chức năng.

Để sử dụng chức năng này trong Python, bạn không cần lưu nó trong một tệp có tên đặc biệt. Bạn có thể đặt định nghĩa hàm trong bất kỳ tệp Python nào, tại bất kỳ điểm nào trong tệp. Không có hạn chế rằng định nghĩa hàm phải là cuối cùng. Trên thực tế, bạn thậm chí có thể xác định các chức năng ngay từ bảng điều khiển, điều không thể có trong MATLAB.

Mở Spyder và trong loại ngăn điều khiển:

>>>

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
3

Trên dòng mã này, bạn đang tạo định nghĩa chức năng. Trong bảng điều khiển Spyder/ipython, một khi bạn bắt đầu định nghĩa hàm và nhấn enter, việc bắt đầu dòng sẽ trở thành ba chấm và con trỏ được tự động thụt vào. Bây giờ bạn có thể nhập phần còn lại của định nghĩa hàm. Bạn phải nhấn Enter hai lần để hoàn thành định nghĩa:Enter, the start of the line becomes three dots and the cursor is automatically indented. Now you can type the remainder of the function definition. You’ll have to press Enter twice to complete the definition:

>>>

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
4

Trên dòng mã này, bạn đang tạo định nghĩa chức năng. Trong bảng điều khiển Spyder/ipython, một khi bạn bắt đầu định nghĩa hàm và nhấn enter, việc bắt đầu dòng sẽ trở thành ba chấm và con trỏ được tự động thụt vào. Bây giờ bạn có thể nhập phần còn lại của định nghĩa hàm. Bạn phải nhấn Enter hai lần để hoàn thành định nghĩa:continuation lines that apply to the function definition.

Trong mã này, bạn có định nghĩa về hàm trên dòng đầu tiên và phần thân của hàm trên dòng thứ hai. Bảng điều khiển tự động thêm

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
75 khi bắt đầu các dòng để cho biết đây là những dòng tiếp tục áp dụng cho định nghĩa hàm.

>>>

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
5

Trên dòng mã này, bạn đang tạo định nghĩa chức năng. Trong bảng điều khiển Spyder/ipython, một khi bạn bắt đầu định nghĩa hàm và nhấn enter, việc bắt đầu dòng sẽ trở thành ba chấm và con trỏ được tự động thụt vào. Bây giờ bạn có thể nhập phần còn lại của định nghĩa hàm. Bạn phải nhấn Enter hai lần để hoàn thành định nghĩa:

Trong mã này, bạn có định nghĩa về hàm trên dòng đầu tiên và phần thân của hàm trên dòng thứ hai. Bảng điều khiển tự động thêm

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
75 khi bắt đầu các dòng để cho biết đây là những dòng tiếp tục áp dụng cho định nghĩa hàm.

>>>

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
6

Trên dòng mã này, bạn đang tạo định nghĩa chức năng. Trong bảng điều khiển Spyder/ipython, một khi bạn bắt đầu định nghĩa hàm và nhấn enter, việc bắt đầu dòng sẽ trở thành ba chấm và con trỏ được tự động thụt vào. Bây giờ bạn có thể nhập phần còn lại của định nghĩa hàm. Bạn phải nhấn Enter hai lần để hoàn thành định nghĩa:

>>>

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
7

Trên dòng mã này, bạn đang tạo định nghĩa chức năng. Trong bảng điều khiển Spyder/ipython, một khi bạn bắt đầu định nghĩa hàm và nhấn enter, việc bắt đầu dòng sẽ trở thành ba chấm và con trỏ được tự động thụt vào. Bây giờ bạn có thể nhập phần còn lại của định nghĩa hàm. Bạn phải nhấn Enter hai lần để hoàn thành định nghĩa:

Trong mã này, bạn có định nghĩa về hàm trên dòng đầu tiên và phần thân của hàm trên dòng thứ hai. Bảng điều khiển tự động thêm
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
75 khi bắt đầu các dòng để cho biết đây là những dòng tiếp tục áp dụng cho định nghĩa hàm.

Khi bạn đã hoàn thành định nghĩa, bạn cũng có thể thực hiện chức năng từ bảng điều khiển. Bạn nên nhập mã này:

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
8

Trong mã này, bạn đang xác định một chức năng với ba đối số đầu vào có thể. Trên dòng 7, bạn đang bắt đầu một khối ________ 395/________ 396 để xác định số lượng đối số đầu vào đã được chuyển đến hàm bằng cách sử dụng biến đặc biệt

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
97. Biến này lưu trữ số lượng đối số thực tế mà người gọi được chuyển vào hàm.

Trong mã của bạn ở trên, bạn đang xác định ba trường hợp:

  1. Nếu số lượng đối số đầu vào là 2, bạn sẽ thêm
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    33 và
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    34 cùng nhau.
  2. Nếu số lượng đối số đầu vào là 3, bạn đang trừ
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    34 từ
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    33.
  3. Nếu ít hơn 2 đối số được thông qua, đầu ra sẽ là
     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    02.

Nếu hơn 3 đối số được thông qua, MATLAB sẽ gây ra lỗi.

Bây giờ bạn nên thử nghiệm chức năng này. Lưu mã ở trên vào một tệp có tên

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
03 và sau đó trên bảng điều khiển MATLAB, hãy thử phiên bản với hai đối số đầu vào:

>>>

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
9

Trong mã này, bạn đang gọi

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với hai đối số, vì vậy các đối số được thêm vào với nhau, dẫn đến câu trả lời của
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Tiếp theo, hãy thử gọi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với ba đối số:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
0

Trong mã này, bạn đang gọi

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với hai đối số, vì vậy các đối số được thêm vào với nhau, dẫn đến câu trả lời của
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Tiếp theo, hãy thử gọi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với ba đối số:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
1

Trong mã này, bạn đang gọi

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với hai đối số, vì vậy các đối số được thêm vào với nhau, dẫn đến câu trả lời của
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Tiếp theo, hãy thử gọi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với ba đối số:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
2

Trong mã này, bạn đang gọi

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với hai đối số, vì vậy các đối số được thêm vào với nhau, dẫn đến câu trả lời của
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Tiếp theo, hãy thử gọi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với ba đối số:

Trong mã này, bạn đã sử dụng ba đối số đầu vào và thấy rằng đối số thứ hai đã bị trừ đi từ đầu tiên, dẫn đến câu trả lời của

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
07. Thứ ba, hãy thử gọi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với một đối số:

  1. Trong mã này, bạn đã sử dụng một đối số đầu vào và tìm thấy câu trả lời là 0, vì MATLAB chỉ tìm thấy một đối số cho hàm và sử dụng trường hợp
     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    09. Cuối cùng, hãy thử gọi
     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    04 với bốn đối số:
  2. Trong mã này, bạn thấy rằng MATLAB gây ra lỗi vì có nhiều đối số đầu vào được truyền hơn so với được xác định trong dòng
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    28.
  3. Có bốn điểm chính từ ví dụ này với MATLAB:
  4. Chỉ có một loại đối số trong một định nghĩa chức năng.

Ý nghĩa của một đối số trong mã được xác định bởi vị trí của nó trong định nghĩa hàm.required and optional arguments. The key difference between these is that required arguments must be passed when a function is called, while optional are given a default value in the function definition.

Số lượng đối số tối đa có thể được truyền đến một hàm được xác định bởi số lượng đối số được chỉ định trong định nghĩa hàm.

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
3

Bất kỳ số lượng đối số nào lên đến mức tối đa có thể được truyền bởi người gọi.

Trong Python, có hai loại đối số bạn có thể chỉ định khi xác định hàm. Đây là những đối số yêu cầu và tùy chọn. Sự khác biệt chính giữa các đối số yêu cầu này phải được truyền khi một hàm được gọi, trong khi tùy chọn được đưa ra một giá trị mặc định trong định nghĩa hàm.

Bạn có thể thấy sự khác biệt giữa hai kiểu này trong ví dụ tiếp theo:

Trong mã này, bạn đang xác định một hàm gọi là

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12 có ba đối số:
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33,
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34 và
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15. Trong định nghĩa chức năng, bạn có thể thấy hai loại đối số. Hai đối số đầu tiên,
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34, là đối số được yêu cầu.defining a function, there are two kinds of arguments you can specify when calling a function. These are called positional and keyword arguments. You can see the difference between these in the following example. First, try passing only two arguments to the function:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
4

Trong mã này, bạn đang gọi

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với hai đối số, vì vậy các đối số được thêm vào với nhau, dẫn đến câu trả lời của
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Tiếp theo, hãy thử gọi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với ba đối số:

Trong mã này, bạn đã sử dụng ba đối số đầu vào và thấy rằng đối số thứ hai đã bị trừ đi từ đầu tiên, dẫn đến câu trả lời của

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
07. Thứ ba, hãy thử gọi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với một đối số:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
5

Trong mã này, bạn đang gọi

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với hai đối số, vì vậy các đối số được thêm vào với nhau, dẫn đến câu trả lời của
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
62. Tiếp theo, hãy thử gọi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
04 với ba đối số:

Trong các ví dụ này, bạn đã thấy rằng có thể trong Python để xác định các giá trị mặc định cho các đối số cho một hàm. Điều này có nghĩa là khi bạn gọi hàm, bất kỳ đối số nào có giá trị mặc định là tùy chọn và không phải được thông qua. Nếu không có giá trị nào được truyền cho bất kỳ đối số mặc định nào, giá trị mặc định sẽ được sử dụng. Tuy nhiên, bạn phải chuyển một giá trị cho mỗi đối số mà không có giá trị mặc định. Nếu không, Python sẽ gây ra lỗi:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
6

Trong mã này, bạn chỉ chuyển một trong hai đối số bắt buộc cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12, do đó, Python tăng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42. Thông báo lỗi cho bạn biết rằng bạn đã không vượt qua giá trị cho
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34, vì nó không có giá trị mặc định.

Trong ba ví dụ cuối cùng này, bạn đã sử dụng các đối số vị trí, do đó tham số nào được gán cho các biến trong hàm phụ thuộc vào thứ tự chúng được truyền. Có một phương pháp khác để chuyển các đối số cho các chức năng trong Python, được gọi là đối số từ khóa. Để sử dụng các đối số từ khóa, bạn chỉ định tên của đối số trong cuộc gọi chức năng:positional arguments, so which parameter is assigned to the variables in the function depends on the order they are passed. There is another method to pass arguments to functions in Python, called keyword arguments. To use keyword arguments, you specify the name of the argument in the function call:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
7

Trong mã này, bạn chỉ chuyển một trong hai đối số bắt buộc cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12, do đó, Python tăng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42. Thông báo lỗi cho bạn biết rằng bạn đã không vượt qua giá trị cho
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34, vì nó không có giá trị mặc định.

Trong ba ví dụ cuối cùng này, bạn đã sử dụng các đối số vị trí, do đó tham số nào được gán cho các biến trong hàm phụ thuộc vào thứ tự chúng được truyền. Có một phương pháp khác để chuyển các đối số cho các chức năng trong Python, được gọi là đối số từ khóa. Để sử dụng các đối số từ khóa, bạn chỉ định tên của đối số trong cuộc gọi chức năng:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
8

Trong mã này, bạn chỉ chuyển một trong hai đối số bắt buộc cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12, do đó, Python tăng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42. Thông báo lỗi cho bạn biết rằng bạn đã không vượt qua giá trị cho
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34, vì nó không có giá trị mặc định.

Trong ba ví dụ cuối cùng này, bạn đã sử dụng các đối số vị trí, do đó tham số nào được gán cho các biến trong hàm phụ thuộc vào thứ tự chúng được truyền. Có một phương pháp khác để chuyển các đối số cho các chức năng trong Python, được gọi là đối số từ khóa. Để sử dụng các đối số từ khóa, bạn chỉ định tên của đối số trong cuộc gọi chức năng:

>>>

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
9

Trong mã này, bạn chỉ chuyển một trong hai đối số bắt buộc cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12, do đó, Python tăng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42. Thông báo lỗi cho bạn biết rằng bạn đã không vượt qua giá trị cho
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34, vì nó không có giá trị mặc định.

Trong ba ví dụ cuối cùng này, bạn đã sử dụng các đối số vị trí, do đó tham số nào được gán cho các biến trong hàm phụ thuộc vào thứ tự chúng được truyền. Có một phương pháp khác để chuyển các đối số cho các chức năng trong Python, được gọi là đối số từ khóa. Để sử dụng các đối số từ khóa, bạn chỉ định tên của đối số trong cuộc gọi chức năng:

Trong mã này, bạn đã sử dụng các đối số từ khóa cho cả ba đối số để
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12. Đối số từ khóa được chỉ định bằng cách nêu tên đối số, sau đó một dấu bằng, sau đó giá trị mà đối số nên có. Một trong những lợi thế lớn của các đối số từ khóa là chúng làm cho mã của bạn rõ ràng hơn. .

Một lợi ích khác của các đối số từ khóa là chúng có thể được chỉ định theo bất kỳ thứ tự nào:

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
0

Trong mã này, bạn đã chỉ định ba đối số cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12 là đối số từ khóa, nhưng thứ tự khác với định nghĩa hàm. Tuy nhiên, Python kết nối các biến đúng với nhau vì chúng được chỉ định là từ khóa thay vì các đối số vị trí.

Bạn cũng có thể kết hợp các đối số từ khóa và từ khóa với nhau trong cùng một cuộc gọi chức năng. Nếu các đối số từ khóa và vị trí được trộn lẫn với nhau, các đối số vị trí phải được chỉ định trước, trước bất kỳ đối số từ khóa nào:

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
1

Trong mã này, bạn đã chỉ định các giá trị cho

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34 bằng cách sử dụng các đối số vị trí và giá trị cho
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 bằng cách sử dụng đối số từ khóa. Đây có lẽ là trường hợp phổ biến nhất của việc sử dụng các đối số từ khóa, bởi vì nó cung cấp một sự cân bằng tốt giữa việc rõ ràng và ngắn gọn.

Cuối cùng, có một lợi ích cuối cùng của việc sử dụng các đối số từ khóa và giá trị mặc định. Spyder và các IDE khác, cung cấp nội tâm của các định nghĩa chức năng. Điều này sẽ cho bạn biết tên của tất cả các đối số chức năng được xác định, các đối số có đối số mặc định và giá trị của các đối số mặc định. Điều này có thể giúp bạn tiết kiệm thời gian và làm cho mã của bạn dễ dàng và nhanh hơn để đọc.

Không có ________ 395/________ 396 khối trong Python

Trong MATLAB, bạn có thể sử dụng các khối ____ 395/________ 396 để thực thi mã bằng cách kiểm tra giá trị của một biến cho sự bình đẳng với một số hằng số. Loại cú pháp này khá hữu ích khi bạn biết bạn muốn xử lý một vài trường hợp riêng biệt. Hãy thử khối ________ 395/________ 396 với ví dụ này:Namespaces are a way to provide different scopes for names of functions, classes, and variables. This means you have to tell Python which library has the function you want to use. This is a good thing, especially in cases where multiple libraries provide the same function.

Trong mã này, bạn bắt đầu bằng cách xác định

In [2]: import antigravity
81 và đặt nó bằng 10 và trên các dòng sau, bạn kiểm tra giá trị của
In [2]: import antigravity
81. Mã này sẽ dẫn đến đầu ra
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
57 được hiển thị trên bảng điều khiển, vì
In [2]: import antigravity
81 bằng 10.

Để nói với Python nơi có chức năng, trước tiên bạn phải

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
68 thư viện, tạo ra không gian tên cho mã thư viện đó. Sau đó, khi bạn muốn sử dụng một chức năng từ thư viện, bạn sẽ nói với Python nào không gian tên để xem:

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
2

Trong mã này, trên dòng đầu vào 1, bạn đã nhập thư viện

In [2]: import antigravity
73 được tích hợp vào Python. Sau đó, dòng đầu vào 2 tính toán căn bậc hai của 4 bằng hàm gốc từ bên trong thư viện
In [2]: import antigravity
73. Dòng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 nên được đọc dưới dạng từ trong vòng
In [2]: import antigravity
73, tìm
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
73.

Từ khóa

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
68 tìm kiếm thư viện được đặt tên và liên kết không gian tên với cùng tên với thư viện theo mặc định. Bạn có thể đọc thêm về cách Python tìm kiếm các thư viện trong các mô -đun và gói Python - Giới thiệu.

Bạn cũng có thể cho Python biết tên nên sử dụng cho thư viện. Chẳng hạn, rất phổ biến để xem

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
75 được rút ngắn thành
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
76 với mã sau:

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
3

Trong mã này, trên dòng đầu vào 1, bạn đã nhập thư viện

In [2]: import antigravity
73 được tích hợp vào Python. Sau đó, dòng đầu vào 2 tính toán căn bậc hai của 4 bằng hàm gốc từ bên trong thư viện
In [2]: import antigravity
73. Dòng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 nên được đọc dưới dạng từ trong vòng
In [2]: import antigravity
73, tìm
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
73.

Từ khóa

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
68 tìm kiếm thư viện được đặt tên và liên kết không gian tên với cùng tên với thư viện theo mặc định. Bạn có thể đọc thêm về cách Python tìm kiếm các thư viện trong các mô -đun và gói Python - Giới thiệu.

  1. Bạn cũng có thể cho Python biết tên nên sử dụng cho thư viện. Chẳng hạn, rất phổ biến để xem

     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    75 được rút ngắn thành
     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    76 với mã sau:

  2. Trong mã này, dòng đầu vào 3 nhập khẩu Numpy và bảo Python đưa thư viện vào không gian tên

     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    76. Sau đó, bất cứ khi nào bạn muốn sử dụng một chức năng từ Numpy, bạn sử dụng chữ viết tắt
     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    76 để tìm chức năng đó. Trên dòng đầu vào 4, bạn đang tính toán căn bậc hai của 4 lần nữa, nhưng lần này, sử dụng
     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    79.
     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    79 nên được đọc dưới dạng từ bên trong Numpy, tìm
     8var_4 = 10
     9var_5 = 20
    10var_6 = var_4 + var_5
    
    73.

Có hai cảnh báo chính để sử dụng các không gian tên nơi bạn nên cẩn thận:

Bạn không nên đặt tên cho một biến có cùng tên với một trong các chức năng được tích hợp vào Python. Bạn có thể tìm thấy một danh sách đầy đủ các chức năng này trong tài liệu Python. Các tên biến phổ biến nhất cũng là các hàm tích hợp và không nên được sử dụng là

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
82,
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
83,
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
84,
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
85,
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
86,
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
87,
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
88,
In [2]: import antigravity
76,
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
90.

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
4

Bạn không nên đặt tên cho một tệp Python (một có phần mở rộng

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
92) với cùng tên với thư viện mà bạn đã cài đặt. Nói cách khác, bạn không nên tạo một tệp Python có tên là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
93. Điều này là do Python tìm kiếm thư mục làm việc hiện tại trước tiên khi nó cố gắng nhập thư viện. Nếu bạn có một tệp có tên là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
93, tệp đó sẽ được tìm thấy trước thư viện
In [2]: import antigravity
73 tích hợp và bạn có thể sẽ thấy
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
96.

Kết quả không được chỉ định gần đây nhất có sẵn là

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
97 trong Python

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
5

Bảng điều khiển MATLAB sử dụng

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
98 để lưu trữ kết quả của phép tính gần đây nhất nếu kết quả đó không được gán cho một biến. Điều này thực sự hữu ích khi bạn quên gán kết quả tính toán cho một biến hoặc khi bạn chỉ muốn chuỗi một vài tính toán đơn giản lại với nhau. Để xem sự khác biệt giữa Matlab vs Python, hãy thử ví dụ này:

Trong mã này, bạn sử dụng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 để tính tổng của mảng. Vì không có dấu hiệu bằng nhau với một tên biến ở bên trái, MATLAB chỉ định đầu ra từ
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 đến
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
98. Sau đó, bạn có thể sử dụng biến đó trong các tính toán tiếp theo, như bạn làm ở đây bằng cách thêm 10 vào kết quả cuối cùng. Lưu ý rằng điều này sẽ chỉ hoạt động trong bảng điều khiển MATLAB, không phải trong tệp tập lệnh.

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
6

Trong bảng điều khiển Python (bao gồm bảng điều khiển IPYTHON/Spyder), đầu ra từ tính toán gần đây nhất được lưu trữ trong

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
97 (ký tự dấu gạch dưới). Hãy thử mã sau:

Trong mã này, bạn sử dụng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 để tính tổng của danh sách. Vì không có dấu hiệu bằng nhau với một tên biến ở bên trái, Python chỉ định đầu ra từ
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53 cho dấu gạch dưới (
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
97), ngoài việc in nó trên dòng đầu ra. Sau đó, bạn có thể sử dụng biến đó trong các tính toán tiếp theo, như bạn làm ở đây bằng cách thêm 10 vào kết quả cuối cùng. Lưu ý rằng điều này sẽ chỉ hoạt động trong bảng điều khiển Python, không phải trong tệp tập lệnh.

Trong bảng điều khiển Ipython, có một tính năng bổ sung được bật. Bạn có thể nối một số sau khi gạch dưới để lấy kết quả của bất kỳ dòng nào trước đó. Hãy thử mã sau:

Trong mã này trên dòng đầu vào 3, bạn đang sử dụng

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
06 có nghĩa là giá trị của dòng đầu ra 1, dòng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
53. Theo kết quả đó (60) bạn đang thêm 20, tạo ra kết quả là 80. Trên dòng đầu vào 4, bạn đang thêm 20 vào giá trị của dòng đầu ra 2, được truy cập bằng
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
08, do đó kết quả là 90.

Bạn có thể thử sự khác biệt của các chức năng ẩn danh trong MATLAB vs Python với ví dụ này:

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
7

Trong mã này, dòng đầu vào đầu tiên xác định hàm ẩn danh với một tham số đầu vào,

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
14. Phần thân của hàm theo sau, sử dụng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
95 để định dạng đầu vào thành một chuỗi. Hàm này được gán cho
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
16. Trên dòng đầu vào thứ hai,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
17 được thực thi và thông qua
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
18 dưới dạng giá trị. Kết quả chuỗi
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
19 được in trên bảng điều khiển.

Các hàm ẩn danh thường được sử dụng nhất khi bạn cần truyền một hàm vào một hàm khác. Trong các trường hợp, thường không cần thiết phải gán định nghĩa hàm cho một biến:

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
8

Trong mã này, dòng đầu vào đầu tiên xác định hàm ẩn danh với một tham số đầu vào,

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
14. Phần thân của hàm theo sau, sử dụng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
95 để định dạng đầu vào thành một chuỗi. Hàm này được gán cho
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
16. Trên dòng đầu vào thứ hai,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
17 được thực thi và thông qua
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
18 dưới dạng giá trị. Kết quả chuỗi
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
19 được in trên bảng điều khiển.

Các hàm ẩn danh thường được sử dụng nhất khi bạn cần truyền một hàm vào một hàm khác. Trong các trường hợp, thường không cần thiết phải gán định nghĩa hàm cho một biến:

>>>

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
9

Trong mã này, dòng đầu vào đầu tiên xác định hàm ẩn danh với một tham số đầu vào,

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
14. Phần thân của hàm theo sau, sử dụng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
95 để định dạng đầu vào thành một chuỗi. Hàm này được gán cho
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
16. Trên dòng đầu vào thứ hai,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
17 được thực thi và thông qua
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
18 dưới dạng giá trị. Kết quả chuỗi
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
19 được in trên bảng điều khiển.

Các hàm ẩn danh thường được sử dụng nhất khi bạn cần truyền một hàm vào một hàm khác. Trong các trường hợp, thường không cần thiết phải gán định nghĩa hàm cho một biến:

Trong mã này, dòng đầu vào đầu tiên thực thi

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
20, một hàm tính toán tích phân xác định của một hàm đã cho. Đối số đầu tiên cho
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
20 phải là một hàm, vì vậy đây là một nơi hoàn hảo để sử dụng hàm ẩn danh. Ở đây, hàm ẩn danh của bạn bình phương bất kể giá trị đầu vào là gì. Hai đối số khác cho
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
20 là giới hạn của tích hợp, do đó kết quả của việc tích hợp
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
23 từ 0 đến 9 là 243.

>>>

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
0

Trong mã này, dòng đầu vào đầu tiên xác định hàm ẩn danh với một tham số đầu vào,

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
14. Phần thân của hàm theo sau, sử dụng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
95 để định dạng đầu vào thành một chuỗi. Hàm này được gán cho
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
16. Trên dòng đầu vào thứ hai,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
17 được thực thi và thông qua
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
18 dưới dạng giá trị. Kết quả chuỗi
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
19 được in trên bảng điều khiển.

Các hàm ẩn danh thường được sử dụng nhất khi bạn cần truyền một hàm vào một hàm khác. Trong các trường hợp, thường không cần thiết phải gán định nghĩa hàm cho một biến:

Trong mã này, dòng đầu vào đầu tiên thực thi

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
20, một hàm tính toán tích phân xác định của một hàm đã cho. Đối số đầu tiên cho
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
20 phải là một hàm, vì vậy đây là một nơi hoàn hảo để sử dụng hàm ẩn danh. Ở đây, hàm ẩn danh của bạn bình phương bất kể giá trị đầu vào là gì. Hai đối số khác cho
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
20 là giới hạn của tích hợp, do đó kết quả của việc tích hợp
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
23 từ 0 đến 9 là 243.

Python sử dụng từ khóa In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py', ...: wdir='C:/Users/Eleanor/.spyder-py3') 10 để xác định các hàm ẩn danh. Khác với sự khác biệt về cú pháp này, các chức năng ẩn danh hoạt động giống nhau trong Python như trong Matlab:

Trong mã này, dòng đầu vào 1 xác định hàm

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
10 với một tham số,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
14. Bạn sử dụng
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
00 trong định nghĩa hàm để hiển thị chuỗi F với giá trị của tham số đầu vào. Hàm sau đó được lưu trữ trong
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
28. Dòng đầu vào 2 đánh giá
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
28 với chuỗi đầu vào
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
18 và tạo ra đầu ra
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
19.

Trong Python, hướng dẫn phong cách chính thức có tên PEP 8 đặc biệt là sự phân chia gán các biểu thức
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
10 cho các tên biến, như bạn đã thấy trong ví dụ cuối cùng. Nếu bạn muốn đặt một hàm một tên để tham khảo nó nhiều lần, ưu tiên là sử dụng cú pháp
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
26 và xác định chức năng đầy đủ, ngay cả đối với các chức năng một dòng.

Tuy nhiên, các chức năng

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
10 vẫn hữu ích khi chúng được truyền dưới dạng đối số vào một chức năng khác:

Trong mã này, dòng đầu vào 3 nhập thư viện

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
35 và lưu trữ nó trong không gian tên
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
36. Trên dòng đầu vào 4, bạn đang sử dụng
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
37 từ
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
35 để tính toán tích phân bằng cách sử dụng bậc hai, rất giống với
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
20 trong MATLAB. Đối số đầu tiên của
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
37 là hàm được tích hợp và bạn sử dụng hàm
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
10 để chỉ định rằng
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
42 nên được tích hợp. Các đối số thứ hai và thứ ba đối với
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
37 chỉ định rằng tích phân nên được tiến hành từ 0 đến 9.

Bạn có thể thấy rằng kết quả trên dòng đầu ra 4 có hai giá trị,

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
44 và
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
45. Giá trị đầu tiên là kết quả của việc tích hợp và bằng kết quả từ MATLAB. Giá trị thứ hai là ước tính của lỗi tuyệt đối trong kết quả. Một lỗi nhỏ này xấp xỉ độ chính xác của các số được sử dụng để lưu trữ kết quả, vì vậy câu trả lời là chính xác như nó có thể.

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
1

Trong mã này, dòng đầu tiên xác định tên của lớp. Nó bắt đầu với từ khóa

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
47, theo sau là tên của lớp và một dấu hai chấm. Bên dưới dòng này, tất cả các mã là một phần của định nghĩa lớp (phương thức và thuộc tính) phải được thụt vào. Khi một dòng mã bắt đầu trong cùng một cột với
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
53 trong
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
47, định nghĩa lớp sẽ kết thúc.

Dòng thứ hai trong mã này là một nhận xét cần lưu ý rằng phần còn lại của định nghĩa lớp sẽ tuân theo dòng

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
47.

Như trong tất cả các mã hướng đối tượng, các lớp Python có thể kế thừa từ các siêu lớp. Siêu lớp của một lớp đã cho có thể được đưa ra dưới dạng tham số trong định nghĩa lớp, như được hiển thị bên dưới:

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
2

Trong mã này, thay đổi duy nhất là tên của siêu lớp được liệt kê bên trong khung tròn trước Đại tá.

Không có tài sản hoặc phương thức riêng trong Python

MATLAB cho phép các thuộc tính và phương thức lớp được đặt thành một trong bốn tùy chọn

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
56:

  • In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
       ...:         wdir='C:/Users/Eleanor/.spyder-py3')
    
    57: Truy cập vào thuộc tính hoặc phương thức không bị hạn chế.
    : Access to the property or method is unrestricted.
  • In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
       ...:         wdir='C:/Users/Eleanor/.spyder-py3')
    
    58: Truy cập vào thuộc tính hoặc phương thức chỉ được phép trong lớp hoặc các lớp con này.
    : Access to the property or method is only allowed in this class or subclasses.
  • In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
       ...:         wdir='C:/Users/Eleanor/.spyder-py3')
    
    59: Truy cập vào thuộc tính hoặc phương thức chỉ được phép trong lớp này.
    : Access to the property or method is only allowed in this class.
  • In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
       ...:         wdir='C:/Users/Eleanor/.spyder-py3')
    
    60 hoặc
    In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
       ...:         wdir='C:/Users/Eleanor/.spyder-py3')
    
    61: Truy cập vào thuộc tính hoặc phương thức chỉ được phép trong lớp hoặc lớp được liệt kê.
    : Access to the property or method is only allowed in the listed class or classes.

Điều này cho phép bạn kiểm soát cụ thể các cách mà một phương thức thuộc tính hoặc lớp có thể được truy cập.

Trong Python, không có cách nào để đặt thuộc tính hoặc phương thức lớp hoặc phiên bản như được bảo vệ hoặc riêng tư. Tất cả các lớp và phiên bản lớp có thể thay đổi thuộc tính và phương thức của chúng khi chạy. Công ước Python sườn là các thuộc tính và phương thức bắt đầu với một dấu gạch dưới (

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
97) được dự định là riêng tư, hoặc ít nhất là không công khai. Tuy nhiên, quy ước này không được thực thi bởi bất kỳ kiểm tra nào trong ngôn ngữ và tất cả các thuộc tính và phương thức có thể được người dùng sửa đổi trong thời gian chạy.

Như bạn đã thấy trong phần về việc sử dụng dấu gạch dưới để truy xuất các giá trị trong bảng điều khiển, dấu gạch dưới không thể nhìn thấy theo mặc định trong biến Spyder Explorer. Điều này là do Spyder và các công cụ khác tôn trọng quy ước nhấn mạnh cho thấy một cái gì đó không phải là công khai. Tuy nhiên, dấu gạch dưới có thể được hiển thị trong Trình khám phá biến Spyder nếu bạn nhấp vào biểu tượng bánh răng ở phía trên bên phải của khung đó và bỏ chọn mục Biến riêng tư loại trừ. Điều này cũng sẽ hiển thị các biến không công khai khác là tốt.

Python sử dụng một số phương pháp đặc biệt bắt đầu với một kép (

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
63), được gọi là các phương thức Dunder, để thực hiện hành vi cụ thể cho các lớp. Phương pháp Dunder được sử dụng phổ biến nhất là
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
64, đó là trình khởi tạo hoặc hàm tạo lớp. Bạn có thể đọc nhiều hơn về các phương thức Dunder trong việc làm phong phú các lớp Python của bạn bằng các phương pháp Dunder (Magic, đặc biệt).dunder methods, to implement specific behavior for classes. The most commonly used dunder method is
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
64, which is the class initializer or constructor. You can read a lot more about dunder methods in Enriching Your Python Classes With Dunder (Magic, Special) Methods.

Nếu bạn muốn biết thêm thông tin về các lớp Python, bạn có thể đọc lập trình hướng đối tượng trong Python vs Java. Mặc dù bài viết đó là về Java, Java tương tự như mô hình Matlab OOP về bản chất của các thuộc tính và phương pháp.

Một lớp học gọi chính nó là
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
65 trong Python

MATLAB sử dụng tên

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
66 khi một lớp muốn đề cập đến thể hiện hiện tại của chính nó.
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
66 phải là đối số đầu tiên được chuyển cho một phương thức thông thường. MATLAB cũng định nghĩa các phương thức tĩnh không có tham chiếu đến thể hiện lớp.

Python sử dụng tên

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
65 khi một lớp muốn đề cập đến thể hiện hiện tại của chính nó, nhưng đây thực sự chỉ là một quy ước. Bạn có thể gọi đối số đầu tiên vào một phương thức thể hiện bất kỳ tên nào bạn muốn, nhưng
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
65 là quy ước phổ biến nhất. Python cũng định nghĩa các phương thức tĩnh mà don lồng đưa ra một đối số về thể hiện lớp và các phương thức lớp lấy đối số của đối tượng lớp thay vì thể hiện. Bạn có thể đọc thêm về các phương thức ví dụ, tĩnh và lớp trong trường hợp Python, lớp và phương thức tĩnh bị phá hủy.instance method any name you want, but
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
65 is the most common convention. Python also defines static methods that don’t take an argument of the class instance and class methods that take an argument of the class object instead of the instance. You can read more about instance, static, and class methods in Python’s Instance, Class, and Static Methods Demystified.

Có một loại chuỗi trong Python

Trong MATLAB, chuỗi các ký tự được lưu trữ trong các mảng chuỗi khi bạn sử dụng dấu ngoặc kép (

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
70) hoặc trong các mảng ký tự nếu bạn sử dụng trích dẫn đơn (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
71). Nếu bạn sử dụng cả trích dẫn đơn và đôi trong một gán mảng, mảng sẽ được quảng bá thành một mảng chuỗi.string arrays when you use double quotes (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
70) or in character arrays if you use single quotes (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
71). If you use both single and double quotes in an array assignment, the array will be promoted to a string array.

Trong các mảng ký tự, mỗi ký tự trong chuỗi chiếm một cột trong mảng. Đối với các mảng ký tự đa chiều, mỗi hàng của mảng phải có cùng số lượng ký tự, có nghĩa là cùng một số cột. Điều này được hiển thị trong ví dụ dưới đây:

>>>

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
3

Trong ví dụ này, dòng 1 cho thấy một nỗ lực xác định mảng ký tự 2 hàng bằng cách sử dụng các trích dẫn đơn. Tuy nhiên, số lượng ký tự trong

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 không giống như trong
In [2]: import antigravity
72, do đó, MATLAB cho thấy một thông báo lỗi rằng kích thước không nhất quán.

Trên dòng 4, bạn tạo thành công một mảng ký tự và trên dòng đầu vào thứ ba, bạn đang kiểm tra kích thước của mảng. Đầu ra cho thấy có 2 hàng, như mong đợi và 6 cột, vì độ dài của cả

In [2]: import antigravity
71 và
In [2]: import antigravity
72 là 6 ký tự.

Đây không phải là trường hợp cho các mảng chuỗi. Trong các mảng chuỗi, mỗi chuỗi chiếm một cột trong mảng và mỗi hàng trong một mảng đa chiều phải có cùng một số chuỗi, mặc dù mỗi chuỗi có thể có độ dài khác nhau. Điều này được hiển thị trong ví dụ dưới đây:

>>>

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
4

Trong mã này, dòng 1 cho thấy một nỗ lực xác định mảng chuỗi 2 hàng bằng cách sử dụng các trích dẫn kép. Tuy nhiên, số lượng chuỗi ở hàng đầu tiên (2) không khớp với số lượng chuỗi trong hàng thứ hai (1), do đó MATLAB gây ra lỗi.

Trên dòng 5, bạn tạo thành công một mảng chuỗi. Lưu ý rằng mặc dù số lượng ký tự là khác nhau giữa

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 và
In [2]: import antigravity
72, MATLAB có thể tạo mảng chuỗi. Trên dòng 6, bạn đang kiểm tra kích thước của mảng chuỗi, cho thấy có 2 hàng và 1 cột, như mong đợi.

Trong Python, chỉ có một loại theo nghĩa đen, được gọi là

In [2]: import antigravity
76. Bạn có thể tạo một chuỗi theo nghĩa đen bằng cách sử dụng các trích dẫn đơn (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
71) hoặc dấu ngoặc kép (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
70), không có sự khác biệt giữa hai định nghĩa. Tuy nhiên, có một số đối số tốt để thích các trích dẫn kép khi xác định chữ viết trong Python, được thể hiện rõ bởi thư viện định dạng mã đen.

Có một cách bổ sung để xác định các chuỗi trong Python, sử dụng các quote ba phần (

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
81) hoặc ba lần điều khiển gấp đôi (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
82). Phương pháp tạo chuỗi này cho phép các chuỗi được xác định trên nhiều dòng với các ký tự mới được giữ lại. Bạn có thể thấy một ví dụ về điều này trong phần về nhận xét và tài liệu.

Bạn có thể đọc nhiều hơn về việc xác định các chuỗi trong các loại dữ liệu cơ bản trong Python và chuỗi và dữ liệu ký tự trong Python.

Bạn có thể tạo các cấu trúc dữ liệu tương tự cho các mảng chuỗi và mảng ký tự trong MATLAB bằng cách sử dụng Numpy trong Python. Numpy có một số loại dữ liệu hoặc DTYPE, có liên quan đến chuỗi. Trong Python 3, chuỗi DTYPE mặc định cho mảng là chuỗi unicode có chiều rộng cố định:dtypes, that are related to strings. In Python 3, the default string dtype for arrays is a fixed-width Unicode string:

>>>

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
5

Trong mã này, dòng 1 cho thấy một nỗ lực xác định mảng chuỗi 2 hàng bằng cách sử dụng các trích dẫn kép. Tuy nhiên, số lượng chuỗi ở hàng đầu tiên (2) không khớp với số lượng chuỗi trong hàng thứ hai (1), do đó MATLAB gây ra lỗi.

Trên dòng 5, bạn tạo thành công một mảng chuỗi. Lưu ý rằng mặc dù số lượng ký tự là khác nhau giữa

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 và
In [2]: import antigravity
72, MATLAB có thể tạo mảng chuỗi. Trên dòng 6, bạn đang kiểm tra kích thước của mảng chuỗi, cho thấy có 2 hàng và 1 cột, như mong đợi.

Trong Python, chỉ có một loại theo nghĩa đen, được gọi là

In [2]: import antigravity
76. Bạn có thể tạo một chuỗi theo nghĩa đen bằng cách sử dụng các trích dẫn đơn (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
71) hoặc dấu ngoặc kép (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
70), không có sự khác biệt giữa hai định nghĩa. Tuy nhiên, có một số đối số tốt để thích các trích dẫn kép khi xác định chữ viết trong Python, được thể hiện rõ bởi thư viện định dạng mã đen.

Có một cách bổ sung để xác định các chuỗi trong Python, sử dụng các quote ba phần (

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
81) hoặc ba lần điều khiển gấp đôi (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
82). Phương pháp tạo chuỗi này cho phép các chuỗi được xác định trên nhiều dòng với các ký tự mới được giữ lại. Bạn có thể thấy một ví dụ về điều này trong phần về nhận xét và tài liệu.

>>>

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
6

Trong mã này, dòng 1 cho thấy một nỗ lực xác định mảng chuỗi 2 hàng bằng cách sử dụng các trích dẫn kép. Tuy nhiên, số lượng chuỗi ở hàng đầu tiên (2) không khớp với số lượng chuỗi trong hàng thứ hai (1), do đó MATLAB gây ra lỗi.

Trên dòng 5, bạn tạo thành công một mảng chuỗi. Lưu ý rằng mặc dù số lượng ký tự là khác nhau giữa

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 và
In [2]: import antigravity
72, MATLAB có thể tạo mảng chuỗi. Trên dòng 6, bạn đang kiểm tra kích thước của mảng chuỗi, cho thấy có 2 hàng và 1 cột, như mong đợi.

>>>

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
7

Trong mã này, dòng 1 cho thấy một nỗ lực xác định mảng chuỗi 2 hàng bằng cách sử dụng các trích dẫn kép. Tuy nhiên, số lượng chuỗi ở hàng đầu tiên (2) không khớp với số lượng chuỗi trong hàng thứ hai (1), do đó MATLAB gây ra lỗi.

>>>

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
8

Trong mã này, dòng 1 cho thấy một nỗ lực xác định mảng chuỗi 2 hàng bằng cách sử dụng các trích dẫn kép. Tuy nhiên, số lượng chuỗi ở hàng đầu tiên (2) không khớp với số lượng chuỗi trong hàng thứ hai (1), do đó MATLAB gây ra lỗi.

Một điểm khác biệt khác mà bạn sẽ nhận thấy từ MATLAB là cách xác định hình dạng hoặc kích thước của mảng:

>>>

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
9

Trong mã này, chúng tôi đang in hình dạng của

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Lưu ý rằng cả hai đều có hình dạng giống nhau, hai yếu tố trong một mảng một chiều. Điều này tương tự như mảng chuỗi từ MATLAB, trong đó mỗi chuỗi được tính là một phần tử trong mảng. Tuy nhiên, thực tế là các mảng numpy với
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
95 DTYPE có kích thước tối đa cố định hoạt động giống như mảng ký tự từ MATLAB. Bạn sẽ thấy nhiều hơn về sự khác biệt trong cách MATLAB và Numpy tính toán hình dạng của các mảng trong phần sau.

Thư viện không được tự động tải lại trong Python

Khi thực hiện một hàm hoặc tập lệnh, MATLAB sẽ luôn sử dụng bản sao cập nhật nhất của tệp trên đĩa. Do đó, khi bạn đang phát triển một tập lệnh, bạn có thể chạy nó trong bảng điều khiển nhiều lần và những thay đổi mới mà bạn thực hiện sẽ tự động được chọn.

Python vận hành hơi khác nhau. Hãy nhớ rằng khi bạn muốn truy cập mã từ một tệp, bạn phải

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
68 nó vào một không gian tên. Khi Python nhập tệp hoặc mô -đun, nó chỉ đọc mã lần đầu tiên được nhập. Điều này tiết kiệm khá nhiều thời gian nếu bạn nhập cùng một tệp nhiều lần. Tuy nhiên, nếu bạn đang kiểm tra mã của mình trong dấu nhắc giao diện điều khiển tương tác khi bạn làm việc trên đó, Python sẽ không nhận bất kỳ thay đổi nào nếu bạn
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
68 lại.

Khi bạn đang phát triển một mô -đun, bạn có một vài tùy chọn để tải lại mã Python của mình khi được nhập. Nếu bạn sử dụng IDE Spyder, đây hoàn toàn không phải là vấn đề, vì Spyder có tính năng tải lại mô -đun người dùng tự động được bật theo mặc định.

Mặt khác, nếu bạn sử dụng bảng điều khiển Ipython bên ngoài Spyder hoặc Jupyter Notebook, bạn có thể sử dụng lệnh ma thuật được xác định trong các phiên dịch viên gọi là

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
13:

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
0

Trong mã này, chúng tôi đang in hình dạng của

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
55 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Lưu ý rằng cả hai đều có hình dạng giống nhau, hai yếu tố trong một mảng một chiều. Điều này tương tự như mảng chuỗi từ MATLAB, trong đó mỗi chuỗi được tính là một phần tử trong mảng. Tuy nhiên, thực tế là các mảng numpy với
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
95 DTYPE có kích thước tối đa cố định hoạt động giống như mảng ký tự từ MATLAB. Bạn sẽ thấy nhiều hơn về sự khác biệt trong cách MATLAB và Numpy tính toán hình dạng của các mảng trong phần sau.

Thư viện không được tự động tải lại trong Python

Khi thực hiện một hàm hoặc tập lệnh, MATLAB sẽ luôn sử dụng bản sao cập nhật nhất của tệp trên đĩa. Do đó, khi bạn đang phát triển một tập lệnh, bạn có thể chạy nó trong bảng điều khiển nhiều lần và những thay đổi mới mà bạn thực hiện sẽ tự động được chọn.

Python vận hành hơi khác nhau. Hãy nhớ rằng khi bạn muốn truy cập mã từ một tệp, bạn phải

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
68 nó vào một không gian tên. Khi Python nhập tệp hoặc mô -đun, nó chỉ đọc mã lần đầu tiên được nhập. Điều này tiết kiệm khá nhiều thời gian nếu bạn nhập cùng một tệp nhiều lần. Tuy nhiên, nếu bạn đang kiểm tra mã của mình trong dấu nhắc giao diện điều khiển tương tác khi bạn làm việc trên đó, Python sẽ không nhận bất kỳ thay đổi nào nếu bạn
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
68 lại.

  1. Khi bạn đang phát triển một mô -đun, bạn có một vài tùy chọn để tải lại mã Python của mình khi được nhập. Nếu bạn sử dụng IDE Spyder, đây hoàn toàn không phải là vấn đề, vì Spyder có tính năng tải lại mô -đun người dùng tự động được bật theo mặc định.
  2. 11# %% This is a code cell
    12var_7 = 42
    13var_8 = var_7 * 2
    14
    15# %% This is a second code cell
    16print("This code will be executed in this cell")
    
    23

Mặt khác, nếu bạn sử dụng bảng điều khiển Ipython bên ngoài Spyder hoặc Jupyter Notebook, bạn có thể sử dụng lệnh ma thuật được xác định trong các phiên dịch viên gọi là

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
13:

Trong mã này, bạn đang sử dụng lệnh ma thuật

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
14 để tải tiện ích mở rộng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
13. Trong các máy tính xách tay Ipython và Jupyter, các lệnh có tiền tố với dấu phần trăm
In [2]: import antigravity
57 là các lệnh ma thuật. Tiện ích mở rộng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
13 xác định hàm ma thuật
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
13 mà bạn sử dụng trên dòng đầu vào 2. Bạn đang chuyển tham số
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
19 cho hàm ma thuật
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
13, có nghĩa là tất cả các mô -đun nên được tải lại mỗi khi dòng mã được thực thi.

Tổng quan về các hoạt động mảng cơ bản

Như bạn đã thấy, Python không bao gồm một thư viện tốc độ cao cho các mảng trong thư viện tiêu chuẩn của nó. Tuy nhiên, thư viện Numpy tuyệt vời có sẵn nếu bạn cài đặt Anaconda. Numpy có chức năng là thư viện mảng và ma trận thực tế cho Python.

Numpy có hai loại giống như mảng:

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
1

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
21, còn được gọi là
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
22

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
2

Sự khác biệt chính giữa hai loại này là

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
24 có thể là bất kỳ số lượng kích thước nào, trong khi
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
25 được giới hạn ở chính xác hai chiều. Đối với
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
24, tất cả các hoạt động như bổ sung, trừ, nhân, số mũ và phân chia hoạt động yếu tố khôn ngoan. Tuy nhiên, đối với loại
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
25, các hoạt động như nhân và số mũ là các hoạt động ma trận.

Để thực hiện sản phẩm vô hướng, bạn có thể thực hiện chuyển vị của

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 để chuyển đổi nó thành mảng 3x1:

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
3

Trong mã này, bạn đang thực hiện phép nhân ma trận với

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 và chuyển vị của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Lưu ý rằng bạn có thể sử dụng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
44 hoặc toán tử báo giá (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
71) để thực hiện chuyển vị của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Vì
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 là 1x3 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
48 là 3x1, điều này dẫn đến sản phẩm vô hướng hoặc dấu chấm.

Với các mảng Numpy, các hoạt động như phép nhân với dấu hoa thị (

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
83) hoạt động theo mặc định theo mặc định:

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
4

Trong mã này, bạn đang thực hiện phép nhân ma trận với

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 và chuyển vị của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Lưu ý rằng bạn có thể sử dụng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
44 hoặc toán tử báo giá (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
71) để thực hiện chuyển vị của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Vì
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 là 1x3 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
48 là 3x1, điều này dẫn đến sản phẩm vô hướng hoặc dấu chấm.

Với các mảng Numpy, các hoạt động như phép nhân với dấu hoa thị (

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
83) hoạt động theo mặc định theo mặc định:

Trong mã này, trước tiên bạn đang nhập gói Numpy và gán nó cho tên

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
76. Sau đó, bạn đang tạo hai mảng một chiều. Lưu ý cú pháp để tạo mảng trong numpy. Nó bắt đầu với
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
51, nên được đọc dưới dạng từ trong vòng ____476, tìm
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
53. Sau đó, bạn phải chuyển một danh sách python hoặc tuple cho hàm tạo mảng có chứa các phần tử của mảng. Trong trường hợp này, bạn đang vượt qua một danh sách Python, được biểu thị bằng dấu ngoặc vuông.

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
5

Trong mã này, bạn đang thực hiện phép nhân ma trận với

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 và chuyển vị của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Lưu ý rằng bạn có thể sử dụng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
44 hoặc toán tử báo giá (
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
71) để thực hiện chuyển vị của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Vì
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 là 1x3 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
48 là 3x1, điều này dẫn đến sản phẩm vô hướng hoặc dấu chấm.

Với các mảng Numpy, các hoạt động như phép nhân với dấu hoa thị (

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
83) hoạt động theo mặc định theo mặc định:

Trong mã này, trước tiên bạn đang nhập gói Numpy và gán nó cho tên 8var_4 = 10 9var_5 = 20 10var_6 = var_4 + var_5 76. Sau đó, bạn đang tạo hai mảng một chiều. Lưu ý cú pháp để tạo mảng trong numpy. Nó bắt đầu với 11# %% This is a code cell 12var_7 = 42 13var_8 = var_7 * 2 14 15# %% This is a second code cell 16print("This code will be executed in this cell") 51, nên được đọc dưới dạng từ trong vòng ____476, tìm 11# %% This is a code cell 12var_7 = 42 13var_8 = var_7 * 2 14 15# %% This is a second code cell 16print("This code will be executed in this cell") 53. Sau đó, bạn phải chuyển một danh sách python hoặc tuple cho hàm tạo mảng có chứa các phần tử của mảng. Trong trường hợp này, bạn đang vượt qua một danh sách Python, được biểu thị bằng dấu ngoặc vuông.

Cuối cùng, trên dòng đầu vào 4, bạn đang nhân

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Lưu ý rằng kết quả trên dòng đầu ra 4 là một mảng khác với các phần tử 4, 10 và 18, kết quả tương tự như phép nhân phần tử trong MATLAB.

Nếu bạn muốn thực hiện sản phẩm DOT hoặc Scalar cho hai mảng trong Numpy, bạn có hai tùy chọn. Tùy chọn ưa thích là sử dụng toán tử nhân ma trận (

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
11) được thêm vào trong Python 3.5. Bạn có thể thấy một số mã cũ cũng sử dụng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
57 từ thư viện Numpy và vượt qua hai mảng:

Trong mã này, dòng đầu vào 5 sử dụng toán tử nhân ma trận để tìm sản phẩm vô hướng của

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Đúng như dự đoán, kết quả là 32. Dòng đầu vào 5 sử dụng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
57 và nên được đọc dưới dạng từ trong vòng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
76, tìm
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
57 và vượt qua
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Bạn có thể thấy rằng kết quả là giống hệt nhau.

Lưu ý rằng Numpy không yêu cầu bạn chuyển đổi

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 trước khi thực hiện sản phẩm vô hướng. Bạn sẽ tìm hiểu thêm về tính năng này trong phần tiếp theo.

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
6

Mảng một chiều là vectơ trong Numpy

Như bạn đã thấy trong phần cuối cùng, Matlab khẳng định rằng kích thước của các mảng căn chỉnh khi thực hiện phép nhân ma trận, trong khi Numpy linh hoạt hơn một chút. Điều này là do cách các mảng một chiều được đối xử trong MATLAB so với Numpy.

Trong Matlab, mọi mảng luôn có ít nhất hai chiều, ngay cả khi chỉ ngầm. Bạn có thể thấy điều này bằng cách kiểm tra

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
66 của một số duy nhất:rows and columns. When the transpose is performed, the rows are switched with the columns, and the shape of the array is changed. This means there are two types of vectors in MATLAB: row-vectors and column-vectors.

Ở đây, bạn đang tìm kích thước của số nguyên 1. Bạn có thể thấy rằng kết quả là một mảng có 1 hàng và 1 cột.

Bạn có thể tạo các vectơ hàng hoặc vectơ cột trong MATLAB và chuyển đổi giữa chúng với toán tử chuyển vị (

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
71) hoặc
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
44:

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
7

Trong mã này, bạn đang tạo một vectơ 3 phần tử mặc định trong Numpy. Trên dòng đầu vào 1, bạn nhập Numpy và cung cấp nó theo

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
76. Trên dòng đầu vào 2, bạn đang tạo mảng và lưu trữ nó trong
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
78. Bạn đang chuyển danh sách
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
79 cho
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
53, trong đó danh sách có 3 yếu tố và không có yếu tố nào là danh sách của chính họ. Điều này tạo ra mảng 3 phần tử chỉ với một chiều.

Bạn có thể xác minh rằng đây là trường hợp bằng cách hiển thị hình dạng của mảng, như được hiển thị trên dòng đầu vào 3. Dòng đó nên được đọc dưới dạng từ trong vòng

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
78 (một mảng), hãy tìm
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
82.
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
82 của mảng tương đương với
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
66 trong MATLAB. Trong trường hợp này, hình dạng là
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
85, cho thấy có ba phần tử và chỉ có một chiều, vì không có số thứ hai sau dấu phẩy.

Bạn cũng có thể tạo các vectơ hàng và các vectơ cột trong numpy, tương tự với các vectơ hàng và vectơ cột trong MATLAB. Numpy sườn

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
53 lấy một danh sách phẳng hoặc một danh sách lồng nhau làm đầu vào. Sử dụng danh sách phẳng giúp bạn có một vectơ một chiều, một phần tử. Bằng cách sử dụng danh sách lồng nhau, bạn có thể tạo các mảng của bất kỳ chiều nào bạn muốn. Một danh sách lồng nhau có nghĩa là có một hoặc nhiều danh sách có trong danh sách bên ngoài. Ở đây, một ví dụ về danh sách lồng nhau:

Trong mã này, bạn thấy một danh sách bên ngoài có 2 yếu tố. Mỗi trong số 2 yếu tố này của danh sách bên ngoài là một danh sách khác, lồng nhau, có ba yếu tố, số nguyên 1-3 và 4-6. Về mặt mảng, bạn có thể nghĩ về số lượng phần tử của mỗi danh sách bên trong là số lượng cột và số lượng danh sách lồng nhau là số lượng hàng. Điều này dễ dàng hơn để xem nếu bạn thay đổi định dạng:

Mã này vẫn là cú pháp Python hợp lệ, nhưng nó nhấn mạnh cách các danh sách bên trong là mỗi hàng của mảng và số lượng phần tử trong mỗi danh sách bên trong là số lượng cột. Trong trường hợp này, chúng tôi sẽ có một mảng có 2 hàng và 3 cột. Chúng ta có thể sử dụng các danh sách lồng nhau này để tạo các vectơ hàng và vectơ cột trong các mảng numpy:

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
8

Trong mã này, bạn đang tạo một mảng hàng hoặc vectơ bằng cách sử dụng danh sách lồng nhau. Dòng đầu vào 4 đang chuyển

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
87 đến
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
53. Bạn có thể phá vỡ định dạng của danh sách lồng nhau này để xem nó trông như thế nào:

Như bạn có thể thấy, có một hàng trong danh sách lồng nhau này với ba cột. Trên dòng đầu vào 5, bạn đang hiển thị hình dạng của mảng này. Như mong đợi, hình dạng là

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
89 hoặc một hàng với ba cột.

Cuối cùng, bạn có thể tạo một mảng cột bằng cách bao gồm ba danh sách lồng nhau trong đầu vào:

>>>

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
9

Trong mã này, dòng đầu vào 6 đang chuyển

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
90 cho hàm tạo mảng. Bạn có thể phá vỡ định dạng của danh sách lồng nhau này để xem nó trông như thế nào:

Như bạn có thể thấy, có ba hàng trong danh sách lồng nhau này với một cột. Trên dòng đầu vào 7, bạn đang hiển thị hình dạng của mảng này. Đúng như dự đoán, hình dạng là

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
91 hoặc ba hàng có một cột.

Vì vectơ phần tử N chung không có ý nghĩa về các hàng và cột, Numpy có thể định hình vectơ theo bất kỳ cách nào có ý nghĩa cho hoạt động được thực hiện. Bạn đã thấy điều này trong phần cuối cùng, trong đó mảng numpy không cần phải được chuyển đổi để thực hiện sản phẩm vô hướng, trong khi mảng MATLAB cần phải được chuyển đổi.

Cố gắng thực hiện chuyển vị của vectơ phần tử N không thay đổi hình dạng của mảng. Bạn có thể thực hiện chuyển vị bằng cách sử dụng

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
92 hoặc thuộc tính
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
93 của mảng:

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
0

Trong mã này, bạn đang thực hiện chuyển đổi của vectơ n-sement

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
78 và in hình dạng của nó. Lưu ý rằng hình dạng giống như hình dạng của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
78 ban đầu.

Tuy nhiên, nếu bạn đang sử dụng các vectơ hàng và vectơ cột, bạn sẽ cần đảm bảo rằng các kích thước phù hợp cho hoạt động cụ thể. Chẳng hạn, cố gắng lấy sản phẩm vô hướng của vectơ hàng sẽ dẫn đến một lỗi:

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
1

Trong mã này, cố gắng tìm sản phẩm vô hướng của vectơ hàng với chính nó dẫn đến

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
96 thông báo cho bạn rằng kích thước của các mảng không được căn chỉnh. Sử dụng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
57 đưa ra cùng một lỗi nhưng một thông báo hơi khác:

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
2

Trong mã này, bạn đang sử dụng

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
57 từ không gian tên
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
76 để cố gắng tìm sản phẩm vô hướng của hai vectơ hàng 1x3. Vì hoạt động này không được phép, Numpy tăng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
96, tương tự như toán tử nhân ma trận.

Thay vào đó, bạn cần phải chuyển đổi một trong những đối số:

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
3

Trên dòng đầu vào 12, bạn đang thực hiện chuyển vị của vectơ hàng để biến nó thành một vectơ cột bằng cách sử dụng thuộc tính chuyển đổi (

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
93). Điều này được thể hiện trong dòng đầu ra tương ứng, trong đó các phần tử được sắp xếp để tạo thành một cột cho mục đích in. Sau đó, bạn đang lấy sản phẩm vô hướng của vectơ với chuyển vị của nó, tạo ra một mảng có một giá trị duy nhất, 14. Lưu ý rằng đây là một mảng 1x1, vì vậy để truy cập giá trị, bạn cần truy cập vào phần tử đầu tiên trong mỗi chiều :

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
4

Trong mã này, bạn đang xác minh rằng hình dạng là 1x1, và sau đó truy cập phần tử đầu tiên trong mỗi chiều nằm ở chỉ số 0. Hãy nhớ rằng Python sử dụng 0 làm chỉ mục đầu tiên, không phải 1.

Bạn có thể sử dụng các danh sách lồng nhau để tạo ra các mảng có bất kỳ hình dạng nào bạn muốn. Để tạo ra một mảng ba-ba (hai chiều), chỉ cần bao gồm ba yếu tố trong mỗi ba danh sách lồng nhau của bạn:

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
5

Trong mã này, bạn đã lồng ba danh sách với ba phần tử vào hàm tạo. Như được hiển thị bởi hình dạng, điều này tạo ra một mảng 3x3 với các phần tử từ 1 đến 9.

Tạo mảng rất linh hoạt trong Numpy

Cả Matlab và Numpy đều cho phép bạn chỉ định rõ ràng các yếu tố cụ thể trong một mảng, như bạn đã thấy trong phần trước. Ngoài việc tạo ra các mảng trực tiếp này, cả MATLAB và Numpy đều hỗ trợ một số phương thức khác để tạo mảng mà không chỉ định rõ ràng từng phần tử. Dự án Numpy duy trì một danh sách chi tiết các chức năng tương đương giữa MATLAB và Numpy.

Nhiều chức năng hoạt động giống hệt nhau giữa MATLAB và Numpy. Điều này bao gồm các hàm thường được sử dụng như

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
02 và
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
03 để tạo dữ liệu cách đều nhau và
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
04 và
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
05 để tạo ra các mảng có hình dạng nhất định với các hình dạng và số không. Danh sách đầy đủ các cách để tạo mảng trong Numpy được liệt kê trong tài liệu chính thức.

Một sự khác biệt lớn giữa Matlab và Numpy về các thói quen tạo mảng là Matlab hỗ trợ chỉ đơn giản là sử dụng dấu hai chấm để tạo ra một mảng, trong khi Numpy thì không. Thay vào đó, Numpy sử dụng

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06 để tạo một mảng giữa các giá trị được chỉ định.

Trong MATLAB, bạn có thể sử dụng một dấu hai chấm để tạo ra một phạm vi đặc tả mảng. Nói chung, bạn có thể sử dụng tối đa 2 đại phân trong một đặc điểm kỹ thuật. Cú pháp như sau:

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
6

Trong cú pháp này, phương thức đầu tiên chỉ sử dụng một dấu hai chấm và chỉ định các giá trị bắt đầu và dừng. Phương pháp thứ hai bao gồm một dấu hai chấm thứ hai, trong đó giá trị trước đại tràng thứ nhất là bắt đầu, giá trị trung bình là bước và giá trị cuối cùng là điểm dừng.

Hãy thử các ví dụ này để thử nghiệm cú pháp này:

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
7

Trong ví dụ này, bạn đang sử dụng đại tràng đơn khi bắt đầu và dừng để tạo một mảng với các giá trị từ 1 đến 6. Bạn có thể thấy rằng khi bước bị bỏ qua, nó mặc định là giá trị 1. Lưu ý rằng MATLAB bao gồm cả hai Sự khởi đầu và các giá trị dừng trong mảng, và kích thước của mảng dài 6 phần tử. Tiếp theo, thay đổi giá trị của kích thước bước để tạo một mảng mới:

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
8

Trong ví dụ này, bạn đang sử dụng cú pháp hai dấu chấm câu với bước bắt đầu, bước và dừng. Giá trị bắt đầu là 1, bước là 2 và giá trị dừng là 6, vì vậy MATLAB bắt đầu với 1, tăng lên 3 và sau đó đến 5. Bước tiếp theo sẽ vượt quá giá trị dừng, vì vậy MATLAB không bao gồm giá trị dừng trong mảng. Tiếp theo, thay đổi giá trị bắt đầu để tạo một mảng mới khác:

>>>

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
9

Trong ví dụ này, bạn lại sử dụng hai phương thức đại tràng, nhưng bạn đang chỉ định giá trị bắt đầu là 2 thay vì 1. Trong trường hợp này, MATLAB bắt đầu ở mức 2, tăng lên 4, tăng lên 6 và sau đó đạt đến giá trị dừng Vì vậy, không đi xa hơn. Lưu ý rằng trong trường hợp này, giá trị dừng của 6 được bao gồm trong mảng.

Với Numpy, bạn có thể sử dụng

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06 để tạo một mảng với các giá trị bắt đầu, dừng và bước cụ thể. Tuy nhiên,
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06 có một sự khác biệt lớn so với MATLAB, đó là giá trị dừng không được bao gồm trong mảng kết quả. Lý do cho điều này là do kích thước của mảng bằng
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
09 đối với trường hợp mặc định có kích thước bước là 1. Thông báo trong MATLAB rằng kích thước của mảng của các số nguyên từ 1 đến 6 là 6, nhưng 6 - 1 = 5.

Có ba cách để sử dụng

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06:

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
0

Nếu bạn chỉ chuyển một đối số cho

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06, nó sẽ được hiểu là giá trị dừng. Giá trị bắt đầu mặc định là 0 và bước mặc định là 1. Nếu bạn chuyển hai đối số sang
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06, chúng được hiểu là giá trị bắt đầu và dừng. Cuối cùng, bạn có thể vượt qua cả ba lần bắt đầu, dừng lại và bước tới
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06.

Lưu ý rằng thứ tự của các đối số khác với MATLAB, đi

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
14,
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
15,
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
16 trong Python. Nếu bạn gặp khó khăn trong việc ghi nhớ thứ tự mà các đối số này đi, hãy nhớ rằng bạn có thể sử dụng các đối số từ khóa trong Python để rõ ràng về ý nghĩa của mỗi đối số.

Bạn có thể dùng thử

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06 với các ví dụ sau:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
1

Trong ví dụ này, bạn đang tạo một mảng chứa các giá trị từ 1 đến 6. Như trong MATLAB, nếu bước bị bỏ qua, nó mặc định là 1. Lưu ý rằng bạn phải vượt qua giá trị dừng 7 để mảng dừng ở mức 6 . Tuy nhiên, kích thước của mảng kết quả là 7 - 1 = 6 phần tử dài. Tiếp theo, bạn sẽ thấy cách thay đổi kích thước bước:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
2

Trong mã này, bạn đang tạo một mảng chứa các giá trị từ 1 đến 6, tăng thêm hai giữa mỗi phần tử. Bước là hai, vì vậy Numpy bắt đầu với 1, tăng lên 3 và sau đó đến 5. Bước tiếp theo sẽ bằng giá trị dừng, nhưng Numpy không bao gồm giá trị dừng trong mảng. Lưu ý rằng công thức để tính toán kích thước của mảng là một chút khác biệt, vì kích thước bước không phải là 1.

Với kích thước bước khác khác, kích thước của mảng có thể được tính toán bằng

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
18 nếu điều này dẫn đến giá trị nguyên. Trong trường hợp này, kích thước của mảng là (7 - 1)/2 = 3 phần tử, như mong đợi. Nếu
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
18 dẫn đến số điểm nổi, kích thước của mảng bằng với số nguyên lớn nhất tiếp theo như được trình bày trong ví dụ tiếp theo:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
3

Trong ví dụ này, bạn đang tạo một mảng chứa các giá trị từ 2 đến 6, tăng thêm hai giữa mỗi phần tử. Bước là hai, vì vậy Numpy bắt đầu với 2, tăng lên 4 và sau đó đến 6. Bước tiếp theo sẽ vượt quá giá trị dừng, do đó, Numpy dừng ở mức 6. Lưu ý rằng kích thước của mảng là (7 - 2)/2 = 2.5, vì vậy số nguyên cao nhất tiếp theo là 3 yếu tố, như mong đợi.

Cuối cùng, bạn thường nên sử dụng các đối số số nguyên cho

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06 trong Numpy và người vận hành đại tràng trong MATLAB. Nếu bạn sử dụng các giá trị điểm nổi (số có số thập phân), đặc biệt là cho bước, các yếu tố có thể không xuất hiện chính xác như bạn mong đợi. Nếu bạn muốn sử dụng số điểm nổi,
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
02 là lựa chọn tốt hơn nói chung.

Người vận hành đại tràng rất mạnh mẽ trong Numpy

Trong MATLAB, toán tử ruột được sử dụng để thực hiện một số tác vụ hữu ích. Như bạn đã thấy, nó có thể được sử dụng để tạo mảng, và nó cũng có thể được sử dụng để lập chỉ mục hoặc cắt các mảng. Khi lập chỉ mục các mảng, MATLAB hỗ trợ từ khóa

In [2]: import antigravity
80 để mở rộng phạm vi được chỉ định đến cuối chiều đó, như bạn đã thấy trước đó:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
4

Trong mã này, bạn đang lập chỉ mục

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 bắt đầu ở chỉ mục thứ hai và đi đến cuối mảng. Bạn cũng có thể chỉ định một chỉ mục cụ thể là giá trị dừng:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
5

Trong mã này, bạn đang tạo một mảng

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 với các số từ 1 đến 6, bao gồm. Sau đó, bạn đang chỉ định phần tử thứ hai là giá trị bắt đầu và phần tử thứ tư là giá trị dừng trong lát cắt. MATLAB cũng hỗ trợ cú pháp gia tăng hai đại tá khi lập chỉ mục:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
6

Trong mã này, bạn đang lập chỉ mục cho mảng, bắt đầu ở phần tử thứ hai, bỏ qua mọi yếu tố khác, cho đến khi kết thúc mảng. Bạn cũng có thể sử dụng

In [2]: import antigravity
80 làm điểm bắt đầu của lát cắt với bước âm:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
7

Trong mã này, bạn đang lập chỉ mục

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 bắt đầu từ giá trị cuối cùng, giảm 1 và kết thúc ở phần tử thứ 4. Cuối cùng, bạn có thể cắt tất cả các phần tử theo chiều bằng cách chỉ sử dụng một dấu hai chấm:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
8

Trong mã này, bạn đang chọn tất cả các chiều đầu tiên của mảng chỉ bằng dấu hai chấm.

Numpy và Python nói chung cũng sử dụng đại tràng cho cú pháp lát cắt, nhưng thứ tự của các giá trị hơi khác nhau. Trong Python, thứ tự là

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
27, trong khi ở Matlab, đó là
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
28, như bạn đã thấy trước đó. Ngoài ra, trong Numpy, bạn có thể bỏ qua bắt đầu hoặc dừng và chúng sẽ có giá trị mặc định là 0 (hoặc phần tử đầu tiên) cho bắt đầu và phần tử cuối cùng để dừng. Trong MATLAB, bạn phải chỉ định bắt đầu và dừng nếu bạn muốn chỉ định một trong hai. Do đó, Python không có từ khóa
In [2]: import antigravity
80, vì bạn có thể bỏ qua
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
15 để đạt được hành vi tương tự.

Hãy thử các ví dụ sau đây về cú pháp lát cắt trong Numpy:

>>>

 1num = 10
 2
 3if num == 10:
 4    print("num is equal to 10")
 5else:
 6    print("num is not equal to 10")
 7
 8print("I am now outside the if block")
9

Trong mã này, bạn đang tạo một mảng với các số nguyên từ 1 đến 6, bao gồm, bỏ qua mọi số khác. Sau đó, bạn đang cắt mảng lấy phần tử thứ hai (chỉ mục 1) cho đến khi kết thúc mảng. Lưu ý rằng giá trị dừng đã bị bỏ qua, vì vậy nó mặc định là phần tử cuối cùng trong mảng.

Bạn cũng có thể chỉ định một yếu tố cụ thể là giá trị dừng. Bạn đã thấy khi sử dụng

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06 rằng mảng không bao gồm giá trị dừng. Điều tương tự cũng đúng với cú pháp lát cắt trong Python, lát cắt sẽ bao gồm mọi thứ lên tới, nhưng không bao gồm, chỉ số dừng:

>>>

In [2]: import antigravity
00

Trong mã này, bạn đang tạo một mảng với các số nguyên từ 1 đến 6, bao gồm. Sau đó, bạn đang cắt mảng bắt đầu từ phần tử thứ hai (chỉ mục 1, giá trị 2) cho đến khi phần tử thứ tư (chỉ mục 3, giá trị 4). Tuy nhiên, bạn đã chỉ định chỉ mục dừng là 4 (phần tử thứ năm trong mảng, giá trị 5). Lý do Python bao gồm chỉ số (dừng - 1) là cùng một lý do

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
06 không bao gồm giá trị dừng, do đó độ dài của mảng kết quả bằng
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
09. Tiếp theo, hãy thử thay đổi bước của lát cắt:

>>>

In [2]: import antigravity
01

Trong mã này, bạn đang cắt mảng bắt đầu từ phần tử thứ hai (chỉ mục 1), cho đến khi kết thúc mảng và lấy từng phần tử thứ hai. Điều này dẫn đến một mảng có các giá trị 2, 4 và 6. Lưu ý rằng giá trị dừng đã bị bỏ qua trong cú pháp lát cắt, do đó, nó được mặc định là phần tử cuối cùng trong mảng.

Bạn cũng có thể sử dụng một bước tiêu cực trong cú pháp cắt cho Python:

>>>

In [2]: import antigravity
02

Trong mã này, bạn không chỉ định chỉ mục bắt đầu của lát cắt, bạn đang chỉ định giá trị dừng phải là chỉ mục 2 và bước phải là -1. Vì chỉ mục bắt đầu không được chỉ định và bước là âm, giá trị bắt đầu được coi là phần tử cuối cùng trong mảng (hoặc phần tử đầu tiên trong mảng đảo ngược). Đối với giá trị dừng, INDEX 2 có giá trị 3 và một chỉ mục trước đó (trong mảng đảo ngược) là chỉ mục 3 với giá trị 4.

Cuối cùng, giống như trong Matlab, một dấu hai chấm trần có nghĩa là chọn tất cả các yếu tố từ chiều đó:

>>>

In [2]: import antigravity
03

Các lát mảng là khung nhìn của các mảng trong Numpy

Trong MATLAB, khi bạn truy cập một lát của một mảng và gán nó cho một biến, MATLAB sẽ tạo một bản sao của phần đó của mảng vào biến mới của bạn. Điều này có nghĩa là khi bạn gán các giá trị cho lát cắt, mảng ban đầu không bị ảnh hưởng. Hãy thử ví dụ này để giúp giải thích sự khác biệt của Matlab vs Python:

>>>

In [2]: import antigravity
04

Trong mã này, bạn đã tạo một mảng 3x3

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 lưu trữ các giá trị từ 1 đến 9. Sau đó, bạn tạo một lát 2x2 của mảng gốc lưu trữ từ giá trị thứ hai đến cuối theo cả hai chiều,
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Trên dòng đầu vào thứ ba, bạn gán giá trị 10 cho phần tử trên bên trái trong
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Cuối cùng, bạn in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 một lần nữa để xác minh rằng không có giá trị nào trong
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 đã thay đổi.

Trong Numpy, các lát mảng là các chế độ xem đến mảng ban đầu. Hành vi này tiết kiệm bộ nhớ và thời gian, vì các giá trị trong mảng don don phải được sao chép vào một vị trí mới. Tuy nhiên, điều đó có nghĩa là những thay đổi mà bạn thực hiện thành một lát từ một mảng sẽ thay đổi mảng ban đầu. Bạn nên thử mã sau để xem cách thức hoạt động của nó:

>>>

In [2]: import antigravity
05

Trong mã này, bạn đang tạo một mảng 3x3

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 lưu trữ các giá trị từ 1 đến 9. Sau đó, bạn tạo một lát 2x2 của mảng gốc lưu trữ từ giá trị thứ hai đến cuối theo cả hai chiều,
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Lưu ý rằng việc lập chỉ mục Python là dựa trên 0, vì vậy phần tử thứ hai có chỉ mục 1. Cuối cùng, bạn đang in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 để xác minh rằng đó là mảng 2x2.

Bây giờ bạn sẽ thấy những gì xảy ra khi bạn thay đổi giá trị trong

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Giống như trong ví dụ MATLAB, bạn nên thay đổi phần tử phía trên bên trái của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01:

>>>

In [2]: import antigravity
06

Trong mã này, trước tiên bạn chỉ định phần tử trên bên trái trong

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01, tại Index (0, 0) để có giá trị là 10. Sau đó, bạn in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 để xác minh rằng giá trị phù hợp đã thay đổi. Cuối cùng, bạn in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 và thấy rằng giá trị ở giữa mảng đã thay đổi từ 5 thành 10!

Đây là những gì có nghĩa là

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 là một quan điểm của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31. Vì đó là chế độ xem,
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 chỉ vào cùng một vị trí bộ nhớ với
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31, do đó, việc cập nhật
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 cũng cập nhật
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 vì giá trị được lưu trữ trong vị trí bộ nhớ được truy cập bởi cả
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 và
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 đã được cập nhật. Điều này cũng đi theo hướng khác, trong đó thay đổi giá trị trong
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 sẽ cập nhật giá trị trong
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01:view of
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31. Since it is a view,
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 points to the same memory location as
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31, so updating
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 also updates
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 because the value stored in the memory location accessed by both
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 and
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 has been updated. This also goes the other direction, where changing values in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 will update the value in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01:

>>>

In [2]: import antigravity
07

Trong mã này, bạn đang gán phần tử phía dưới bên phải của

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 để có giá trị 42. Hãy nhớ rằng trong Python, một chỉ số của
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
68 có nghĩa là giá trị cuối cùng trên kích thước đó. Sau đó, bạn đang in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 để xác minh rằng giá trị bên phải thấp hơn đã thay đổi từ 9 thành 42. Cuối cùng, bạn đang in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 và bạn cũng thấy với
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01, giá trị phía dưới bên phải đã thay đổi từ 9 thành 42.

Nếu bạn muốn tạo một bản sao của một mảng, bạn có thể sử dụng

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
62. Sao chép một mảng tạo ra một vị trí mới trong bộ nhớ để bản sao được lưu trữ, do đó, các thay đổi đối với mảng được sao chép không ảnh hưởng đến bản gốc:

>>>

In [2]: import antigravity
08

Trong mã này, bạn đang tạo

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
63 dưới dạng bản sao của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01. Sau đó, bạn đang thay đổi phần tử trong hàng thứ hai, cột thứ nhất có giá trị là 37. Sau đó, bạn đang in
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
63 để xác minh rằng thay đổi được chỉ định đã được thực hiện. Cuối cùng, bạn đang in
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01 để xác minh rằng không có thay đổi nào xảy ra trong
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
01, như mong đợi.

Mẹo và thủ thuật để làm cho mã của bạn Pythonic

Giống như bất kỳ ngôn ngữ lập trình nào khác, mã Python được viết bởi các nhà phát triển Python có kinh nghiệm thường có một cái nhìn cụ thể về nó. Điều này là do họ có thể tận dụng các thành ngữ cụ thể trong Python để làm việc với Python hơn là chống lại Python. Các nhà phát triển đến từ các ngôn ngữ khác thường bỏ lỡ những gì làm cho Code Pythonic trong các dự án đầu tiên của họ.

Trong phần này, bạn sẽ học được một số mẹo và thủ thuật để làm cho mã Pythonic của bạn và tăng cấp các kỹ năng Python của bạn. Có nhiều mẹo và thủ thuật hơn bạn có thể học ở đây, vì vậy hãy kiểm tra viết thêm mã Pythonic.

Bạn không nên sử dụng dấu chấm phẩy để kết thúc dòng trong Python

Trong MATLAB, kết thúc một dòng mã bằng dấu chấm phẩy

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
68 triệt tiêu đầu ra từ dòng đó. Chẳng hạn, việc gán một biến sẽ in giá trị của biến sau khi gán nếu dấu chấm phẩy bị bỏ qua.

Trong Python, bạn không nên kết thúc dòng mã với dấu chấm phẩy. Điều đó là không cần thiết, vì Python không thay đổi hành vi của nó cho dù dòng kết thúc bằng dấu chấm phẩy hay không. Vì vậy, bạn có thể lưu cho mình một cú đánh chính và không bận tâm bao gồm dấu chấm phẩy trong các tập lệnh và thư viện của bạn.

Có một trường hợp trong Python trong đó dấu chấm phẩy rất hữu ích. Khi bạn muốn thực thi một số câu lệnh, nhưng bạn không thể bao gồm một ký tự dòng mới trong đầu vào, bạn có thể tách các câu lệnh với dấu chấm phẩy. Điều này chủ yếu là hữu ích để thực thi các tập lệnh rất ngắn từ dấu nhắc lệnh hoặc thiết bị đầu cuối. Chẳng hạn, để tìm thực thi Python cụ thể đang chạy, bạn có thể nhập như sau:

In [2]: import antigravity
09

Trong mã này, bạn đang thực thi trình thông dịch Python trong

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
69 có thể thực thi và chuyển công tắc
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
70. Công tắc này lấy đối số tiếp theo và thực thi nó trong trình thông dịch. Vì môi trường Shell sẽ thực thi nếu bạn nhấn Enter để chèn một dòng mới, bạn có thể nhập toàn bộ tập lệnh trên một dòng.Enter to insert a new line, you can type the whole script on one line.

Trong trường hợp này, bạn có hai tuyên bố logic cần được phân tách bằng dấu chấm phẩy. Đầu tiên bạn đang nhập thư viện

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
71 tích hợp và sau đó bạn đang in giá trị của
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
72. Trong ví dụ này, trình thông dịch Python rằng shell đang chạy đến từ tệp
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
73.

Bạn không nên nhập In [3]: var_1 = 10 In [4]: var_2 = 20 In [5]: var_3 = var_1 + var_2 In [6]: var_3 Out[6]: 30 83 từ một mô -đun trong Python

Trong phần trước, bạn đọc về cách các không gian tên là một ý tưởng tuyệt vời trong Python. Trong MATLAB, tất cả các chức năng là một phần của không gian tên toàn cầu theo mặc định, vì vậy mọi chức năng và tên lớp phải là duy nhất. Python giải quyết vấn đề này bằng cách sử dụng các không gian tên và yêu cầu bạn chỉ định mô -đun nào một hàm sẽ đến từ.

Bạn sẽ tìm thấy các hướng dẫn trên web đề nghị bạn viết như sau:

Trong mã này, bạn đang sử dụng

In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
83 để chỉ ra rằng Python nên nhập mọi thứ có trong
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
76 và đưa nó vào phạm vi hiện tại mà không có tiền tố. Điều này thuận tiện hơn một chút, bởi vì bạn không còn phải tiền tố các chức năng và các lớp từ
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
76 với bất cứ điều gì, bạn chỉ có thể sử dụng chúng trực tiếp. Tuy nhiên, đó không phải là một thực tế tốt vì bạn không biết tên nào được xác định trong
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
76 và liệu chúng có ghi đè bất kỳ tên hiện có nào trong phạm vi hiện tại của bạn hay không.

Bạn nên tận dụng các loại dữ liệu khác nhau trong Python

MATLAB, với di sản của nó là một đại số tuyến tính và ngôn ngữ tập trung vào mảng, coi hầu hết các loại dữ liệu là một số loại. Điều này thường làm cho nó hơi khó khăn khi làm việc với các loại dữ liệu nâng cao hơn như

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
79,
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
80, mảng ô, v.v.

Python có một số loại dữ liệu tích hợp rất linh hoạt và có thể được sử dụng để hoàn thành một số tác vụ hữu ích. Những cái chính mà bạn sẽ tìm hiểu trong phần này là danh sách và từ điển.

Danh sách

Danh sách Python là các chuỗi có thể thay đổi của các giá trị. Danh sách có thể chứa dữ liệu không đồng nhất, có nghĩa là mỗi yếu tố của danh sách có thể thuộc loại khác nhau. Bởi vì danh sách có thể thay đổi, bạn có thể thay đổi giá trị của bất kỳ phần tử nào trong danh sách hoặc thêm hoặc xóa các giá trị khỏi danh sách mà không cần tạo đối tượng danh sách mới.

Vì danh sách là các chuỗi, bạn có thể tạo các vòng lặp lặp qua chúng. Trong Python, bạn không cần truy cập từng yếu tố của danh sách với một chỉ mục trong vòng lặp

In [2]: import antigravity
78, như bạn sẽ làm trong MATLAB:

>>>

In [2]: import antigravity
10

Trong mã này, bạn đang tạo một mảng

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 với các số nguyên từ 1 đến 6, lấy từng số khác. Sau đó, bạn đang tạo một vòng
In [2]: import antigravity
78 trong đó biến vòng lặp đi từ 1 đến chiều dài
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31. Cuối cùng, bạn đang hiển thị giá trị của phần tử của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 tại biến vòng lặp trên mỗi bước bằng cách sử dụng biến vòng lặp
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
07 để chỉ mục
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31.

Trong Python, bạn không nên sử dụng một chỉ mục cho danh sách khi bạn lặp qua nó. Thay vào đó, bạn nên lặp trực tiếp qua các mục trong danh sách:

>>>

In [2]: import antigravity
11

Trong mã này, bạn đang tạo một mảng

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 với các số nguyên từ 1 đến 6, lấy từng số khác. Sau đó, bạn đang tạo một vòng
In [2]: import antigravity
78 trong đó biến vòng lặp đi từ 1 đến chiều dài
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31. Cuối cùng, bạn đang hiển thị giá trị của phần tử của
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31 tại biến vòng lặp trên mỗi bước bằng cách sử dụng biến vòng lặp
In [3]: var_1 = 10
In [4]: var_2 = 20
In [5]: var_3 = var_1 + var_2
In [6]: var_3
Out[6]: 30
07 để chỉ mục
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
31.

  1. Trong Python, bạn không nên sử dụng một chỉ mục cho danh sách khi bạn lặp qua nó. Thay vào đó, bạn nên lặp trực tiếp qua các mục trong danh sách:
  2. Trong mã này, trên dòng đầu vào 1, trước tiên bạn đang tạo danh sách Python với ba yếu tố:
  3. Số nguyên
    In [3]: var_1 = 10
    In [4]: var_2 = 20
    In [5]: var_3 = var_1 + var_2
    In [6]: var_3
    Out[6]: 30
    
    59

Chuỗi

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
89

Lưu ý trong ví dụ trước rằng bạn có thể lặp qua giá trị của từng phần tử trong danh sách mà không cần sử dụng chỉ mục. Tuy nhiên, đôi khi bạn muốn truy cập chỉ mục của từng mục trong danh sách khi bạn lặp lại nó. Đối với những trường hợp đó, Python cung cấp

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
96 trả về chỉ mục và giá trị của mục:

>>>

In [2]: import antigravity
12

Trong mã này, bạn đang lặp lại

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
91 một lần nữa, nhưng lần này, bạn đang sử dụng
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
96 để có được cả chỉ mục và mục. Sau đó, bạn đang in giá trị của chỉ mục và mục trên mỗi lần lặp vòng lặp. Như bạn có thể thấy từ kết quả, các giá trị chỉ mục bắt đầu từ 0 như mong đợi, nhưng bạn không cần sử dụng chỉ mục để truy cập mục từ danh sách.

Tóm lại, bạn không nên viết mã Python như thế này:

In [2]: import antigravity
13

Trong mã này, bạn đang tạo một loạt các số nguyên từ 0 đến độ dài của

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
91 và sau đó bạn đang truy cập từng phần tử trong danh sách theo chỉ mục của nó. Điều này có thể dẫn đến các lỗi ngoài một và hàng rào. Thay vào đó, bạn nên viết mã vòng lặp qua danh sách trực tiếp:

In [2]: import antigravity
14

Bạn có thể đọc thêm rất nhiều về các danh sách trong danh sách và bộ dữ liệu trong Python và về các vòng lặp

In [2]: import antigravity
78 và lặp trong Python Hồi cho các vòng lặp (lặp lại xác định). Ngoài ra còn có một khái niệm nâng cao hơn được gọi là toàn bộ danh sách mà bạn có thể tìm hiểu về việc sử dụng toàn bộ danh sách một cách hiệu quả.list comprehensions that you can learn about in Using List Comprehensions Effectively.

Từ điển

Trong MATLAB, bạn có thể tạo một kiểu dữ liệu bản đồ với

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
01. Loại cấu trúc dữ liệu này hữu ích khi bạn có hai phần dữ liệu luôn liên quan đến nhau và bạn muốn kết nối chúng với nhau. Chẳng hạn, bạn có thể ánh xạ các thành phố cho dân số của họ với
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
01:

>>>

In [2]: import antigravity
15

Trong mã này, bạn đang lặp lại

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
91 một lần nữa, nhưng lần này, bạn đang sử dụng
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
96 để có được cả chỉ mục và mục. Sau đó, bạn đang in giá trị của chỉ mục và mục trên mỗi lần lặp vòng lặp. Như bạn có thể thấy từ kết quả, các giá trị chỉ mục bắt đầu từ 0 như mong đợi, nhưng bạn không cần sử dụng chỉ mục để truy cập mục từ danh sách.keys of the map. The second argument is an array of populations. These are called the values of the map. Then, you are accessing the value of the population in Cleveland by indexing the map with a character array.

Tóm lại, bạn không nên viết mã Python như thế này:

>>>

In [2]: import antigravity
16

Trong mã này, bạn đang lặp lại

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
91 một lần nữa, nhưng lần này, bạn đang sử dụng
 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
96 để có được cả chỉ mục và mục. Sau đó, bạn đang in giá trị của chỉ mục và mục trên mỗi lần lặp vòng lặp. Như bạn có thể thấy từ kết quả, các giá trị chỉ mục bắt đầu từ 0 như mong đợi, nhưng bạn không cần sử dụng chỉ mục để truy cập mục từ danh sách.

>>>

In [2]: import antigravity
17

Tóm lại, bạn không nên viết mã Python như thế này:dictionary. To create a Python dictionary, you can use curly braces and specify the keys and values with each other:

>>>

In [2]: import antigravity
18

Trong mã này, bạn đang tạo một loạt các số nguyên từ 0 đến độ dài của

 1num = 10;
 2
 3if num == 10
 4disp("num is equal to 10")
 5else
 6disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
91 và sau đó bạn đang truy cập từng phần tử trong danh sách theo chỉ mục của nó. Điều này có thể dẫn đến các lỗi ngoài một và hàng rào. Thay vào đó, bạn nên viết mã vòng lặp qua danh sách trực tiếp:

Bạn có thể đọc thêm rất nhiều về các danh sách trong danh sách và bộ dữ liệu trong Python và về các vòng lặp

In [2]: import antigravity
78 và lặp trong Python Hồi cho các vòng lặp (lặp lại xác định). Ngoài ra còn có một khái niệm nâng cao hơn được gọi là toàn bộ danh sách mà bạn có thể tìm hiểu về việc sử dụng toàn bộ danh sách một cách hiệu quả.

>>>

In [2]: import antigravity
19

Từ điển

>>>

In [2]: import antigravity
20

Trong MATLAB, bạn có thể tạo một kiểu dữ liệu bản đồ với

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
01. Loại cấu trúc dữ liệu này hữu ích khi bạn có hai phần dữ liệu luôn liên quan đến nhau và bạn muốn kết nối chúng với nhau. Chẳng hạn, bạn có thể ánh xạ các thành phố cho dân số của họ với
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
01:

Trong mã này, bạn đang tạo

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
01 trên dòng đầu tiên. Đối số đầu tiên là một mảng ô của các mảng ký tự với tên thành phố. Chúng được gọi là các phím của bản đồ. Đối số thứ hai là một loạt các quần thể. Chúng được gọi là các giá trị của bản đồ. Sau đó, bạn đang truy cập giá trị của dân số ở Cleveland bằng cách lập chỉ mục bản đồ bằng một mảng ký tự.

Bạn có thể gán các giá trị mới vào bản đồ bằng cách gán cho giá trị khóa không xác định:

Nếu bạn cố gắng truy cập khóa không tồn tại, bạn sẽ nhận được thông báo lỗi:

Python có cấu trúc dữ liệu tương đương gọi là từ điển. Để tạo từ điển Python, bạn có thể sử dụng niềng răng xoăn và chỉ định các phím và giá trị với nhau:traceback. You can read about how to interpret the traceback in Understanding Python Tracebacks. Understanding tracebacks is very helpful to interpret and correct Python exceptions in general. There are a few specific cases that usually have the same resolution. You’ll see those described in the rest of this section.

Trong mã này, trên dòng đầu vào 1, bạn đang tạo từ điển của các thành phố bằng cách sử dụng niềng răng xoăn. Lưu ý rằng khóa và giá trị được chỉ định với nhau, cách nhau bởi một dấu hai chấm. Các giá trị được chỉ định với
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
97 trong các số, một tính năng có sẵn kể từ Python 3.6. Điều này không thay đổi giá trị của số, nó chỉ giúp đọc các số rất lớn hơn. Sau đó, bạn đang truy cập giá trị tại khóa
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
05 bằng dấu ngoặc vuông, tương tự như cú pháp lập chỉ mục cho danh sách và mảng.

Bạn có thể thêm các khóa mới vào từ điển bằng cách gán cho chúng:

Lỗi cú pháp

Python

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
14 Ngoại lệ có nghĩa là bạn có nhập một số cú pháp không đúng. Điều này thường được gây ra bởi các khung không khớp, khi bạn chỉ có khung mở hoặc khung đóng nhưng không phải là phù hợp. Những ngoại lệ này thường chỉ vào dòng sau nơi đặt vấn đề.

Một

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
14 phổ biến khác chỉ sử dụng một dấu bằng trong câu lệnh
In [2]: import antigravity
77. Trong trường hợp này, bạn có nghĩa là không bình đẳng (
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
17) hoặc bằng (
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
18), do đó bạn có thể sửa dòng. Để biết thêm về các ngoại lệ
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
14, hãy xem cú pháp không hợp lệ trong Python: Lý do phổ biến cho cú pháp.

KeyError

Python

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
07 Các ngoại lệ xảy ra khi bạn cố gắng truy cập khóa trong một từ điển không tồn tại. Bạn có thể sử dụng
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
21 để truy xuất khóa từ từ điển nếu nó tồn tại hoặc trả về giá trị mặc định nếu khóa không tồn tại. Bạn có thể đọc thêm về các ngoại lệ
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
07 trong các ngoại lệ của Python KeyError và cách xử lý chúng.

IndexError

Python

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
23 Các ngoại lệ xảy ra khi bạn đang cố gắng truy cập chỉ mục của một mảng hoặc danh sách không tồn tại. Điều này thường có nghĩa là mảng hoặc danh sách bạn đang cố gắng truy cập có ít phần tử hơn chỉ mục bạn đang cố gắng truy cập. Bạn có thể sử dụng các tính năng gỡ lỗi và trình thám hiểm biến trong Spyder để xem kích thước của danh sách và mảng và đảm bảo rằng bạn chỉ truy cập các chỉ số tồn tại.

ImportError/ModuleNotFoundError

Python

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
24 và
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
25 xuất hiện khi bạn cố gắng nhập một mô -đun mà Python không thể tìm thấy. Điều này có thể là do nó được cài đặt trong môi trường
In [2]: import antigravity
22 khác hoặc
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
27 hoặc có thể là do bạn quên cài đặt gói.

Giải pháp cho lỗi này thường là

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
28 hoặc
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
29 gói và đảm bảo môi trường chính xác được kích hoạt. Nếu bạn không sử dụng môi trường
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
30 trong
In [2]: import antigravity
22, bạn cũng cần đảm bảo cài đặt Spyder hoặc Jupyter vào môi trường của bạn.

TypeError/ValueError

Python

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42 Các ngoại lệ xảy ra khi một đối số thuộc loại sai. Điều này xảy ra phổ biến nhất khi bạn chuyển một đối số của loại sai vào một hàm. Chẳng hạn, một hàm hoạt động với các số sẽ tăng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42 nếu một chuỗi được truyền vào.

Một ngoại lệ liên quan là

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
96. Ngoại lệ này xảy ra khi một đối số thuộc loại chính xác, nhưng có giá trị không chính xác. Chẳng hạn, một hàm chỉ hoạt động với các số dương sẽ tăng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
96 nếu một số âm được truyền vào.

Thuộc tính

Python

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
96 Các ngoại lệ xảy ra khi bạn cố gắng truy cập một thuộc tính của một đối tượng khi đối tượng không có thuộc tính đó. Bạn sẽ thường thấy lỗi này được liên kết với thông báo
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
37. Thông điệp này rất có thể có nghĩa là một hàm đã trả về
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
82 thay vì đối tượng bạn đang mong đợi và bạn đang cố gắng truy cập một thuộc tính sẽ có trên đối tượng thực, nhưng không được xác định cho
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
82.

Cách xử lý các ngoại lệ trong Python

MATLAB cho phép bạn

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
40 một câu lệnh về mã và
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
41 Bất kỳ lỗi nào được đưa ra bởi mã. Khi bạn đã bị lỗi, bạn có thể xử lý thêm lỗi và gán các biến dựa trên loại lỗi. Tài liệu MATLAB có một số ví dụ tốt về cách này sẽ trông như thế nào trong MATLAB.

Trong Python, một sự khác biệt lớn từ Matlab là bạn có thể chọn chỉ bắt được một số loại ngoại lệ nhất định và xử lý chúng. Điều này cho phép tất cả các ngoại lệ khác tiếp tục được hiển thị cho người dùng. Nếu bạn muốn tìm hiểu thêm về cách thực hiện việc này trong Python, bạn có thể đọc khối

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
40 và
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
43: Xử lý các ngoại lệ.

Để xem cách thức hoạt động của nó, bạn có thể thử ví dụ sau:

>>>

In [2]: import antigravity
21

Trong mã này, trên dòng đầu vào 1, bạn đang nhập thư viện

In [2]: import antigravity
73 tích hợp. Sau đó, bắt đầu trên dòng đầu vào 2, bạn đang xác định một hàm gọi là
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
45 sẽ lấy một đối số, được gọi là
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
46. Bên trong định nghĩa chức năng, trước tiên bạn in đối số mà người dùng đã vượt qua.

Tiếp theo, bạn nhập khối ________ 840/________ 843. Đầu tiên, bạn cố gắng lấy căn bậc hai của đối số đầu vào và trả về kết quả. Nếu lấy căn bậc hai của đối số dẫn đến một lỗi, Python sẽ bắt được lỗi đó và kiểm tra loại lỗi nào được nêu ra.

Bạn đã xác định mã xử lý hai ngoại lệ cụ thể:

11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
96 và
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42. Nếu
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 tăng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
96, mã của bạn sẽ in một thông báo mà số không thể được vận hành. Nếu
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 tăng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42, mã của bạn sẽ in một thông báo rằng đối số không phải là số. Nếu bất kỳ loại ngoại lệ nào khác được tăng lên bởi
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71, lỗi đó sẽ được truyền qua mà không cần xử lý, vì không có trình xử lý cho bất kỳ loại lỗi nào khác.

Cụ thể hơn, Python kiểm tra mọi lỗi được đưa ra bởi mã trong khối

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
40. Trong trường hợp của bạn, bạn chỉ xác định một dòng mã trong khối
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
40, nhưng điều này không bắt buộc và bạn có thể có nhiều dòng tùy thích ở đó. Tuy nhiên, thường là một thông lệ tốt để giảm thiểu số lượng dòng mã trong khối
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
40 để bạn có thể rất cụ thể về mã nào đang nêu ra bất kỳ lỗi nào.

Trên dòng đầu vào 3, bạn đang thử nghiệm

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
45. Đầu tiên, bạn chuyển giá trị 4.0 cho hàm. Hàm in đối số và
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 không có vấn đề gì khi lấy căn bậc hai là 4, dẫn đến 2.0 trên dòng đầu ra.

Trên dòng đầu vào 4, bạn đang chuyển -1.0 làm đối số cho

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
45. Như bạn có thể nhớ lại, lấy căn bậc hai của số âm dẫn đến một số phức, mà hàm
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 không được trang bị để xử lý. Lấy căn bậc hai của một số âm bằng cách sử dụng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 tăng
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
96. Bạn có thể xử lý ngoại lệ này
11# %% This is a code cell
12var_7 = 42
13var_8 = var_7 * 2
14
15# %% This is a second code cell
16print("This code will be executed in this cell")
96 và in thông báo rằng số không thể được vận hành.

Trên dòng đầu vào 5, bạn đang chuyển

 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
66 làm đối số cho
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
45. Trong trường hợp này,
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 không biết cách lấy căn bậc hai của một chuỗi, mặc dù chuỗi đó dường như đại diện cho một số. Bạn có thể thấy rằng bạn đã vượt qua một chuỗi bằng các trích dẫn trong câu lệnh đưa ra giá trị của đối số:
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
69. Vì
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
71 không thể lấy căn bậc hai của một chuỗi, nên nó tăng
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
42 và chức năng của bạn in thông báo rằng đối số không phải là một số.

Có một hướng dẫn chính thức để viết mã tốt trong Python

Cộng đồng Python đã phát triển một bộ khuyến nghị về cách tạo kiểu mã Python của bạn. Chúng được mã hóa trong một tài liệu gọi là PEP 8, viết tắt của đề xuất tăng cường Python số 8. PEP 8 có thể được tìm thấy đầy đủ trên trang web Python. Bạn cũng có thể tìm hiểu thêm về phong cách Python tốt trong cách viết mã Python tuyệt đẹp với PEP 8 và thành ngữ Python 101.

Có lẽ nguyên tắc quan trọng nhất trong PEP 8 là câu nói rằng sự nhất quán ngu ngốc là hobgoblin của tâm trí nhỏ bé. Điều này có nghĩa là bạn nên làm theo các khuyến nghị trong PEP 8 cho hầu hết tất cả các mã của bạn, nhưng có thể có một số trường hợp hạn chế trong đó nên không tuân theo các khuyến nghị của PEP 8. Chẳng hạn, nếu bạn đang làm việc với một cơ sở mã hiện có có phong cách riêng, bạn nên theo phong cách đó, nơi nó phân kỳ từ PEP 8. Bạn có thể thấy một cuộc thảo luận tuyệt vời về nguyên tắc này từ Raymond Hettinger, một trong những nhà phát triển Python cốt lõi, trong Một cuộc nói chuyện từ Pycon 2015.

Ngoài việc đọc PEP 8, bạn có thể sử dụng một vài gói Python để tự động đảm bảo rằng mã của bạn phù hợp với hướng dẫn kiểu. Flake8 là một mã linter đọc mã của bạn và đưa ra đề xuất về cách bạn có thể cải thiện nó. Điều này tương tự như tính năng trong Trình chỉnh sửa mã MATLAB đưa ra các đề xuất cải tiến. Ngoài ra, các gói như Black, YAPF và Autopep8 sẽ tự động định dạng mã của bạn để tuân thủ PEP 8 hoặc các quy tắc phong cách của riêng bạn. Sử dụng các gói này có thể giúp mã của bạn cảm thấy pythonic hơn và giúp bạn tìm hiểu phong cách Python tốt!

Python có một cộng đồng tuyệt vời và hỗ trợ

Python được biết đến vì có một cộng đồng rất hỗ trợ, cởi mở và chào đón. Cho dù bạn là một nhà phát triển hoàn toàn mới hay một nhà phát triển có kinh nghiệm, cho dù bạn có thương hiệu mới với Python hay đã tham gia hàng tá hội nghị, cộng đồng có mặt để hỗ trợ bạn và những gì bạn muốn làm.

Cộng đồng bắt đầu với Chỉ số gói Python (được gọi là Pypi hoặc The Cheeseshop, một tham chiếu đến bản phác thảo Monty Python), nơi chứa hàng trăm ngàn gói Python khác nhau mà bạn có thể tải xuống miễn phí. Các gói này có thể được cài đặt bằng

In [2]: import antigravity
25, một trình quản lý gói đi kèm với Python. Điều này có nghĩa là việc thêm chức năng bạn cần để Python có thể đơn giản như
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
73 hoặc nếu bạn sử dụng Anaconda,
 1num = 10;
 2
 3if num == 10
 4    disp("num is equal to 10")
 5else
 6    disp("num is not equal to 10")
 7end
 8
 9disp("I am now outside the if block")
74.

Vì Python được sử dụng trong rất nhiều lĩnh vực phát triển phần mềm, khoa học dữ liệu, khoa học và kỹ thuật khác nhau, luôn có những người xung quanh muốn nói về Python. Hầu hết các thành phố lớn trên thế giới đều có các nhóm gặp Python. Bạn có thể đến các nhóm này để tìm hiểu về Python bằng cách nghe mọi người nói về công việc của họ hoặc làm việc trên một số mã nguồn mở.

Một vài lần một năm, các nhóm này hợp nhất thành các pycons khác nhau xảy ra trên mọi châu lục trên toàn cầu. Pycon Bắc Mỹ là lớn nhất trong số này, với hàng ngàn người tham dự mỗi năm. Bạn có thể đọc tất cả về những gì nó muốn tham dự trong cách tận dụng tối đa Pycon.

Python cũng có một cộng đồng trực tuyến rất mạnh. Nếu bạn có một câu hỏi về lập trình trong Python, bạn có thể hỏi về Stackoverflow và một số chuyên gia Python hàng đầu thế giới sẽ có thể giúp bạn. Hãy chắc chắn làm theo các hướng dẫn về cách đặt câu hỏi về Stackoverflow. Hãy nhớ rằng bạn càng nỗ lực vào câu hỏi của mình, bạn càng có nhiều khả năng tự tìm câu trả lời (hooray!) Hoặc nhận được câu trả lời tốt từ người khác.

Nếu bạn muốn theo dõi cùng với sự phát triển của Python, bạn có thể đăng ký một trong những danh sách gửi thư bao gồm các khía cạnh khác nhau của cộng đồng Python. Danh sách gửi thư chung để đặt câu hỏi về các chương trình viết trong Python được gọi là comp.lang.python. Nếu bạn quan tâm đến sự phát triển của chính Python, bạn có thể theo danh sách gửi thư Python-Dev.

Nếu bạn quan tâm đến việc tìm hiểu nhiều, nhiều hơn về sự phát triển của Python, bạn có thể kiểm tra các con đường học tập Python thực sự!

Các khu vực mà bạn vẫn nên sử dụng MATLAB®

Mặc dù cộng đồng tuyệt vời và các gói tuyệt vời, vẫn có một hoặc hai lĩnh vực mà Matlab hoạt động tốt hơn Python. Nơi chính mà Python có thể cạnh tranh với MATLAB là hộp công cụ Simulink. Hộp công cụ này cung cấp các khả năng nâng cao để xử lý tín hiệu và mô hình hóa trong giao diện đồ họa tiện lợi.

Python không có giao diện đồ họa tương đương với các loại chức năng này. Tuy nhiên, trong phạm vi Simulink là giao diện thuận tiện cho các bộ giải phương trình vi phân thông thường, Python có các bộ giải tương đương như trong MATLAB và chức năng cơ bản của Simulink chắc chắn có thể được nhân rộng trong Python.

Nếu không, bạn có thể làm bất cứ điều gì trong Python mà bạn có thể làm trong MATLAB! Nếu bạn có thể nghĩ ra công việc mà bạn có thể làm với Matlab, nhưng bạn không chắc chắn làm thế nào để làm điều đó trong Python, hãy cho chúng tôi biết trong các bình luận và chúng tôi sẽ có thể giúp đỡ với các đề xuất.

Sự kết luận

Xin chúc mừng, bây giờ bạn có kiến ​​thức bạn cần để chuyển mã MATLAB của mình sang Python! Trong bài viết này, bạn đã học được một chút về Python là gì, làm thế nào để thiết lập máy tính của bạn để sử dụng Python và cách chuyển đổi mã của bạn từ Matlab sang Python.

Python là một ngôn ngữ và cộng đồng thực sự lớn, với rất nhiều điều để học hỏi và rất nhiều người để học hỏi. Hãy nhớ rằng, bạn là một chuyên gia MATLAB ngay lần đầu tiên bạn mở môi trường phát triển Matlab, và điều tương tự cũng đúng về lần đầu tiên bạn viết một số mã Python. Quay trở lại bài viết này thường xuyên như bạn cần cải thiện kỹ năng của mình và tìm hiểu thêm về việc trở thành Trình hướng dẫn Python!

Đọc thêm

Có rất nhiều tài nguyên trên web bao gồm sự khác biệt trong Matlab vs Python. Dưới đây là một vài tài nguyên mà tôi thấy hữu ích khi chuyển từ Matlab sang Python:

  • Hội thảo trên web: Python cho người dùng MATLAB, những gì bạn cần biết (video)
  • Matlab to python whitepaper
  • Matlab vs Julia vs Python
  • Tám lợi thế của Python so với Matlab
  • 10 lý do Python Rocks cho nghiên cứu (và một vài lý do nó không có)

Matlab có liên quan đến Python không?

MATLAB® cung cấp tích hợp hai chiều linh hoạt với nhiều ngôn ngữ lập trình, bao gồm cả Python. Điều này cho phép các nhóm khác nhau làm việc cùng nhau và sử dụng các thuật toán MATLAB trong các hệ thống phần mềm sản xuất và CNTT.® provides a flexible, two-way integration with many programming languages, including Python. This allows different teams to work together and use MATLAB algorithms within production software and IT systems.

Có phải Matlab chỉ là Python?

Như bạn sẽ thấy trong bài viết này, Python có tất cả sức mạnh tính toán của MATLAB cho các nhiệm vụ khoa học và giúp việc phát triển các ứng dụng mạnh mẽ và dễ dàng.Tuy nhiên, có một số khác biệt quan trọng khi so sánh MATLAB vs Python mà bạn sẽ cần tìm hiểu về việc chuyển đổi hiệu quả.Python has all of the computational power of MATLAB for science tasks and makes it fast and easy to develop robust applications. However, there are some important differences when comparing MATLAB vs Python that you'll need to learn about to effectively switch over.

Matlab dựa trên cái gì?

Nó dựa trên Fortran, nó không phải là một ngôn ngữ lập trình đặc biệt mạnh mẽ và nó không đại diện cho công việc nghiên cứu hiện tại trong phân tích số.Nửa còn lại của các sinh viên là từ kỹ thuật, và họ thích Matlab.Fortran, it was not a particularly powerful programming language, and it did not represent current research work in numerical analysis. The other half of the students were from engineering, and they liked MATLAB.

Tốt hơn là học Matlab hay Python?

Phần này có một câu trả lời dễ dàng: Python là người chiến thắng trước Matlab.Python có hàng tấn thư viện và gói cho cả mô hình học máy trường học cũ và trường học mới.Thêm vào đó, Python là ngôn ngữ được sử dụng rộng rãi nhất cho nghiên cứu máy học hiện đại trong ngành công nghiệp và học viện.Python is the winner over Matlab. Python has tons of libraries and packages for both old school and new school machine learning models. Plus, Python is the most widely used language for modern machine learning research in industry and academia.