Hướng dẫn does spacing matter in python? - khoảng cách có quan trọng trong python không?

Khi tôi viết mã cho một dự án cá nhân hoặc nếu tôi chỉ kiểm tra mọi thứ, tôi có xu hướng mã như thế này, chỉ vì nó làm tôi hạnh phúc:

def importcontacts(request):
  context                       = initialize_context(request)
  context['form']               = UploadedFileForm()
  token                         = get_token(request)

  if request.method == 'POST':
    form                        = UploadFileForm(request.POST, request.FILES)

    if form.is_valid():
      contacts                  = request.FILES['file']
      fs                        = FileSystemStorage()
      filename                  = fs.save('import_data.json', contacts)
      uploaded_file_url         = fs.url(filename)
      context['fails']          = ct.import_contacts(uploaded_file_url,
                                                     token,
                                                     context['user']['email'],
                                                     context['user']['name'])
      messages.success(request, 'Contacts imported successfully.')

      return render(request, 'contactsdb/importresult.html', context)

  return render(request, 'contactsdb/import.html', context)

Rõ ràng điều này không tuân thủ PEP8 và tôi sẽ không bao giờ đưa thứ gì đó như thế này vào sản xuất nhưng đồng thời tôi không thực sự biết tại sao và tôi cũng không thực sự hiểu tại sao mã thậm chí vẫn hoạt động khi đặt ra như đây. Tôi cho rằng tất cả không gian làm cho mã chậm hơn?

Googling đã không giúp tôi tìm thấy câu trả lời của mình. Tôi không tìm kiếm ai đó để nói với tôi "Bạn không bao giờ nên làm điều đó, blah blah", tôi nhận thức rõ! Tôi chỉ muốn biết lý do tại sao điều này không ổn.

Chương này là từ cuốn sách 

Mã khối và thụt

Một trong những tính năng đặc biệt nhất của Python là việc sử dụng vết lõm để đánh dấu các khối mã. Hãy xem xét if-statement từ chương trình kiểm tra mật khẩu đơn giản của chúng tôi:

if pwd == 'apple':
    print('Logging on ...')
else:
    print('Incorrect password.')

print('All done!')

Các dòng in ('Ghi nhật ký ...') và in ('Mật khẩu không chính xác.') Là hai khối mã riêng biệt. Những cái này chỉ dài một dòng dài, nhưng Python cho phép bạn viết các khối mã bao gồm bất kỳ số lượng câu lệnh nào.

Để chỉ ra một khối mã trong Python, bạn phải thụt vào từng dòng của khối theo cùng một lượng. Hai khối mã trong ví dụ của chúng tôi, theo dõi đều là bốn khoảng trống thụt, đây là một lượng thụt điển hình cho Python.

Trong hầu hết các ngôn ngữ lập trình khác, thụt lề chỉ được sử dụng để giúp mã trông đẹp. Nhưng trong Python, nó được yêu cầu để chỉ ra khối mã nào thuộc về câu lệnh. Chẳng hạn, bản in cuối cùng ('Tất cả được thực hiện!') Không được thụt vào, và do đó không phải là một phần của khối khác.

Các lập trình viên quen thuộc với các ngôn ngữ khác thường xuất hiện với ý nghĩ rằng vấn đề thụt vào: nhiều lập trình viên thích tự do định dạng mã của họ như thế nào. Tuy nhiên, các quy tắc thụt python khá đơn giản và hầu hết các lập trình viên đã sử dụng thụt vào để làm cho mã của họ có thể đọc được. Python chỉ đơn giản là đưa ý tưởng này tiến thêm một bước và mang lại ý nghĩa cho thụt lề.

If/elif-statements

Một if/elif-statement là một câu chuyện if tổng quát với nhiều điều kiện. Nó được sử dụng để đưa ra quyết định phức tạp. Ví dụ: giả sử một hãng hàng không có tỷ lệ vé trẻ con sau đây: trẻ em từ 2 tuổi trở lên miễn phí, trẻ em trên 2 tuổi nhưng dưới 13 tuổi trả giá vé trẻ em và bất cứ ai từ 13 tuổi trở lên trả tiền vé người lớn thông thường . Chương trình sau đây xác định số tiền mà một hành khách phải trả:

# airfare.py
age = int(input('How old are you? '))
if age <= 2:
    print(' free')
elif 2 < age < 13:
    print(' child fare)
else:
    print('adult fare')

Sau khi Python nhận được tuổi từ người dùng, nó sẽ nhập IF/Elif-statement và kiểm tra từng điều kiện từng điều kiện theo thứ tự chúng được đưa ra. Vì vậy, trước tiên, nó kiểm tra xem tuổi có nhỏ hơn 2 không, và nếu vậy, nó chỉ ra rằng việc bay là miễn phí và nhảy ra khỏi điều kiện Elif. Nếu tuổi không nhỏ hơn 2, thì nó sẽ kiểm tra điều kiện Elif tiếp theo để xem tuổi có nằm trong khoảng từ 2 đến 13. Nếu vậy, nó sẽ in thông điệp thích hợp và nhảy ra khỏi IF/Elif-Statement. Nếu cả điều kiện IF và điều kiện IFIF là đúng, thì nó sẽ thực thi mã trong khối khác.

Biểu thức có điều kiện

Python có thêm một toán tử logic mà một số lập trình viên thích (và một số don!). Nó về cơ bản là một ký hiệu tốc ký cho các câu chuyện nếu có thể được sử dụng trực tiếp trong các biểu thức. Xem xét mã này:

food = input("What's your favorite food? ")
reply = 'yuck' if food == 'lamb' else 'yum'

Biểu thức ở phía bên phải của = trong dòng thứ hai được gọi là biểu thức có điều kiện và nó đánh giá là 'yuck' hoặc 'yum'. Nó tương đương với những điều sau:

food = input("What's your favorite food? ")
if food == 'lamb':
   reply = 'yuck'
else:
   reply = 'yum'

Biểu thức có điều kiện thường ngắn hơn so với các biểu ngữ nếu/khác tương ứng, mặc dù không hoàn toàn linh hoạt hoặc dễ đọc. Nói chung, bạn nên sử dụng chúng khi chúng làm cho mã của bạn đơn giản hơn.

Python có quan tâm đến khoảng cách không?

Python không đặc biệt cảm động về khoảng trắng; Đó là cảm động về thụt vào khi thụt lề đó ảnh hưởng đến phân tích cú pháp, cụ thể là thụt đầu trước bắt đầu một tuyên bố. Một khoảng trắng khác thường bị bỏ qua ngoài việc sử dụng nó để tách các mã thông báo khác.; it's touchy about indentation when that indentation affects parsing, specifically, indentation that precedes the beginning of a statement. Other whitespace is generally ignored beyond its use to separate other tokens.

Tại sao khoảng cách trong Python lại quan trọng?

Số lượng vấn đề thụt vào: Một không gian bị thiếu hoặc thêm trong khối Python có thể gây ra lỗi hoặc hành vi bất ngờ.Các câu lệnh trong cùng một khối mã cần được thụt vào cùng cấp.A missing or extra space in a Python block could cause an error or unexpected behavior. Statements within the same block of code need to be indented at the same level.

Khoảng cách hoạt động như thế nào trong Python?

Trong Python, các ký tự được sử dụng cho khoảng cách được gọi là ký tự khoảng trắng.Chúng bao gồm dòng mới, không gian, tab, trả lại vận chuyển, thức ăn, v.v ... Phương thức chuỗi python () được sử dụng để xác định xem một đối số có tất cả các ký tự khoảng trắng như: '' - không gian.The Python String isspace() method is used to determine whether an argument has all whitespace characters such as: ' ' – Space.

Python có nhạy cảm với vết lõm không?

Thắng là một khái niệm rất quan trọng về Python vì không có sự thụt đầu vào mã Python, cuối cùng bạn sẽ thấy thụt lề và mã sẽ không được biên dịch.without properly indenting the Python code, you will end up seeing IndentationError and the code will not get compiled.