Hướng dẫn can i use tab to indent in python? - tôi có thể sử dụng tab để thụt lề trong python không?

Không gian không được coi là tương đương với tab. Một dòng thụt vào với một tab nằm ở một vết lõm khác nhau từ một dòng thụt vào với 1, 2, 4 hoặc 8 không gian.

Bằng chứng bằng ví dụ đối phó (sai lầm, hoặc, tốt nhất, Tab - Tab! = 4 không gian):

x = 1
if x == 1:
^Iprint "fff\n"
    print "yyy\n"

'

  File "xx.py", line 4
    print "yyy\n"
                ^
IndentationError: unindent does not match any outer indentation level
0' hiển thị một tab. Khi chạy qua Python 2.5, tôi gặp lỗi:

  File "xx.py", line 4
    print "yyy\n"
                ^
IndentationError: unindent does not match any outer indentation level

Do đó, cho thấy rằng trong Python 2.5, các tab không bằng không gian (và đặc biệt không bằng 4 khoảng trắng).


Rất tiếc - xấu hổ; Bằng chứng của tôi bằng ví dụ đối với các tab không tương đương với 4 khoảng trống. Như Alex Martelli chỉ ra trong một bình luận, trong Python 2, các tab tương đương với 8 không gian và điều chỉnh ví dụ với một tab và 8 không gian cho thấy đây thực sự là trường hợp.

x = 1
if x != 1:
^Iprint "x is not 1\n"
        print "y is unset\n"

Trong Python 2, mã này hoạt động, không có gì in.


Trong Python 3, các quy tắc hơi khác nhau (như được ghi nhận bởi Antti haapala). So sánh:

  • Python 2 trên thụt
  • Python 3 trên thụt

Python 2 nói:

Đầu tiên, các tab được thay thế (từ trái sang phải) bằng một đến tám khoảng trống sao cho tổng số ký tự lên đến và bao gồm cả sự thay thế là bội số của tám (điều này được dự định là quy tắc tương tự như được sử dụng bởi Unix). Tổng số không gian trước ký tự không trống đầu tiên sau đó xác định thụt dòng. Thắng không thể được phân chia trên nhiều dòng vật lý bằng cách sử dụng dấu gạch chéo ngược; khoảng trắng lên đến dấu gạch chéo ngược đầu tiên xác định thụt lề.

Python 3 nói:

Các tab được thay thế (từ trái sang phải) bằng một đến tám khoảng trống sao cho tổng số ký tự lên đến và bao gồm cả sự thay thế là bội số của tám (điều này được dự định là quy tắc tương tự như được sử dụng bởi UNIX). Tổng số không gian trước ký tự không trống đầu tiên sau đó xác định thụt dòng. Thắng không thể được phân chia trên nhiều dòng vật lý bằng cách sử dụng dấu gạch chéo ngược; khoảng trắng lên đến dấu gạch chéo ngược đầu tiên xác định thụt lề.

(Ngoài từ mở đầu "Đầu tiên", những thứ này giống hệt nhau.)

Python 3 thêm một đoạn văn bổ sung:

Thắng bị từ chối là không nhất quán nếu một tệp nguồn trộn các tab và không gian theo cách làm cho ý nghĩa phụ thuộc vào giá trị của một tab trong không gian; Một taberror được nuôi dưỡng trong trường hợp đó.

Điều này có nghĩa là ví dụ Tab vs 8-Space hoạt động trong Python 2 sẽ tạo ra một điều taberror trong Python 3. Tốt nhất-cần thiết trong Python 3-để đảm bảo rằng chuỗi các ký tự tạo ra vết lõm trên mỗi dòng trong một khối là giống hệt nhau. PEP8 cho biết 'Sử dụng 4 không gian trên mỗi cấp độ thụt'. (Tiêu chuẩn mã hóa của Google cho biết 'Sử dụng 2 không gian'.)

Thắng trong Python được sử dụng để tạo ra một nhóm các tuyên bố. Nhiều ngôn ngữ phổ biến như C và Java sử dụng niềng răng ({}) để xác định một khối mã và Python sử dụng thụt lề.


Thắng trong Python đề cập đến không gian trắng ở đầu dòng. Chúng ta có thể tạo vết lõm bằng cách sử dụng không gian hoặc tab. Khi viết mã Python, chúng ta phải xác định một nhóm các câu lệnh cho các chức năng và vòng lặp. Điều này được thực hiện bằng cách thụt lề đúng các câu lệnh cho khối đó.

Các không gian trắng hàng đầu (không gian và tab) ở đầu một dòng được sử dụng để xác định mức thụt của dòng. Chúng tôi phải tăng mức thụt lề để nhóm các câu lệnh cho khối mã đó. Tương tự, giảm thụt vào để đóng nhóm.

Bốn không gian trắng hoặc một ký tự một tab duy nhất được sử dụng để tạo hoặc tăng mức độ thụt của mã. Hãy cùng xem xét một ví dụ để hiểu được thụt mã và nhóm các câu lệnh.

def foo():
    print("Hi")

    if True:
        print("true")
    else:
        print("false")

print("Done")

Hướng dẫn can i use tab to indent in python? - tôi có thể sử dụng tab để thụt lề trong python không?
Thắng Python

