Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Whitespace chỉ có nghĩa là các ký tự được sử dụng cho khoảng cách và có biểu diễn "trống". Trong bối cảnh của Python, nó có nghĩa là các tab và không gian (có lẽ nó cũng bao gồm các không gian Unicode kỳ lạ, nhưng không sử dụng chúng). Tài liệu tham khảo dứt khoát là ở đây: http://docs.python.org/2/reference/lexical_analysis.html#indentation

Tôi không chắc chính xác làm thế nào để sử dụng nó.

Đặt nó ở phía trước của dòng bạn muốn thụt vào. Nếu bạn trộn không gian và tab, bạn có thể sẽ thấy kết quả vui nhộn, vì vậy hãy gắn bó với cái này hay cái kia. (Cộng đồng Python thường tuân theo phong cách PEP8, quy định thụt lề của bốn không gian).

Bạn cần tạo một cấp độ thụt mới sau mỗi đại tràng:

for x in range(0, 50):
    print x
    print 2*x

print x

Trong mã này, hai câu lệnh

  do_stuff
  while(some_condition):
    do_stuff
8 đầu tiên là "bên trong" phần thân của câu lệnh
  do_stuff
  while(some_condition):
    do_stuff
9 vì chúng được thụt vào nhiều hơn dòng chứa
  do_stuff
  while(some_condition):
    do_stuff
9.
  do_stuff
  while(some_condition):
    do_stuff
8 thứ ba ở bên ngoài vì nó được thụt vào ít hơn dòng (Nonblank) trước đó.

Nếu bạn không thụt đầu vào/không tin tưởng, bạn sẽ gặp lỗi thụt lề. Ngoài ra, tất cả các câu lệnh ghép (tức là những người có đại tràng) có thể có cơ thể được cung cấp trên cùng một dòng, do đó không cần thụt vào, nhưng cơ thể phải được cấu tạo từ một câu lệnh.

Cuối cùng, một số tuyên bố nhất định, như

  int main() {
  }
2 có một dấu hai chấm, nhưng không thể có một khối đa dòng làm cơ thể.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Khi các lập trình viên thảo luận về Python trên web, điều này xuất hiện hết lần này đến lần khác. Tôi đồng ý với bạn - đó là một điểm trừ đối với tôi về việc sử dụng Python. Có những "giải pháp", có những người nói rằng bạn đã quen với nó, có những người nói rằng điều đó không quan trọng, nhưng nó xuất hiện hết lần này đến lần khác. Tôi đoán nó không quan trọng, với một số người trong chúng ta ít nhất.

Tôi có thể mở một trình soạn thảo văn bản và bắt đầu viết c, hoặc java, hoặc perl, hoặc php - tất cả mà không cần suy nghĩ nhiều về khoảng trắng, vết lõm, v.v. Mã tôi đã đánh ra trông đẹp và gọn gàng. Đôi khi tôi cảm thấy muốn tự làm bài hát đẹp trong khi mã hóa, đôi khi tôi không và để các kịch bản làm điều đó. Với Python "có một cách để làm điều đó" và bạn phải suy nghĩ về thụt lề trong khi mã hóa. Điều đó thật phiền phức. Nó giống như Java và ngoại lệ, buộc tôi phải đặt các vòng thử thử/bắt ở khắp mọi nơi và làm hỏng phạm vi của tôi - ngay cả đối với một chương trình nguyên mẫu nhỏ sẽ được chạy một lần và sẽ không bao giờ cần phải nắm bắt ngoại lệ. Nó đang đối xử với tôi như tôi là một thằng ngốc và buộc tôi phải làm việc một cách trung đoàn.

Khi tôi lần đầu tiên biết Python, tại một thời điểm, tôi đã quyết định đặt một vòng/trong khi vòng lặp trong chương trình của mình. Tôi đã không thể khám phá làm thế nào điều này được thực hiện trong tài liệu. Tôi đi trên IRC #Python và tôi nói rằng Python không có vòng lặp trong khi tôi xác nhận là đúng). Tôi đã nói, và tôi cho rằng nguồn tin biết nhiều hơn tôi, rằng điều này là do hệ thống thụt lề. Một điều khó khăn được thực hiện là kết quả của một điều khó khăn khác.

