Lý do tại sao tôi chọn PHP là số lượng nội dung bạn có thể dễ dàng tìm thấy trên internet. Như bạn đã trích dẫn là người mới bắt đầu, tôi nghĩ một ngôn ngữ trưởng thành hơn sẽ tốt hơn. Và đó cũng là một lý do khác để theo đuổi PHP
Python đơn giản và "trưởng thành", nhưng có thể hơi khó hiểu nếu bạn là người mới bắt đầu. Python dựa trên sự trừu tượng nặng nề và đó là lý do đằng sau sự đơn giản của nó. Python là một ngôn ngữ "dễ chơi, khó thành thạo", tôi không bao giờ khuyên dùng nó cho người mới bắt đầu. Ngoài ra, một lý do [có thể là cá nhân] khiến tôi không thích sử dụng Python làm back-end là. Python rất tập trung vào dữ liệu. Vì vậy, nếu ứng dụng của bạn tập trung vào logic nghiệp vụ, Python sẽ không phù hợp lắm. Và điều đó trở thành một lợi thế, nếu ứng dụng của bạn tập trung vào thống kê, tập trung vào dữ liệu hoặc thứ gì đó tương tự, thì Python có lợi thế rất lớn so với tất cả các ngôn ngữ khác do có nhiều công cụ tuyệt vời mà cộng đồng đã xây dựng
Về Node, nó giống như PHP, nhưng kém hoàn thiện hơn. Thật dễ dàng như PHP để tìm các công cụ có thể giúp bạn, ví dụ, trừu tượng hóa logic của kết nối cơ sở dữ liệu. Nhưng để tìm nội dung tập trung vào kiến trúc, khái niệm cao cấp hơn thì khó hơn rất nhiều. Trong khi đó, cộng đồng của Laravel chẳng hạn, có rất nhiều tài liệu liên quan đến các khái niệm đó
Tuy nhiên, nếu bạn thực sự là người mới bắt đầu, tôi không khuyên bạn nên sử dụng Laravel với PHP. Trước tiên hãy làm mọi thứ trên PHP đơn giản, hiểu lý do đằng sau việc sử dụng các khung và động lực của Laravel
Hai phần trước cho thấy IPython cho phép bạn sử dụng và khám phá Python một cách hiệu quả và tương tác như thế nào. Ở đây chúng ta sẽ bắt đầu thảo luận về một số cải tiến mà IPython thêm vào trên cú pháp Python thông thường. Chúng được biết đến trong IPython dưới dạng các lệnh ma thuật và có tiền tố là ký tự
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax3. Các lệnh ma thuật này được thiết kế để giải quyết ngắn gọn các vấn đề phổ biến khác nhau trong phân tích dữ liệu tiêu chuẩn. Lệnh ma thuật có hai hương vị. phép thuật dòng, được biểu thị bằng một tiền tố
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax3 duy nhất và hoạt động trên một dòng đầu vào và phép thuật ô, được biểu thị bằng tiền tố
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax5 kép và hoạt động trên nhiều dòng đầu vào. Chúng ta sẽ chứng minh và thảo luận về một số ví dụ ngắn gọn ở đây và quay lại thảo luận tập trung hơn về một số lệnh ma thuật hữu ích ở phần sau của chương này
Dán khối mã. In [2]: >>> def donothing[x]:
...: ... return x
...:
File "", line 2
... return x
^
SyntaxError: invalid syntax
6 và In [2]: >>> def donothing[x]:
...: ... return x
...:
File "", line 2
... return x
^
SyntaxError: invalid syntax
7
Khi làm việc trong trình thông dịch IPython, một vấn đề phổ biến là việc dán các khối mã nhiều dòng có thể dẫn đến các lỗi không mong muốn, đặc biệt là khi có liên quan đến dấu thụt lề và trình thông dịch. Một trường hợp phổ biến là bạn tìm thấy một số mã ví dụ trên một trang web và muốn dán mã đó vào trình thông dịch của mình. Xét hàm đơn giản sau
>>> def donothing[x]: ... return x
Mã được định dạng như nó sẽ xuất hiện trong trình thông dịch Python và nếu bạn sao chép và dán trực tiếp mã này vào IPython, bạn sẽ gặp lỗi
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax
Khi dán trực tiếp, trình thông dịch bị nhầm lẫn bởi các ký tự dấu nhắc bổ sung. Nhưng đừng bao giờ sợ—Chức năng ma thuật
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax6 của IPython được thiết kế để xử lý chính xác loại đầu vào nhiều dòng, được đánh dấu này
________số 8
Lệnh
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax6 vừa nhập vừa thực thi mã, vì vậy bây giờ hàm đã sẵn sàng để sử dụng
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax0
Một lệnh có mục đích tương tự là
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax7, lệnh này sẽ mở ra một lời nhắc nhiều dòng tương tác, trong đó bạn có thể dán một hoặc nhiều đoạn mã để thực thi theo lô
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax2
Những lệnh kỳ diệu này, giống như những lệnh khác mà chúng ta sẽ thấy, tạo ra chức năng khả dụng mà trình thông dịch Python tiêu chuẩn khó hoặc không thể thực hiện được
Chạy mã bên ngoài. In [3]: %paste
>>> def donothing[x]:
... return x
## -- End pasted text --
1
Khi bạn bắt đầu phát triển mã mở rộng hơn, bạn có thể thấy mình đang làm việc trong cả IPython để khám phá tương tác, cũng như trình soạn thảo văn bản để lưu trữ mã mà bạn muốn sử dụng lại. Thay vì chạy mã này trong một cửa sổ mới, có thể thuận tiện để chạy nó trong phiên IPython của bạn. Điều này có thể được thực hiện với phép thuật
In [3]: %paste >>> def donothing[x]: ... return x ## -- End pasted text --1
Ví dụ: hãy tưởng tượng bạn đã tạo một tệp
In [3]: %paste >>> def donothing[x]: ... return x ## -- End pasted text --3 với nội dung sau
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax6
Bạn có thể thực hiện điều này từ phiên IPython của mình như sau
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax7
Cũng lưu ý rằng sau khi bạn chạy tập lệnh này, mọi chức năng được xác định bên trong tập lệnh đều có sẵn để sử dụng trong phiên IPython của bạn
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax8
Có một số tùy chọn để tinh chỉnh cách chạy mã của bạn;
Thời gian thực thi mã. In [3]: %paste
>>> def donothing[x]:
... return x
## -- End pasted text --
5
Một ví dụ khác về hàm ma thuật hữu ích là
In [3]: %paste >>> def donothing[x]: ... return x ## -- End pasted text --5, hàm này sẽ tự động xác định thời gian thực hiện của câu lệnh Python một dòng theo sau nó. Ví dụ: chúng tôi có thể muốn kiểm tra hiệu suất của việc hiểu danh sách
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax2
Lợi ích của
In [3]: %paste >>> def donothing[x]: ... return x ## -- End pasted text --5 là đối với các lệnh ngắn, nó sẽ tự động thực hiện nhiều lần chạy để đạt được kết quả mạnh mẽ hơn. Đối với các câu lệnh nhiều dòng, việc thêm dấu
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax3 thứ hai sẽ biến điều này thành một phép thuật ô có thể xử lý nhiều dòng đầu vào. Ví dụ: đây là cấu trúc tương đương với vòng lặp
In [3]: %paste >>> def donothing[x]: ... return x ## -- End pasted text --9
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax6
Chúng ta có thể thấy ngay rằng việc hiểu danh sách nhanh hơn khoảng 10% so với cấu trúc vòng lặp
In [3]: %paste >>> def donothing[x]: ... return x ## -- End pasted text --9 tương đương trong trường hợp này. Chúng ta sẽ khám phá
In [3]: %paste >>> def donothing[x]: ... return x ## -- End pasted text --5 và các cách tiếp cận khác đối với mã định thời và lập hồ sơ trong Mã lập hồ sơ và định thời
Trợ giúp về Chức năng ma thuật. In [2]: >>> def donothing[x]:
...: ... return x
...:
File "", line 2
... return x
^
SyntaxError: invalid syntax
02, In [2]: >>> def donothing[x]:
...: ... return x
...:
File "", line 2
... return x
^
SyntaxError: invalid syntax
03 và In [2]: >>> def donothing[x]:
...: ... return x
...:
File "", line 2
... return x
^
SyntaxError: invalid syntax
04
Giống như các hàm Python thông thường, các hàm ma thuật IPython có các tài liệu và tài liệu hữu ích này có thể được truy cập theo cách tiêu chuẩn. Vì vậy, ví dụ, để đọc tài liệu về phép thuật
In [3]: %paste >>> def donothing[x]: ... return x ## -- End pasted text --5, chỉ cần gõ cái này
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax0
Tài liệu cho các chức năng khác có thể được truy cập tương tự. Để truy cập mô tả chung về các chức năng ma thuật có sẵn, bao gồm một số ví dụ, bạn có thể nhập
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax1
Để có danh sách nhanh chóng và đơn giản về tất cả các chức năng ma thuật có sẵn, hãy nhập cái này
In [2]: >>> def donothing[x]: ...: ... return x ...: File "", line 2 ... return x ^ SyntaxError: invalid syntax2
Cuối cùng, tôi sẽ đề cập rằng việc xác định các chức năng ma thuật của riêng bạn là khá đơn giản nếu bạn muốn. Chúng tôi sẽ không thảo luận về nó ở đây, nhưng nếu bạn quan tâm, hãy xem các tài liệu tham khảo được liệt kê trong Tài nguyên IPython khác