Hướng dẫn can python do everything matlab does? - python có thể làm mọi thứ mà matlab làm không?

Python là gì?

Python là một ngôn ngữ lập trình đa năng với một bộ sưu tập các thư viện rộng lớn được sử dụng cho một loạt các ứng dụng, bao gồm phát triển web, phát triển ứng dụng doanh nghiệp và khoa học dữ liệu. & NBSP;

Show

Matlab là gì?

MATLAB là một nền tảng điện toán được sử dụng cho các ứng dụng kỹ thuật và khoa học như phân tích dữ liệu, xử lý tín hiệu và hình ảnh, hệ thống điều khiển, truyền thông không dây và robot. MATLAB bao gồm ngôn ngữ lập trình, ứng dụng tương tác, thư viện chuyên dụng cao cho các ứng dụng kỹ thuật và các công cụ để tự động tạo mã nhúng. MATLAB cũng là nền tảng cho Simulink, một môi trường sơ đồ khối để mô phỏng các hệ thống đa miền phức tạp.

So sánh ngôn ngữ

Ngôn ngữ của Python và Matlab có thể được sử dụng tương tác (một lệnh duy nhất tại một thời điểm) hoặc để phát triển các ứng dụng quy mô lớn. Cả hai ngôn ngữ đều hỗ trợ lập trình kịch bản, thủ tục và hướng đối tượng.

Python đã thay thế phần lớn Java là ngôn ngữ đầu tiên cho những người muốn học cách lập trình vì nó dễ học và có thể được sử dụng cho các nhiệm vụ lập trình khác nhau. Ngôn ngữ MATLAB là ngôn ngữ lập trình đầu tiên (và thường chỉ) cho nhiều kỹ sư và nhà khoa học vì định hướng toán học và mảng ma trận của ngôn ngữ giúp bạn dễ dàng học và áp dụng cho việc giải quyết vấn đề khoa học và kỹ thuật. Ứng dụng và các công cụ tương tác khác tự động tạo mã MATLAB, tiếp tục giảm rào cản gia nhập.

Cơ sở người dùng

Cả Python và Matlab đều có cơ sở người dùng lớn, mặc dù cơ sở người dùng cho MATLAB chủ yếu bao gồm các kỹ sư và nhà khoa học. Kể từ tháng 5 năm 2022, các tìm kiếm LinkedIn trả lại khoảng 7,6 triệu người dùng Python và 4,1 triệu người dùng MATLAB. Những người không làm việc trong kỹ thuật hoặc khoa học thường ngạc nhiên khi biết được Matlab được áp dụng rộng rãi như thế nào, bao gồm:

  • Hàng triệu người dùng trong các trường cao đẳng và đại học
  • Hàng ngàn công ty khởi nghiệp
  • Hàng ngàn người ở mọi công ty và tổ chức lớn nơi các kỹ sư và nhà khoa học làm việc, như Apple, Google, Airbus, Tesla và Quỹ Tiền tệ Quốc tế

Hỗ trợ và tài liệu

Stack Overflow và các trang web tương tự là cơ chế hỗ trợ chính cho hầu hết người dùng Python. Với rất nhiều người dùng trên toàn thế giới, thật dễ dàng để tìm hoặc bắt đầu một cuộc thảo luận trực tuyến có thể giúp trả lời bất kỳ câu hỏi nào. Tài liệu có sẵn thông qua tài liệu và các trang web riêng lẻ cho Python và hầu hết các thư viện.

Giấy phép MATLAB bao gồm hỗ trợ trực tiếp miễn phí, vì vậy người dùng có thể nhận điện thoại hoặc gửi email để nhận trợ giúp từ chuyên gia MATLAB về dự án cụ thể của họ. Công nghệ cho ứng dụng, nghiên cứu hoặc giảng dạy của họ. & NBSP; MATLAB Trả lời cung cấp một câu hỏi trực tuyến và diễn đàn trả lời cụ thể cho MATLAB, tương tự như Stack Overflow. MATLAB bao gồm một hệ thống tài liệu tích hợp kết hợp tài liệu được tác giả chuyên nghiệp cho tất cả các sản phẩm MATLAB và SIMULINK, trợ giúp cho các gói tác giả của người dùng và các tài nguyên trực tuyến bổ sung như câu trả lời và video của MATLAB.

Phí tổn

Các thư viện Python và hầu hết các thư viện Python đều miễn phí để tải xuống hoặc sử dụng, mặc dù nhiều người dùng sử dụng Python thông qua một dịch vụ trả phí. Các dịch vụ trả phí giúp các tổ chức CNTT quản lý các rủi ro liên quan đến việc sử dụng phần mềm nguồn mở, như bảo mật, cấp phép và kiểm soát truy cập. Các dịch vụ trả phí cũng cung cấp quyền truy cập vào các phân phối được đóng gói hoặc lưu trữ để loại bỏ phần lớn nỗi đau khi định cấu hình cài đặt Python với các phiên bản tương thích của các thư viện.