Có rất nhiều điều tốt đẹp về Python. Mã sạch sẽ và dễ hiểu. Đôi khi nó cho phép bạn thực hiện trong 2-3 dòng những gì có thể mất 10 dòng trong một ngôn ngữ khác. Và như thế. Nhưng một số lập trình viên cảm thấy các khía cạnh nhất định của nó là những nhược điểm, và những điều này không dễ bị loại bỏ. Nếu là họ, họ sẽ không được đưa lên nhiều lần.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Không, đó thực sự là thế này:

  do_stuff
  while(some_condition):
    do_stuff
Lợi thế của DO/trong khi trong tình huống này là tránh mã trùng lặp.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Ý kiến ​​về Python sang một bên, tôi không bao giờ thuê ai đó nói điều gì đó như thế trong một cuộc phỏng vấn, thậm chí về một ngôn ngữ tôi không thích. Bạn thực sự nên nhìn qua các chi tiết nhỏ nhặt khi đánh giá bất kỳ công nghệ nào và đưa ra các lập luận thực tế.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Thực sự, tại sao? Bạn sẽ không thuê một người có "sở thích thẩm mỹ ngôn ngữ", mặc dù hơi khác mà những người chính thống? Anh ấy nói "ngăn cản tôi vì đã từng thích Python" không "Tôi sẽ không bao giờ chạm vào nó vì điều này".

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Điều này thực sự giống như nói, "Tôi sẽ không làm việc cho Company X vì tôi không nghĩ rằng các dấu ngoặc trong mã C ++ nên nằm trên dòng sau [1]!"

[1] ví dụ:

  int main() {
  }
vs .________ 3 Đây là một sự tương tự apt vì hầu hết các công ty sẽ có một số loại hướng dẫn kiểu mã mà bạn phải làm theo, điều này không tạo ra "mã hóa tại Công ty X nơi đặt vị trí khung được thực thi" khác nhiều so với "mã hóa trong Python nơi Whitespace được thi hành. "

Tôi vẫn chưa bắt gặp một người có lòng căm thù nghiêm trọng của Python do khoảng trắng đáng kể là một lập trình viên mà tôi tôn trọng. Người cuối cùng mà tôi biết (người có lòng căm thù nội tạng của Python Whitespace) đã viết mã Perl như thế này:

  sub func1 { shift->func2(shift)->func3(@_) }
Or
  sub func1 { grep { $_[0]->func2($_) } $_[0]->func3() }
Lưu ý: Đây là các mẫu mã theo nghĩa đen với tên hàm đã thay đổi.

Tôi không biết bất kỳ lập trình viên Perl nào sẽ tha thứ cho loại mã này. Đó là một cơn ác mộng bảo trì, đặc biệt là vì đây không phải là trường hợp một lần. Dường như với tôi rằng những người có lòng căm thù trong việc xử lý khoảng trắng của Python không thích 'bị ràng buộc' bởi ngôn ngữ của họ, và có lẽ hạnh phúc hơn với Ruby hoặc Perl.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Trên thực tế, nói rằng bạn sẽ không bao giờ thích một chi tiết nhất định về ngôn ngữ không giống như nói rằng bạn sẽ không bao giờ làm việc cho Công ty X vì chi tiết cụ thể đó. Đó không phải là một kết luận hợp lý, trừ khi bạn ngụ ý rằng để một người làm việc cho người khác, bạn thực sự cần phải thích mọi thứ về công việc trong tay. Tôi thấy không có lý do tại sao bạn không thể làm điều gì đó vì tiền mà bạn sẽ không làm cho niềm vui cá nhân của bạn.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Có một số vấn đề với khoảng trắng trong Python.

Tôi đã viết một số mã với nhiều chức năng không tên làm tham số đầu vào (nghĩ kiểu javascript hoặc khối ruby), tất nhiên là một nỗi đau xấu xí đối với Port to Python không có lambdas đa dòng.

Danh sách toàn diện là một ví dụ khác - một KLudge đến từ việc thiếu nhiều hướng dẫn Lambdas dừng các chức năng bản đồ thực. (Phần thú vị là sự cần thiết này được quảng cáo là một thứ gì đó tốt, thay vì thừa nhận rằng nó là sự phức tạp không cần thiết để học.)

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Tôi đã sử dụng cả Perl và Python. Khi sử dụng Perl, tôi sử dụng các hàm ẩn danh mọi lúc. Khi viết Python, tôi không. Có những trường hợp trong Perl tôi sẽ sử dụng hàm ẩn danh, nhưng trong Python tôi xác định một hàm cục bộ là một lần tham chiếu. Mỗi ngôn ngữ có phong cách riêng.