Quy tắc thụt python

  • Chúng tôi có thể chia phần thụt vào nhiều dòng bằng cách sử dụng dấu gạch chéo ngược.
  • Dòng đầu tiên của mã Python có thể có một vết lõm, nó sẽ ném
      File "xx.py", line 4
        print "yyy\n"
                    ^
    IndentationError: unindent does not match any outer indentation level
    
    1.
  • Bạn nên tránh trộn các tab và khoảng trắng để tạo ra một vết lõm. Nó khác vì các biên tập viên văn bản trong các hệ thống không phải là Unix hoạt động khác nhau và trộn chúng có thể gây ra vết lõm sai.
  • Nó được ưa thích để sử dụng khoảng trắng để thụt vào hơn ký tự tab.
  • Cách thực hành tốt nhất là sử dụng 4 khoảng trắng cho thụt đầu tiên và sau đó tiếp tục thêm 4 khoảng trắng để tăng thụt.

Lợi ích của thụt lề trong Python

  • Trong hầu hết các ngôn ngữ lập trình, thụt lề được sử dụng để cấu trúc đúng mã. Trong Python, nó được sử dụng để nhóm, làm cho mã tự động đẹp.
  • Quy tắc thụt python rất đơn giản. Hầu hết các id python tự động thụt mã mã cho bạn, do đó, nó rất dễ dàng để viết mã được thụt vào đúng.

Nhược điểm của vết lõm trong Python

  • Vì không gian trắng được sử dụng để thụt vào, nếu mã lớn và vết lõm bị hỏng thì nó thực sự tẻ nhạt để sửa nó. Nó xảy ra chủ yếu bằng cách sao chép mã từ các nguồn trực tuyến, tài liệu từ hoặc tệp pdf.
  • Hầu hết các ngôn ngữ lập trình phổ biến đều sử dụng niềng răng để thụt vào, vì vậy bất kỳ ai đến từ một thế giới lập trình khác đều thấy khó khăn lúc đầu để điều chỉnh theo ý tưởng sử dụng khoảng trắng cho vết lõm.

Vết lõm trong python cho vòng lặp

Chúng ta phải tăng thụt vào vòng lặp để mã sẽ được nhóm lại với nhau. Hãy cùng nhìn vào một ví dụ về vết lõm trong Python cho Loop.

def print_numbers(x, y):
    for i in range(x, y):
        print(i)

Ví dụ thụt lề

Hãy cùng xem xét một số ví dụ về nội soi thụt trong mã Python.

>>>     x = 10
  File "", line 1
    x = 10
    ^
IndentationError: unexpected indent
>>> 

Chúng ta có thể có một thụt lề trong dòng đầu tiên của mã. Đó là lý do tại sao thụt lề bị ném.


if True:
    print("true")
     print("Hi")
else:
    print("false")

Hướng dẫn can i use tab to indent in python? - tôi có thể sử dụng tab để thụt lề trong python không?
Python thụt lề

Các dòng mã bên trong khối IF có mức thụt khác nhau, do đó là lần nối liền.


if True:
    print("true")
else:
    print("false")

 print("Done")

Hướng dẫn can i use tab to indent in python? - tôi có thể sử dụng tab để thụt lề trong python không?
Lỗi mức độ thụt trăn không xuất hiện

Ở đây câu lệnh in cuối cùng có một số vết lõm nhưng không có tuyên bố nào để đính kèm nó, do đó lỗi thụt lề được ném.


if True:
print("true")
else:
print("false")

Output:

File "/Users/pankaj/Documents/PycharmProjects/PythonTutorialPro/hello-world/indent.py", line 2
    print("true")
        ^
IndentationError: expected an indented block


Bản tóm tắt

Thắng Python làm cho mã của chúng tôi đẹp. Nó cũng phục vụ mục đích nhóm các câu lệnh thành một khối mã. Điều này dẫn đến thói quen viết mã đẹp mọi lúc vì nó không phải là một tính năng tốt mà là một yêu cầu phải có của mã.


Cái gì tiếp theo?

  • Kiểu dữ liệu Python
  • Python if-else tuyên bố
  • Xử lý ngoại lệ Python
  • Danh sách trong Python
  • Tuple trong Python

References:

  • Python.org Docs

Làm thế nào để bạn thụt vào trên Python?

Khoảng trắng được sử dụng để thụt vào python. Tất cả các câu lệnh có cùng khoảng cách bên phải thuộc cùng một khối mã. Nếu một khối phải được lồng sâu hơn, nó chỉ đơn giản là thụt vào bên phải. Bạn có thể hiểu rõ hơn bằng cách xem các dòng mã sau đây.. All statements with the same distance to the right belong to the same block of code. If a block has to be more deeply nested, it is simply indented further to the right. You can understand it better by looking at the following lines of code.

Có bao nhiêu không gian là một python?

Trong Python 2, việc giải thích tab như thể nó được chuyển đổi thành các không gian bằng cách sử dụng các điểm dừng tab 8 không gian (như được cung cấp bởi các câu trả lời trước đó đã);Đó là mỗi tab làm tăng sự thụt vào 1 đến 8 khoảng trống để vết lõm kết quả là chia hết cho 8.1 to 8 spaces so that the resulting indentation is divisible by 8.

Làm thế nào để bạn thụt lề mà không cần một tab trong Python?

Sử dụng không gian và chọn 2 hoặc 3 không gian làm cấp độ thụt đầu vào của bạn.Một biên tập viên giỏi sẽ làm cho nó để bạn không phải lo lắng về điều này.(Ví dụ, chế độ Python cho Emacs, bạn chỉ có thể sử dụng phím tab và nó sẽ giữ cho bạn trung thực).. A good editor will make it so you don't have to worry about this. (python-mode for emacs, for example, you can just use the tab key and it will keep you honest).

Làm thế nào để bạn đặt một không gian tab trong Python?

Nó thường là \ t trong các giao diện dòng lệnh, sẽ chuyển đổi char \ t thành ký tự tab khoảng trắng.\t in command-line interfaces, which will convert the char \t into the whitespace tab character.