MATLAB không miễn phí, mặc dù nó dễ tiếp cận hơn và chi phí thấp hơn mọi người giả định. Khoảng 8 triệu người có quyền truy cập không giới hạn vào MATLAB thông qua trường học, tổ chức nghiên cứu hoặc chủ lao động của họ, bao gồm cả các trường đại học trên toàn thế giới cấp bằng kỹ thuật và khoa học. Các tổ chức chọn đầu tư vào MATLAB vì họ nhận ra giá trị của năng suất tăng lên từ việc cung cấp cho các kỹ sư và nhà khoa học của họ các công cụ được xây dựng có mục đích.

Matlab và Pythonand Python

Mặc dù hầu hết mọi người bắt đầu bằng cách hỏi liệu họ nên chọn Matlab hay Python, câu trả lời đúng thường là sử dụng & nbsp; Matlab và Python cùng nhau. Với Matlab và Python, bạn có thể tận dụng các khả năng tốt nhất của mỗi môi trường. Ví dụ, bạn có thể:MATLAB and Python together. With MATLAB and Python, you can take advantage of the best capabilities of each environment. For instance, you can:

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ả.

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 can python do everything matlab does? - python có thể làm mọi thứ mà matlab làm 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 can python do everything matlab does? - python có thể làm mọi thứ mà matlab làm 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 can python do everything matlab does? - python có thể làm mọi thứ mà matlab làm 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

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 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

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.

  1. 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ó:

  2. 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

Hướng dẫn can python do everything matlab does? - python có thể làm mọi thứ mà matlab làm khô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:

  1. 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.
    shows the name that you gave to
    In [2]: import antigravity
    
    36,
    In [2]: import antigravity
    
    37, and
    In [2]: import antigravity
    
    38.
  2. Có hai điều chính để bạn chú ý trong các lệnh này: shows the Python type of the variable, in this case, all
    In [2]: import antigravity
    
    53 for integer numbers.
  3. 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.
    shows the size of the data stored variable, which is more useful for lists and other data structures.
  4. 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. shows the current value of the variable.

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:

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

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.

 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 can python do everything matlab does? - python có thể làm mọi thứ mà matlab làm 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 can python do everything matlab does? - python có thể làm mọi thứ mà matlab làm 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 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.

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, 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.

Chỉ số đầu tiên trong một chuỗi là 0 trong Python

Trong MATLAB, bạn có thể nhận được giá trị đầu tiên từ một mảng bằng cách 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
59 làm chỉ mục. Phong cách này theo quy ước đánh số tự nhiên và bắt đầu cách bạn đếm số lượng mục trong chuỗi. Bạn có thể thử sự khác biệt của Matlab vs Python với ví dụ này:

>>>

In [2]: import antigravity
5

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
6

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.

Chỉ số đầu tiên trong một chuỗi là 0 trong Python

Trong MATLAB, bạn có thể nhận được giá trị đầu tiên từ một mảng bằng cách 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
59 làm chỉ mục. Phong cách này theo quy ước đánh số tự nhiên và bắt đầu cách bạn đếm số lượng mục trong chuỗi. Bạn có thể 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ạo một mảng với 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ử đầu tiên với 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
59, đó 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
60. Cố gắng truy cập phần tử Zeroth dẫn đến một lỗi trong MATLAB, như được hiển thị trên hai dòng cuối cùng.

>>>

In [2]: import antigravity
7

Trong Python, chỉ số của phần tử đầu tiên trong một chuỗi là 0, không phải 1:

Trong mã này, bạn đang xác đị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
55 là 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ử thứ nhất của danh sách, có chỉ mục 0. Sau đó bạn đang hiển thị phần thứ hai Phần tử của danh sách, có chỉ số 1.

>>>

In [2]: import antigravity
8

Trên các dòng đầu vào 4, 5 và 6, bạn đang xác đị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
66 với nội dung
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
67 và sau đó nhận các phần tử thứ nhất và thứ hai của chuỗi. Lưu ý rằng phần tử thứ hai (ký tự) của chuỗi là một không gian. Điều này cho thấy một tính năng Python chung, rằng nhiều loại biến hoạt động như các chuỗi và có thể được lập chỉ mục, bao gồm danh sách, bộ dữ liệu, chuỗi và mảng.

Yếu tố cuối cùng của chuỗi có chỉ 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
68 trong Python

>>>

In [2]: import antigravity
9