Nếu bạn đang cố gắng chiến đấu với phong cách của ngôn ngữ, thì rõ ràng bạn sẽ gặp phải ma sát. Tôi chắc chắn có rất nhiều người đến từ C/C ++/Java nghĩ rằng các ngôn ngữ được xych tự động là không thể sử dụng vì loại không thể được thực thi tại 'thời điểm biên dịch'. Xác định chức năng ẩn danh so với chức năng cục bộ sử dụng một lần chủ yếu là vấn đề về phong cách/sở thích [1].

  | which of course was an ugly pain to port to Python with
  | no multi-line lambdas
Có hai điều bạn đang mô tả ở đây:

1) Thật là một nỗi đau khi đặt tên cho tất cả các khối ẩn danh này.

2) Ý tưởng đặt tên cho các khối là khó chịu / thẩm mỹ không hài lòng với bạn.

#1 chỉ là một phần của việc chuyển một cái gì đó giữa các ngôn ngữ khác nhau. Bạn cũng sẽ chạy vào các vấn đề chuyển mã JS và/hoặc Ruby cho Haskell, ngay cả với sự hỗ trợ cho Lambdas. #2 chỉ là ý kiến ​​/ sở thích cá nhân, ngay cả khi đó là một điều được chia sẻ bởi nhiều người.

  | (The fun part is that this necessity is touted as
  | something good, instead of admitting that it is
  | unnecessary complexity to learn.
Tôi có thể sử dụng cùng một đối số để điều khiển các ngôn ngữ được gõ tĩnh. "Một hệ thống loại chỉ là sự phức tạp không cần thiết để học."

.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

>> Mã Ruby cho Haskell

Uh ... mô hình khác nhau. Các ngôn ngữ kịch bản, mà chúng ta đang nói ở đây, thường rất giống nhau.

>> Tôi hoan nghênh các ví dụ về nơi các hàm ẩn danh không thể được thay thế bằng các chức năng cục bộ được truyền qua tham chiếu.

Tôi đã viết "không thể" ở đâu - tôi đã từ chối một số định lý máy Turing và quên nó? :-)

Trong trường hợp cụ thể này, đó là một cấu trúc dữ liệu khai báo với một số dữ liệu bên cạnh mã. Nó rất phù hợp để có một tá hoặc hai chức năng ngắn bên cạnh các cấu trúc dữ liệu.

Bạn có thể suy nghĩ lại toàn bộ và làm điều gì đó khác biệt trong Python để giữ cho nó có thể đọc được. Nhưng trong số các ngôn ngữ bình thường (trong cùng một mô hình), Python là người đàn ông kỳ quặc, chỉ vì thiếu các lambdas đa dòng.

(Tôi cũng đã đưa ra ví dụ về những ảnh hưởng xấu trên bản đồ, v.v.)

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

  | >>Ruby code to Haskell
  |
  | Uh... different paradigms. The scripting
  | languages, which we are talking about here,
  | are generally very similar.
Các ngôn ngữ khác nhau là khác nhau, bất kể chúng có bao nhiêu điểm tương đồng. Bạn sẽ chạy vào các vấn đề chuyển đổi giữa các ngôn ngữ. Mong đợi bất cứ điều gì khác đang thiết lập cho mình sự thất vọng.

C ++ và OBJC đều là 'dựa trên C', vì vậy cần có mã chuyển mã không có vấn đề giữa chúng, phải không? Pháp và Tây Ban Nha đều dựa trên tiếng Latin, vì vậy chúng thực tế là cùng một ngôn ngữ, phải không?

  | >> I welcome examples of where anonymous
  | >> functions are unable to be replaced by
  | >> local functions passed by reference.
  |
  | Where did I write "unable" -- did I disprove
  | some Turing machine theorem and forget about it?
  | :-)