Trong MATLAB, bạn có thể nhận được giá trị cuối cùng từ một mảng bằng cách sử dụng

In [2]: import antigravity
80 làm chỉ mục. Điều này thực sự hữu ích khi bạn không biết một mảng là bao lâu, vì vậy bạn không biết số nào để truy cập giá trị cuối cùng.

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

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.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.

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.

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:

>>>

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 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

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ũ.

>>>

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 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.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 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
2

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

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.

Python sườ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
00 sẽ hiển thị bất kỳ số lượng đối số nào được truyền cho nó, tách chúng bằng một không gian trong đầu ra. Điều này khá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
01 trong MATLAB, chỉ có một đối số, mặc dù đối số đó có thể là một mảng có nhiều giá trị. Ví dụ sau đây cho thấy cách 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 có thể lấy bất kỳ số lượng đối số nào và mỗi đối số được phân tách bằng một không gian trong đầu ra:

>>>

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, các dòng đầu vào 1, 2 và 3 xác định

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
05,
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
06 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
07, trong đó
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
05 và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
05 là số nguyên và
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
07 là một chuỗi văn bản. Trên dòng đầu vào 4, bạn đang in ba biế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
00. Đầu ra bên dưới dòng này Giá trị của ba biến được hiển thị trong đầu ra bảng điều khiển, được phân tách bằng khoảng trắng.

Bạn có thể kiểm soát bộ phân cách được sử dụng trong đầu ra giữa các đối số thà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
00 bằng cách sử dụng đối số từ khóa
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
13:

>>>

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 mã này, bạn đang in ba biến tương tự nhưng đặt dấu phân cách là dấu chấm phẩy theo sau là một không gian. Trình phân tách này được in giữa các đối số thứ nhất và thứ hai và thứ hai và thứ ba, nhưng không phải sau đối số thứ ba. Để kiểm soát ký tự được in sau giá trị cuối cùng, bạn có thể sử dụng đối số từ khóa

In [2]: import antigravity
80 thà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
00:

>>>

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 đượ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:

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:

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).

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

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.

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

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:

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.

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, trước tiên bạn tạo hai biến

In [2]: import antigravity
36 và
In [2]: import antigravity
37 lưu trữ các giá trị bạn muốn thêm vào nhau. Sau đó, trên dòng đầu vào 4, bạn gán
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
43 cho kết quả được trả về từ
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
44. Trên dòng đầu vào 5, bạn đang xuất ra giá trị của
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
43 vào màn hình bảng điều khiển. Điều này hiển thị 30, tổng 10 và 20.

Trong Python, nếu bạn không đặt câu lệnh

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
27 một cách rõ ràng, chức năng của bạn sẽ ngầm trả lại giá trị đặc biệt
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
82. Bạn nên thay đổi định nghĩa Python của bạn về
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
44 để xem cách thức hoạt động của nó. Trong bảng điều khiển Spyder/Ipython, nhập như sau:

  1. Trong mã này, bạn có cùng dòng
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    26 trên dòng đầu vào 6. Bạn đã thay đổi dòng tiếp tục đầu tiên để gán kết quả của việc bổ sung vào
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    31 thay vì trả về. Bây giờ bạn sẽ thấy những gì xảy ra khi chúng ta thực hiện chức năng đã sửa đổi này:
  2. Trong mã này, trên dòng đầu vào 7, bạn đang gán
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    43 là giá trị được trả về từ
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    44. Sau đó, trên dòng đầu vào 8, bạn đang hiển thị giá trị của
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    43 trên màn hình bảng điều khiển, giống như trước đây. Lần này mặc dù, không có đầu ra! Theo mặc định, Python không có gì khi nó xuất ra một biến có giá trị là
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    82. Bạn có thể kiểm tra lại giá trị của biến
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    43 bằng cách xem biến Explorer biến. Trong cột loại, nó nên liệt kê
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    91, cho bạn biết rằng
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    43 là giá trị
     1# -*- coding: utf-8 -*-
     2"""
     3Spyder Editor
     4
     5This is a temporary script file.
     6"""
    
    82 đặc biệt.
  3. Chức năng chấp nhận đối số từ vị trí và từ khóa trong Python

Trong MATLAB, các chức năng có các đối số đầu vào được chỉ định trên dòng đầu tiên, theo định nghĩa

 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
28. Khi bạn gọi một hàm trong MATLAB, bạn có thể chuyển từ số 0 đến số lượng đối số được chỉ định. Trong phần thân của hàm, bạn có thể kiểm tra số lượng đối số đầu vào mà người gọi thực sự được truyền để thực thi mã khác nhau. Điều này rất hữu ích khi bạn muốn các đối số khác nhau có ý nghĩa khác nhau, như trong ví dụ dưới đây:

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.