Tiền kém về phía tôi .________ 10 1. Việc đưa các lambdas đa dòng vào ngôn ngữ là điều làm cho nó 'bình thường'? Điều này có vẻ giống như một ý kiến ​​cá nhân hơn bất cứ điều gì mục tiêu. Tôi có thể dễ dàng nói rằng Ruby là người kỳ quặc và perl/python là những ngôn ngữ 'bình thường', vì điều này: ____ 11 hoặc perl là người kỳ quặc và Ruby/Python là những ngôn ngữ 'bình thường' vì chúng có một gil.

2. Nếu giữ cấu trúc dữ liệu và các hàm cùng nhau là trường hợp sử dụng tốt nhất, thì có lẽ Python không phải là công cụ cho công việc. Giống như tôi sẽ không nói về việc Ruby crappy như thế nào vì nó không có scipy/numpy.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

>> Việc đưa các lambdas đa dòng vào một ngôn ngữ là điều làm cho nó 'bình thường'?

Tất cả các ngôn ngữ kịch bản đều rất, rất giống nhau (xem cấu trúc dữ liệu, v.v.).

Nói tóm lại, bạn không tranh luận chống lại quan điểm của tôi.

Quan điểm của tôi là Python dừng các lambdas đa dòng cho một số đối số tinh khiết kỳ lạ không gian trắng (tôi không tìm thấy bất kỳ động lực nào khác).