>>>

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

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

>>>

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

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.

>>>

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

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.

>>>

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

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.

  1. 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:
  2. Ý 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.
  3. 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.
  4. 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.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.

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

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

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.

Đối số thứ ba,

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15, có giá trị mặc định được gán cho nó bằng cách chỉ định một giá trị sau một dấu hiệu trong định nghĩa hàm. Điều này có nghĩa là khi hàm được gọi, việc truyền giá trị cho
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 là tùy chọn. Nếu không có giá trị nào được thông qua, mặc định như được xác định trong dòng định nghĩa hàm sẽ được sử dụng. Trong trường hợp này, giá trị mặc định là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
20.

Trong phần thân của hàm, bạn đang kiểm tra giá trị của

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 với câu lệnh
In [2]: import antigravity
77 để xác định xem có nên thực hiện thêm hay trừ hay không. Nếu
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
24,
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34 sẽ bị trừ từ
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33. Mặt khác, nếu
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
20, thì
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
33 sẽ được thêm vào
 1# -*- coding: utf-8 -*-
 2"""
 3Spyder Editor
 4
 5This is a temporary script file.
 6"""
34. Trong cả hai trường hợp, kết quả của hoạt động số học sẽ được trả lại cho người gọi.

Ngoài hai loại đối số bạn có thể sử dụng khi xác định hàm, có hai loại đối số bạn có thể chỉ định khi gọi hàm. Chúng được gọi là đối số vị trí và từ khóa. Bạn có thể thấy sự khác biệt giữa những điều này trong ví dụ sau. Đầu tiên, hãy thử chỉ chuyển hai đối số cho hàm: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 chỉ chuyển hai đối số cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12,
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 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
61. Trong trường hợp này, bạn đã vượt qua các giá trị này dưới dạng đối số vị trí và ý nghĩa của các đối số được xác định bởi vị trí của chúng trong lệnh gọi hàm.

Vì chỉ có hai đối số được yêu cầu được thông qua,

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 sẽ nhận được giá trị mặc định, đó là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
20. Do đó, 10 và 20 sẽ được thêm vào với nhau, mà bạn có thể thấy trên dòng đầu ra. Tiếp theo, hãy thử chuyển giá trị cho
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15:

>>>

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

Trong mã này, bạn chỉ chuyển hai đối số cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12,
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 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
61. Trong trường hợp này, bạn đã vượt qua các giá trị này dưới dạng đối số vị trí và ý nghĩa của các đối số được xác định bởi vị trí của chúng trong lệnh gọi hàm.

Vì chỉ có hai đối số được yêu cầu được thông qua,

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 sẽ nhận được giá trị mặc định, đó là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
20. Do đó, 10 và 20 sẽ được thêm vào với nhau, mà bạn có thể thấy trên dòng đầu ra. Tiếp theo, hãy thử chuyển giá trị cho
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15:

>>>

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

Trong mã này, bạn chỉ chuyển hai đối số cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12,
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 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
61. Trong trường hợp này, bạn đã vượt qua các giá trị này dưới dạng đối số vị trí và ý nghĩa của các đối số được xác định bởi vị trí của chúng trong lệnh gọi hàm.

Vì chỉ có hai đối số được yêu cầu được thông qua,

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 sẽ nhận được giá trị mặc định, đó là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
20. Do đó, 10 và 20 sẽ được thêm vào với nhau, mà bạn có thể thấy trên dòng đầu ra. Tiếp theo, hãy thử chuyển giá trị cho
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15: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 hai đối số cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12,
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 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
61. Trong trường hợp này, bạn đã vượt qua các giá trị này dưới dạng đối số vị trí và ý nghĩa của các đối số được xác định bởi vị trí của chúng trong lệnh gọi hàm.

Vì chỉ có hai đối số được yêu cầu được thông qua,

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15 sẽ nhận được giá trị mặc định, đó là
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
20. Do đó, 10 và 20 sẽ được thêm vào với nhau, mà bạn có thể thấy trên dòng đầu ra. Tiếp theo, hãy thử chuyển giá trị cho
 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
15:

>>>

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

Trong mã này, bạn chỉ chuyển hai đối số cho

 8var_4 = 10
 9var_5 = 20
10var_6 = var_4 + var_5
12,
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 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
61. Trong trường hợp này, bạn đã vượt qua các giá trị này dưới dạng đối số vị trí và ý nghĩa của các đối số được xác định bởi vị trí của chúng trong lệnh gọi hàm.

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:

>>>

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

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:

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

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.