Điều này làm tổn thương khá nhiều trường hợp sử dụng (đối với lần thứ 2 - sao chép dán và thụt mã tự động ít nhất là phức tạp hơn, v.v. Sắp đến của Đấng Christ ...

Và việc không thể thừa nhận mụn cóc trên Python là khá điển hình - không phải Guido nói với các bạn hãy ngừng trolling gần đây, bởi vì bạn đã nhận được tiếng xấu ..?

>> hoặc Perl là người kỳ quặc và Ruby/Python là ngôn ngữ 'bình thường' vì chúng có Gil.

Cả ba đều giống nhau - tránh xâu chuỗi. :-(

Không phải nó có liên quan đến quan điểm ban đầu của tôi.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

> Cả ba đều giống nhau - tránh xâu chuỗi. :-(

Perl có được một đại diện xấu về việc chủ đề vì đó là các chủ đề không ánh xạ cho những gì nhiều người coi là điểm mạnh của các chủ đề, đó là các quá trình trọng lượng nhẹ. Perl thất bại một cách ngoạn mục về vấn đề đó, nhưng nếu bạn muốn lập trình đa quy trình với một bộ nguyên thủy tiêu chuẩn, được hiểu rõ cho IPC, thì nó thực sự khá đẹp. Đó là, mô-đun 'Chủ đề' không phải là tất cả, nhưng khi kết hợp với 'Chủ đề :: Chia sẻ', nó thực sự khá đẹp (miễn là bạn là những người lao động trước khi sinh hoặc không yêu cầu ).

Ví dụ, tôi thích cách khóa dựa trên phạm vi, điều này làm cho những điều sau đây có thể:

  do_stuff
  while(some_condition):
    do_stuff
2 cũng như: ________ 13

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

> Có một số vấn đề với khoảng trắng trong Python.

> Tôi đã viết một số mã với nhiều chức năng không tên làm tham số đầu vào (nghĩ kiểu javascript hoặc khối ruby), tất nhiên là một nỗi đau xấu xí đối với Port to Python mà không có lambdas đa dòng.

Như NNQ chỉ ra ở nơi khác trong chủ đề này, điều này không liên quan gì đến khoảng trắng đáng kể. Python chỉ cho phép bạn có một biểu thức duy nhất trong cơ thể của một lambda, và từ những gì tôi đã đọc, lý do nó vẫn theo cách này là không khuyến khích sử dụng Lambda như một đối số để ánh xạ, gấp, bộ lọc và bạn bè. Đề xuất thông thường từ các lập trình viên Python là chỉ sử dụng hàm được đặt tên tại địa phương, được đặt tên là những gì tôi làm dù sao tôi làm bằng các ngôn ngữ như ML, bởi vì nó rõ ràng hơn.

Và dù sao đi nữa, chỉ vì khó có thể chuyển một số mã từ ngôn ngữ A đến ngôn ngữ B do một cái gì đó khác biệt về B không thực sự giống như một cú đánh hợp lệ đối với B.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Lập luận của tôi là thiếu các hàm ẩn danh thực sự (> 1) là một vấn đề trong một số kịch bản khá phổ biến và hữu ích.

Nếu bạn thực sự có thể cung cấp các tài liệu tham khảo tốt cho thấy điều này là sai, tôi rất quan tâm (như, tôi đoán, hầu hết người dùng Ruby).

. )

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Lập luận của tôi chỉ là nó không liên quan gì đến khoảng trắng đáng kể, đó là những gì bạn đã phàn nàn. Python có thể được thay đổi để có khoảng trắng không đáng kể nhưng vẫn giữ được lambda bị tê liệt của nó.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

>> lập luận của tôi chỉ là

Bạn đã đưa ra các khiếu nại cụ thể (liên quan đến các đề xuất MAP trong Python và không gian trắng không liên quan gì đến một Lambdas hướng dẫn). Tôi yêu cầu tài liệu tham khảo. Tôi cho rằng bạn không có?

Lưu ý rằng với không gian trắng đáng kể, một cú pháp có thể sử dụng cho các lambdas đa hướng dường như ... không tầm thường. Dường như với tôi như một vị trí của một người hâm mộ ngu ngốc khác thường. Nhưng một vài tài liệu tham khảo được tranh luận tốt, mà bạn thiếu, sẽ thay đổi suy nghĩ của tôi. Tôi không troll.

EDIT: Tôi cũng có thể lưu ý rằng NNG tham chiếu của bạn là một tài khoản Karma thấp, lập luận rằng một ngôn ngữ nguồn mở chổi cho đứa con tình yêu của mình đã chết-Troll chiến tranh ngôn ngữ điển hình. Đó có phải là tài liệu tham khảo duy nhất của bạn không?

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Tôi nên nghỉ ngơi tất cả các RIP này, nhưng tôi không thể giúp nó: tham khảo các lambdas đa dòng bằng các ngôn ngữ có cú pháp giống như Python: http://cobra-language.com/trac/cobra/wiki/anonmethod, http:/ /boo.codehaus.org/closures (yep, bạn đúng, có nhiều lần đóng trên một dòng với cú pháp quy tắc ngoại vi là "không tầm thường" và chưa có ai giải quyết được điều này, nhưng ngay cả một dòng sẽ đủ Làm cho bản đồ và gấp lại, và FTR, tôi muốn đấm Guido hoặc bất cứ ai khác có một câu nói trong thiết kế của ngôn ngữ vì không "ăn cắp" điều này và áp dụng nó vào Python - tôi nghĩ rằng có một pep dọc theo các dòng đã bị giết và chôn vùi, không thể tìm thấy nó bây giờ).

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

>> Tôi muốn đấm Guido hoặc bất cứ ai khác có một câu nói trong thiết kế của ngôn ngữ vì không "ăn cắp" điều này và áp dụng nó vào Python

Hãy thư giãn ... không có công cụ nào là hoàn hảo cho tất cả các tình huống. Nó luôn luôn là một giao dịch.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Bạn không có bình luận liên quan về những gì tôi đã viết, tôi lấy nó? Ở đây tôi đã yêu cầu tài liệu tham khảo về các yêu cầu của GP.

Ngoài ra, chào mừng bạn đến với HN (hoặc là các tài khoản troll đã chuẩn bị với vài trăm nghiệp chướng chạy ra ngoài? :-)).

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Xin lỗi, tôi đã không cố gắng troll bạn.

Bạn đã hỏi về Lambdas đa dòng trong Python và tôi đã cho bạn một cú pháp Python hợp lệ cho các chức năng ẩn danh đa dòng. Dưới đây là PEP 202, chỉ đơn giản nói rằng các toàn bộ danh sách ngắn gọn hơn so với các vòng lặp và bản đồ/bộ lọc, v.v.

http://www.python.org/dev/peps/pep-0202/

Re: Tài khoản - Tôi xóa tất cả các tài khoản của mình trên các trang web xã hội mỗi năm một lần.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

  do_stuff
  while(some_condition):
    do_stuff
4 Giữ nó sang trọng.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Xem xét cách mà mọi người đã troll hầu hết mọi cuộc thảo luận trong vài năm qua khi tôi ở trên HN, tôi cảm thấy như mình đang ở trên quỹ đạo so với những người trong bùn ...

Tôi cũng có thể lưu ý rằng tôi có hai câu trả lời không liên tiếp liên tiếp, vì vậy một trò đùa như thế là IMHO không phải là một phản ứng cực đoan. Hầu như không phải là mỉa mai như bạn đã qua một trò đùa, ít nhất là ...

EDIT: Tôi cũng có thể lưu ý rằng bài viết này (76 phiếu bầu) là 5 địa điểm dưới một bài viết gần như không kém (8 giờ) với 13 phiếu bầu. Vì vậy, nó có lẽ được gắn cờ xuống địa ngục. Tôi cảm thấy sang trọng, so với một số người khác.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Ít nhất là ở Haskell, tôi không thực sự quan tâm đến không gian trắng đáng kể khi thời gian tái cấu trúc lại. Tôi không thấy làm thế nào nó sẽ không trở thành một vấn đề đối với một ngôn ngữ bắt buộc truyền thống và xu hướng của chúng đối với các khối lớn.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Điều đó không có nhiều ý nghĩa với tôi. Giả sử nếu tôi được phỏng vấn ở một nơi nào đó bằng Java, Python, C và Go, tại sao tôi không nên nêu sở thích ngôn ngữ cá nhân của mình?

Đối với hầu hết mọi thứ với tư cách là người quản lý tuyển dụng, tôi ổn với những người làm việc với ngôn ngữ yêu thích của họ về bất kỳ dự án nào tôi chỉ định họ (miễn là nó không quá bí truyền; OCAML là OK, nhưng Haskell có thể đẩy nó quá xa , ví dụ), ngoại trừ khi họ phải làm việc trên một cơ sở mã hiện có, trong trường hợp đó tôi sẽ không muốn thuê ai đó ghét nó; Họ sẽ khốn khổ và mã kết quả sẽ rất tệ.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Sở thích ngôn ngữ cá nhân là tốt nếu chúng được chứng minh bởi những lý do thực tế như chi tiết công nghệ, cộng đồng, thư viện, ...

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Chúng ta sẽ nói về thứ ba tuần này :) Mọi người thường có một lý do rất chính đáng để thích ngôn ngữ mà họ thoải mái hơn, bởi vì nó làm cho họ làm việc hiệu quả hơn. Tất nhiên, có thể dễ dàng xua tan nếu một số anh chàng khăng khăng chỉ viết lắp ráp, hoặc C ++, vs Python. Tôi đã biết một anh chàng đã viết toàn bộ GUI Windows trong hội, đó là sự điên rồ thuần túy.

Có nhiều lý do kỹ thuật hợp lệ để chọn C hơn Python, Java hơn Perl hoặc PHP hơn là Go, erlang chứ không phải C ++ ...

Nhưng Perl vs Python vs Ruby? Hầu như không có sự khác biệt, ngôn ngữ động cực kỳ giống nhau. Đó chỉ là vấn đề của sở thích cá nhân vào thời điểm này.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Tại sao bạn không thuê một người có ý kiến ​​bất lợi về ngôn ngữ? Bạn có cảm thấy như vậy nếu anh ấy đề cập đến Java thay vì Python?

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Đó rõ ràng không phải là những gì anh ấy nói. Anh ta chỉ muốn những lập luận kỹ thuật thực tế chống lại một ngôn ngữ nhất định, thay vì những tuyên bố vô căn cứ không có ý nghĩa.

Tôi nghĩ rằng thật hợp lý khi nghi ngờ một người được phỏng vấn chống lại Python chỉ vì nó thực thi thụt mã hợp lý.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

>> Tôi nghĩ rằng thật hợp lý khi nghi ngờ một người được phỏng vấn chống lại Python chỉ vì nó thực thi thụt mã hợp lý.

Mặc dù nói "Tôi không thích thụt mã của Python" không giống như "Tôi chống lại Python". Vâng, ít nhất tôi thấy không có mối quan hệ giữa hai người.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Tôi đã từng nghĩ rằng đây là một nhược điểm. Sau đó, tôi bắt đầu sử dụng Python toàn thời gian bốn năm trước. Không gian trắng đáng kể khuyến khích khả năng đọc và khả năng đọc (IMHO) khuyến khích khả năng duy trì.