Cú pháp này là một so sánh thú vị của Matlab vs Python vì Python không có cú pháp tương tự. Thay vào đó, bạn nên sử dụng khối ________ 177/____ 233/________ 184:

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

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
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. Trên một số dòng tiếp theo, bạn đang viết một khối ________ 177/________ 233/________ 184 để kiểm tra các giá trị khác nhau mà bạn quan tâm.

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 được tìm thấy trong một phạm vi duy nhất. MATLAB có một thứ tự tìm kiếm xác định để tìm các chức năng trong phạm vi hiện tại. Nếu bạn xác định chức năng của riêng mình cho một cái gì đó mà Matlab đã bao gồm, bạn có thể có được hành vi bất ngờ.

Như bạn đã thấy trong Zen of Python, không gian tên là một ý tưởng tuyệt vời. Không gian tên là một cách để cung cấp các phạm vi khác nhau cho tên của các hàm, lớp và biến. Điều này có nghĩa là bạn phải nói với Python thư viện nào có chức năng bạn muốn sử dụng. Đây là một điều tốt, đặc biệt là trong trường hợp nhiều thư viện cung cấp cùng một chức năng.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.

Chẳng hạn, thư viện

In [2]: import antigravity
73 tích hợp cung cấp chức năng gốc, cũng như thư viện Numpy nâng cao hơn. Nếu không có không gian tên, sẽ khó khăn hơn khi nói Python nào chức năng gốc mà bạn muốn sử dụng.

Để 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, 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:

  1. 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.

  2. 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

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:

>>>

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

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.

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:

>>>

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

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.

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:

>>>

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

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.

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.

>>>

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

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.

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:

>>>

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

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.

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:

>>>

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

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.

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:

>>>

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 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ể.

Bạn có thể đọc thêm về

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
10 trong cách sử dụng các hàm Python Lambda hoặc xem các video trong cách sử dụng khóa học chức năng Python Lambda.

Bạn sẽ chỉ cần những điều này trong các tình huống chuyên ngành

Trong phần này, các ví dụ là các khái niệm nâng cao hơn mà bạn sẽ cần khi bạn trở nên tiên tiến hơn trong phát triển Python. Một số ví dụ ở đây đối phó với việc phát triển các ứng dụng hoặc mã cấp cao hơn các phần khác. Khi bạn nhìn thấy các khái niệm này trong mã khác, bạn có thể đào sâu vào chúng khi bạn cảm thấy thoải mái.

Định nghĩa lớp bắt đầu với
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
47 trong Python

MATLAB có hai cách để xác định một lớp. Với cách đầu tiên, bạn có thể đặt tất cả các định nghĩa lớp trong một tệp duy nhất có tên của lớp làm tên tệp. Sau đó, trong tệp, bạn có thể sử dụng từ khóa

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
48 để xác định các thuộc tính và phương thức thuộc về lớp.

Với cách thứ hai, bạn có thể tạo một thư mục bắt đầu bằng

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
11 và có cùng tên với lớp. Trong thư mục đó, bạn có thể tạo một tệp duy nhất có cùng tên với lớp. Định nghĩa chức năng trong tệp đó sẽ được sử dụng làm trình khởi tạo lớp và nó sẽ gọi
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
50 để khởi tạo lớp. Các phương thức của lớp có thể được xác định trong các tệp khác trong cùng một thư mục, trong đó tên của mỗi tệp phải giống như tên của phương thức.

Python chỉ có một cách để xác định một lớp, sử dụng từ khóa

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
47. Vì Python sử dụng thụt vào để tìm phần cuối của định nghĩa lớp, toàn bộ định nghĩa phải được chứa trong một tệp duy 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")
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 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:

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.

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, bạn đang nhập thư viện Numpy trên dòng đầu vào 1 và gán nó cho chữ viết tắt

 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ột
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 numpy với 2 phần tử chuỗi,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 và
In [2]: import antigravity
72 và gán mảng cho
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.

Trên dòng đầu vào 3, bạn đang hiển thị giá trị 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. Đầu ra từ dòng thứ ba cho thấ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
55 đang lưu trữ một
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 có 2 phần tử,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
91 và
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
92, như mong đợi. Lưu ý rằng mặc dù bạn đã xác định mảng với các chuỗi trích dẫn kép, Python đang hiển thị chúng với các chuỗi truy vấn đơn. Hãy nhớ rằng không có sự khác biệt giữa trích dẫn đơn và đôi trong Python.

Dòng đầu ra 3 cũng hiển thị DTYPE của dữ liệu trong mảng. Đối với mảng này, DTYPE là

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
93. Ba ký tự ở đây đại diện cho các khía cạnh của cách các chuỗi được sắp xếp trong bộ nhớ.
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
94 có nghĩa là thứ tự byte của mảng là Little Endian.
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
95 có nghĩa là chuỗi thuộc loại Unicode. Cuối cùng,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
96 có nghĩa là độ dài tối đa của một phần tử là 6 ký tự. Điều này được chọn làm chiều dài của chuỗi dài nhất trong đầu vào.