Có một số điều không thích về Python; Tuy nhiên, sau khi bạn sử dụng ngôn ngữ trong một thời gian, bạn nhận ra không gian trắng đáng kể không phải là một trong số đó. Nó giống như nói rằng dấu ngoặc đơn của Lisp là xấu xí: Chắc chắn, bạn có thể không thích chúng, nhưng chúng là một lý do rất lớn của ngôn ngữ (và, thực sự, cách suy nghĩ về mã) rất mạnh mẽ.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Python không gian trắng đáng kể giống như chủ nghĩa khỏa thân. Lúc đầu, bạn nghĩ rằng một cái gì đó cần thiết là thiếu (quần áo, niềng răng xoăn), sau đó bạn nhận thấy rằng nó không thực sự cần thiết, và mọi thứ trở nên tự do và đơn giản hơn.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Tôi đồng ý, "Thẩm mỹ ngôn ngữ" có vấn đề ... đó là lý do tại sao tôi ghét tiền tố biến với "$", "%" hoặc "@" :) Một, và theo một cách gây cười khiến nó trở nên vô dụng khi các mảng cũng sử dụng "$") nhưng tôi có thể hiểu lý do của Larry rằng "những thứ khác biệt sẽ trông khác" và tôi sẽ không tránh ngôn ngữ chỉ vì lý do này.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Nhận một biên tập viên hiển thị khoảng trắng.

(Không) vấn đề được giải quyết.

Chưa kể bạn nên thụt mã chính xác theo cùng một cách (theo định dạng nhất quán, các tab hoặc không gian) với cách bạn đã thụt mã mã Python.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Nó không hoàn toàn được giải quyết. Ví dụ: bạn không thể viết một lambda có chứa một dòng phá vỡ. Nó không phải là một vấn đề lớn, nhưng nó là một sự đánh đổi.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Đặt cái này vào một trình soạn thảo văn bản và chạy nó trong Python:

  do_stuff
  while(some_condition):
    do_stuff
5 Gợi ý: Nó chạy.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Whitespace đáng kể không phải là lý do tại sao bạn không thể viết một lambda có chứa một dòng phá vỡ. Các vấn đề không thực sự liên quan. Chỉ cần bỏ sự khác biệt giữa các câu lệnh và biểu thức và cho phép các biểu thức đa dòng. Đúng, sau đó nó sẽ không còn là Python mà là một ngôn ngữ hoàn toàn khác :)

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Khi bạn viết mã bằng Perl, Ruby hoặc một số ngôn ngữ khác, bạn thường không sử dụng bất kỳ thụt lề nào? Bạn có để lại tất cả mã của bạn được liên kết trái không?

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Tôi không nói rằng tôi ghét Python, nhớ bạn; Nhưng tôi không thích khoảng trắng đáng kể của nó, giống như một số người không thích Lisp cho dấu ngoặc đơn của nó và Perl cho sigils của nó.

Thỉnh thoảng tôi đang sử dụng Python, nhưng tôi sẽ không sử dụng nó cho các dự án cá nhân của mình, tôi thích Perl cho điều đó.

Các ngôn ngữ duy nhất tôi thực sự không muốn làm việc là Java.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Không phải là một so sánh công bằng - văn xuôi tiếng Anh

doesn't

quan tâm

thế nào

nhiều

Whitespace xuất hiện giữa các từ, chỉ có nhiều hơn không có. Python chắc chắn quan tâm bao nhiêu.

Đừng hiểu sai ý tôi - Tôi thích Python và tôi sử dụng nó rất nhiều, nhưng sự phụ thuộc của nó vào khoảng trắng có ý nghĩa cú pháp không nằm trong cột cộng.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

Hãy thử gửi một trong hai ý kiến ​​của chúng tôi đến một ấn phẩm có uy tín. Tôi nghi ngờ biên tập viên sẽ bảo quản khoảng trắng của chúng tôi.

Tiếng Anh có quy tắc khoảng trắng được xác định rõ, cũng như gần như mọi ngôn ngữ lập trình. Mọi hướng dẫn về phong cách ngôn ngữ lập trình tôi từng đọc đã nói về thụt lề, vì vậy bạn phải thụt vào theo các quy tắc cho dù bạn sử dụng ngôn ngữ nào.

Bạn đã bao giờ nghĩ cho chính mình, "Wow, không có cách nào tôi có thể hoàn thành nhiệm vụ này đúng hạn vì tôi phải thụt vào theo các quy tắc của Python"? Tôi đoán là không.

Hướng dẫn why does white space matter in python? - Tại sao không gian trắng lại có vấn đề trong python?

> Hãy thử gửi một trong hai nhận xét của chúng tôi đến một ấn phẩm có uy tín. Tôi nghi ngờ biên tập viên sẽ bảo quản khoảng trắng của chúng tôi.

Đúng, nhưng đó là vì việc thay đổi khoảng trắng không phá vỡ văn xuôi. Nhưng trong Python, nó chắc chắn phá vỡ mã.

> Vì vậy, bạn phải thụt vào theo các quy tắc bất kể bạn sử dụng ngôn ngữ nào.

Loại của. Tôi đã viết bất kỳ số lượng chương trình nào bằng các ngôn ngữ sử dụng niềng răng làm dấu phân cách, nhưng rất lười biếng, sau đó sử dụng một máy làm đẹp để sửa chữa mọi thứ tại một tổ hợp phím.

Tôi đồng ý với quan điểm của bạn rằng nguồn cuối cùng phải tuân theo định dạng được chấp nhận, nhưng không đúng là tôi nhất thiết phải chú ý đến điều đó (như tôi làm trong Python).

Một số người làm đẹp tốt hơn thậm chí thực thi các lựa chọn phong cách tùy chọn, như biến điều này:

  do_stuff
  while(some_condition):
    do_stuff
6 vào điều này: ________ 17 tự động.

Phong cách thứ hai đã được tiếp quản khá nhiều kể từ khi tôi bắt đầu lập trình 40 năm trước, ở mức độ mà tôi đã thích nó.

Tôi nhấn mạnh tôi thích Python và tôi thấy những lợi thế của nó vượt xa vấn đề khoảng trắng trên radar cá nhân của tôi.

> Bạn đã bao giờ nghĩ cho chính mình, "Wow, không có cách nào tôi có thể hoàn thành nhiệm vụ này đúng hạn vì tôi phải thụt vào theo quy tắc của Python"? Tôi đoán là không.

Bạn đúng, nhưng chỉ vì trình soạn thảo của tôi tự động quản lý các vết lõm của Python trong hầu hết các trường hợp, vì vậy tôi không nghĩ về nó nữa.

Một cảnh báo là các tệp nguồn Python, theo thời gian và vì nhiều lý do khác nhau, bị nhiễm các tab. Sau đó, mọi thứ trở nên phức tạp khi tôi cố gắng loại bỏ các tab mà không phá hủy logic của chương trình. Các tab IMHO nên được đặt ra ngoài vòng pháp luật.

Tại sao khoảng trắng lại quan trọng trong Python?

Trong Python, chuỗi.Whitespace sẽ cung cấp cho các ký tự không gian, tab, linefeed, return, formFeed và tab dọc.Tham số: Không lấy bất kỳ tham số nào, vì nó không phải là một hàm.Trả về: Trả về không gian ký tự, tab, linefeed, return, formFeed và tab dọc.give the characters space, tab, linefeed, return, formfeed, and vertical tab. Parameters : Doesn't take any parameter, since it's not a function. Returns : Return the characters space, tab, linefeed, return, formfeed, and vertical tab.

Tại sao khoảng trắng quan trọng trong mã?

Sử dụng khoảng trắng (ngang và dọc) giúp mã của bạn dễ đọc và hiểu hơn.Kinh nghiệm cá nhân của tôi là người mới bắt đầu có xu hướng sử dụng quá nhiều khoảng cách hoặc không đủ khoảng cách và các nhà phát triển chuyên nghiệp lưu ý rằng.makes your code easier to read and understand. My personal experience is that beginners tend to use too much spacing or not enough spacing, and professional developers note that.

Python có nhạy cảm với không gian trắng không?

Python là một ngôn ngữ lập trình nhạy cảm với khoảng trắng sử dụng các không gian trên mạng và thụt lề thay vì niềng răng xoăn hoặc từ khóa bắt đầu/kết thúc.Phiên bản Python được sử dụng trong Studio thể tích Trái đất yêu cầu không gian được sử dụng thay vì hỗn hợp các tab và không gian để thụt vào. that uses “spaces” and indenting instead of curly braces or “begin/end” keywords. The version of Python used in Earth Volumetric Studio requires that spaces be used instead of a mix of tabs and spaces for indenting.