Lưu ý rằng chuỗi

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 chỉ có 4 ký tự. Trong các mảng DTYPE chuỗi Numpy, các phần tử có thể có ít hơn số lượng ký tự tối đa mà không có vấn đề, nhưng việc gán cho các phần tử có các chuỗi dài hơn độ dài tối đa sẽ cắt giảm đầu vào:

>>>

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, bạn đang nhập thư viện Numpy trên dòng đầu vào 1 và gán nó cho chữ viết tắt

 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ột
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 numpy với 2 phần tử chuỗi,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 và
In [2]: import antigravity
72 và gán mảng cho
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.

Trên dòng đầu vào 3, bạn đang hiển thị giá trị 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. Đầu ra từ dòng thứ ba cho thấ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
55 đang lưu trữ một
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 có 2 phần tử,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
91 và
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
92, như mong đợi. Lưu ý rằng mặc dù bạn đã xác định mảng với các chuỗi trích dẫn kép, Python đang hiển thị chúng với các chuỗi truy vấn đơn. Hãy nhớ rằng không có sự khác biệt giữa trích dẫn đơn và đôi trong Python.

>>>

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, bạn đang nhập thư viện Numpy trên dòng đầu vào 1 và gán nó cho chữ viết tắt

 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ột
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 numpy với 2 phần tử chuỗi,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 và
In [2]: import antigravity
72 và gán mảng cho
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.

>>>

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, bạn đang nhập thư viện Numpy trên dòng đầu vào 1 và gán nó cho chữ viết tắt

 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ột
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 numpy với 2 phần tử chuỗi,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 và
In [2]: import antigravity
72 và gán mảng cho
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.

Trên dòng đầu vào 3, bạn đang hiển thị giá trị 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. Đầu ra từ dòng thứ ba cho thấ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
55 đang lưu trữ một
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 có 2 phần tử,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
91 và
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
92, như mong đợi. Lưu ý rằng mặc dù bạn đã xác định mảng với các chuỗi trích dẫn kép, Python đang hiển thị chúng với các chuỗi truy vấn đơn. Hãy nhớ rằng không có sự khác biệt giữa trích dẫn đơn và đôi trong Python.

>>>

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, bạn đang nhập thư viện Numpy trên dòng đầu vào 1 và gán nó cho chữ viết tắt

 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ột
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 numpy với 2 phần tử chuỗi,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 và
In [2]: import antigravity
72 và gán mảng cho
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.

Trên dòng đầu vào 3, bạn đang hiển thị giá trị 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. Đầu ra từ dòng thứ ba cho thấ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
55 đang lưu trữ một
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
84 có 2 phần tử,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
91 và
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
92, như mong đợi. Lưu ý rằng mặc dù bạn đã xác định mảng với các chuỗi trích dẫn kép, Python đang hiển thị chúng với các chuỗi truy vấn đơn. Hãy nhớ rằng không có sự khác biệt giữa trích dẫn đơn và đôi trong Python.

Dòng đầu ra 3 cũng hiển thị DTYPE của dữ liệu trong mảng. Đối với mảng này, DTYPE là

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
93. Ba ký tự ở đây đại diện cho các khía cạnh của cách các chuỗi được sắp xếp trong bộ nhớ.
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
94 có nghĩa là thứ tự byte của mảng là Little Endian.
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
95 có nghĩa là chuỗi thuộc loại Unicode. Cuối cùng,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
96 có nghĩa là độ dài tối đa của một phần tử là 6 ký tự. Điều này được chọn làm chiều dài của chuỗi dài nhất trong đầu vào.

Lưu ý rằng chuỗi

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
72 chỉ có 4 ký tự. Trong các mảng DTYPE chuỗi Numpy, các phần tử có thể có ít hơn số lượng ký tự tối đa mà không có vấn đề, nhưng việc gán cho các phần tử có các chuỗi dài hơn độ dài tối đa sẽ cắt giảm đầu vào:

Trong mã này, bạn đang cố gắng gán lại phần tử đầu tiên của mảng với chuỗi

In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
98. Rõ ràng, chuỗi này dài hơn 6 ký tự, vì vậy nó bị cắt xuống chỉ còn 6 khi nó được gán,
In [7]: runfile('C:/Users/Eleanor/.spyder-py3/temp.py',
   ...:         wdir='C:/Users/Eleanor/.spyder-py3')
99. (Không gian được tính là 1 ký tự.)

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, 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:

  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
  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

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.

Khi bạn chuyển đổi từ MATLAB, 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ó vẻ quen thuộc hơn. Nó cung cấp hành vi tương tự mà bạn có thể được sử dụng từ MATLAB về cú pháp hoạt động. Tuy nhiên, Numpy khuyên bạn nên sử dụng 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")
24 vì nó linh hoạt hơn và 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")
25 cuối cùng sẽ bị loại bỏ.

Trong phần còn lại của phần này, bạn sẽ biết được sự khác biệt chính giữa mảng MATLAB và numpy. Bạn có thể đi sâu về cách sử dụng các mảng numpy bằng cách đọc Look Ma, không có vòng lặp: Lập trình mảng với Numpy.

Các nhà khai thác toán học cơ bản làm việc yếu tố khôn ngoan

Matlab, với di sản của nó như một ngôn ngữ kịch bản ma trận, giả định rằng tất cả các toán tử số học sẽ hoạt động trên các mảng. Do đó, MATLAB coi sự nhân của ma trận hoặc vectơ là phép nhân ma trận. Xem xét ví dụ nà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")
1

Trong mã này, bạn đang tạo hai ma trận 1x3,

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. Sau đó, bạn đang cố gắng nhân chúng lại với nhau. Đối với các mảng 1XN này, điều này tương đương với việc lấy sản phẩm DOT hoặc Scalar. Tuy nhiên, sản phẩm vô hướng chỉ hoạt động khi toán hạng bên trái là 1XN và bên phải là NX1, do đó MATLAB tạo ra một thông báo lỗi và gợi ý toán tử DOT-Star (
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")
33) là cú pháp thích hợp để nhân phần yếu tố yếu 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")
2

Trong mã này, bạn đang thực hiện phép nhân 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 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. Điều này nhân lên phần tử đầu tiên 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ới phần tử đầu tiên 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 (
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")
38), thứ hai với thứ hai (
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")
39) và thứ ba với thứ ba (
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")
40).

Để 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, 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:

>>>

 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, 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.

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:

Ở đâ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")
6

Trong mã này, bạn đang tạo hai vectơ:

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. Các mảng có giá trị trong một chiều chỉ được gọi là vectơ.
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à một vectơ hàng vì các phần tử được sắp xếp thành một hàng và ba cột, 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")
01 là một vectơ cột vì các phần tử được sắp xếp theo ba hàng và một cột. Trong MATLAB, các phần tử được đưa vào các cột khác nhau bằng cách tách chúng bằng dấu phẩy trong gán và các phần tử được đặt thành các hàng khác nhau bằng cách tách chúng bằng một dấu chấm phẩy.

Sau đó, bạn đang kiểm tra sự bình đẳng của 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")
31 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 và bạn thấy rằng tất cả các phần tử đều bằng nhau và kết quả là một vectơ cột của các giá trị logic. Cuối cùng, bạn đang kiểm tra sự bình đẳng của 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 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à bạn thấy rằng tất cả các phần tử đều bằng nhau và kết quả là một vectơ hàng của các giá trị logic.

Bạn có thể thấy rằng trong MATLAB, ngay cả các vectơ cũng có hai chiều liên quan đến chúng: hàng và cột. Khi chuyển vị được thực hiện, các hàng được chuyển đổi với các cột và hình dạng của mảng được thay đổi. Điều này có nghĩa là có hai loại vectơ trong MATLAB: vectơ hàng và vectơ cộ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.

Trong Numpy, có ba loại mảng hoặc vectơ một chiều. Mặc định là một vectơ phần tử N chỉ có một chiều. Điều này khác với mặc định trong MATLAB, trong đó mọi mảng có ít nhất 2 chiều. Vectơ một chiều này trong Numpy không có ý nghĩa về các hàng và cột, vì đối với cấu trúc một chiều, nói chung, các phần tử được lưu trữ trong các hàng hay trong các cột không quan trọng.

Bạn có thể thấy một ví dụ về việc tạo loại mảng này trong ví dụ sau. Trong một vài ví dụ tiếp theo, có thêm không gian được thêm vào trước và sau dấu ngoặc đơn để làm rõ cú pháp. Những không gian này thường không được coi là phong cách Python tốt, nhưng chúng là trong ví dụ để giúp bạn thấy những gì đang diễn ra:

>>>

 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, 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:

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:

>>>

 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 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.

>>>

 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

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
 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, 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.

>>>

 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

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.

>>>

 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

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:

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.

>>>

 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

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:

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:

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ố:

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 đạ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")
9

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:

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:

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.

 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

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:

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.

>>>

 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 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    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 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:

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    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 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:

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:

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 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")
6

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")
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")
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")
8

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:

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:

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")
9

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:

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:

>>>

In [2]: import antigravity
00

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:

>>>

In [2]: import antigravity
01

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:

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:

>>>

In [2]: import antigravity
02

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:

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:

>>>

In [2]: import antigravity
03

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ự.

>>>

In [2]: import antigravity
04

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

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, 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: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 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:

>>>

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:

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:

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

In [2]: import antigravity
09

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ọ.Enter to insert a new line, you can type the whole script on one line.

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 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

Phao

 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")
90

>>>

In [2]: import antigravity
12

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
13

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ố:

In [2]: import antigravity
14

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
59list comprehensions that you can learn about in Using List Comprehensions Effectively.

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

Phao

 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")
90

>>>

In [2]: import antigravity
15

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ự.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.

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:

>>>

In [2]: import antigravity
16

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:

>>>

In [2]: import antigravity
17

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: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, 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:

>>>

In [2]: import antigravity
19

Trong mã này, bạn đã chỉ định khóa 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")
06 cho từ điển với giá trị 180.393. Nếu bạn cố gắng truy cập một khóa không có trong từ điển, bạn sẽ nhận đượ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")
07:

>>>

In [2]: import antigravity
20

Trong mã này, bạn đang cố gắng truy cập từ điển bằng 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")
08. Tuy nhiên, khóa này không tồn tại trong từ điển, vì vậy Python tă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")
07 cho bạn biết rằ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")
08 không phải là một lựa chọn.

Bạn có thể đọc thêm về từ điển Python trong từ điển trong Python 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")
07 ngoại lệ trong các trường hợp ngoại lệ của Python Keyerror và cách xử lý chúng. Bạn cũng có thể lặp lại thông qua từ điển và sử dụng toàn bộ từ điển, tương tự như các toàn bộ danh sách. Bạn có thể đọc về các chủ đề này trong cách lặp lại thông qua một từ điển trong Python.

Ngoại lệ giúp bạn kiểm soát luồng chương trình trong Python

Cả Matlab và Python đều sử dụng các lỗi và ngoại lệ để cho bạn biết khi có điều gì đó không ổn trong mã. Trong phần này, bạn sẽ tìm hiểu về các trường hợp ngoại lệ phổ biến trong Python và cách bạn có thể xử lý chúng một cách thích hợp.

Nếu bạn muốn giới thiệu về các ngoại lệ Python nói chung, bạn có thể đọc các ngoại lệ Python: Giới thiệu. Khi một ngoại lệ python được nâng lên, nó sẽ tạo ra một dấu vết. Bạn có thể đọc về cách diễn giải Traceback trong việc hiểu Python Tracebacks. Hiểu theo dõi là rất hữu ích để giải thích và chính xác các ngoại lệ Python nói chung. Có một vài trường hợp cụ thể thường có cùng độ phân giải. Bạn có thể thấy những người được mô tả trong phần còn lại của phần này.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.

NAMEERROR

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")
12 Các ngoại lệ thường là kết quả của một biến không được xác định. Khi bạn thấ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")
12, hãy kiểm tra mã của bạn để biết lỗi và tên biến sai chính tả. 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 để tìm ra biến nào được xác định.

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ó)

Python có mạnh mẽ như Matlab không?

MATLAB có khả năng tính toán toán học rất mạnh, Python rất khó thực hiện. Python không có hỗ trợ ma trận, nhưng thư viện Numpy có thể đạt được. MATLAB đặc biệt tốt trong việc xử lý tín hiệu, xử lý hình ảnh, trong đó Python không mạnh và hiệu suất cũng tồi tệ hơn nhiều.. Python has no matrix support, but the NumPy library can be achieved. MATLAB is particularly good at signal processing, image processing, in which Python is not strong, and performance is also much worse.

Matlab hay Python có hữu ích hơn không?

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.

Matlab có cấp độ cao hơn Python không?

Thư viện.Thư viện của Matlab tiến bộ hơn Python vì nó bao gồm đại số ma trận và thư viện rộng rãi để xử lý và vẽ dữ liệu, nhưng nó không có nhiều chức năng lập trình chung như Python.MATLAB's library is more advanced than python because it includes matrix algebra and an extensive library for data processing and plotting, but it does not have as much generic programming functionality as Python.

Python sẽ thay thế Matlab?

Python có thể thay thế Matlab Python là miễn phí và có sẵn trên mọi nền tảng và do đó có tính di động cao.Mặc dù Python không được dự định là một sự thay thế miễn phí cho MATLAB, nhưng nó thực sự rất phù hợp cho vai trò này.Nhiều người đã thực hiện thành công việc chuyển đổi từ Matlab sang Python. Python is free and available on every platform and therefore is highly portable. Although Python was not intended as a free alternative to MATLAB, it's actually well suited for this role. Many people have successfully made the switch from MATLAB to Python.