Hướng dẫn python blank lines in function - python dòng trống trong hàm

(A) Điều này hoạt động:

def func():
    x = 1
    print(x)    
    return

(B) Điều này không hoạt động:

def func():
    x = 1

    print(x)    
    return

(C) Điều này cũng không hoạt động: (Ở đây tôi đang sử dụng '_' để chỉ một không gian trắng)

def func():
    x = 1
____
    print(x)    
    return

(D) Điều này hoạt động:

def func():
    x = 1
____# some comment
    print(x)    
    return

Trong cả hai (b) và (c) Tôi nhận được các lỗi sau:

  • NameError: tên 'x' không được xác định
  • Cú pháp: 'Trả về' Hàm bên ngoài

Tôi đang sử dụng Eclipse và PYDEV Plug-in. Phiên bản Python là 3,5 và phiên bản PYDEV là 4,5.

----------update----------

  1. Vấn đề không thể tái tạo trong Notebook Jupyter và Pycharm.

  2. Trong Eclipse, tôi đã bật "Hiển thị các ký tự khoảng trắng". Các vết lõm trong (c) thực sự bao gồm 4 khoảng trắng được hiển thị dưới dạng 4 chấm trong trình soạn thảo. Nếu đó là một tab, trong trình soạn thảo Eclipse, nó sẽ được hiển thị là ">>".

Với tôi thông qua điều tra và các bình luận/câu trả lời dưới đây, tôi khá chắc chắn rằng đây là một lỗi ngu ngốc của Eclipse và/hoặc Pydev.

Cảm ơn tất cả các bạn đã giúp đỡ.

Đã hỏi ngày 6 tháng 11 năm 2017 lúc 16:16Nov 6, 2017 at 16:16

Hướng dẫn python blank lines in function - python dòng trống trong hàm

GocurrygocurryGoCurry

8998 Huy hiệu bạc 30 Huy hiệu Đồng8 silver badges30 bronze badges

6

Hãy cẩn thận với các tab và không gian, chúng không giống nhau, vì vậy:

(_ không gian với không gian)

def func():
____x = 1
____
____print(x)
____return

Nó sẽ chỉ làm việc tốt

không giống như

(+ là tab, _ không gian trắng)

def func():
++x = 1
__
++print(x)
++return

Sẽ không hoạt động

Đã trả lời ngày 6 tháng 11 năm 2017 lúc 16:23Nov 6, 2017 at 16:23

Hướng dẫn python blank lines in function - python dòng trống trong hàm

Damian Lattenerodamian LatteneroDamian Lattenero

15.4K3 Huy hiệu vàng41 Huy hiệu bạc72 Huy hiệu đồng3 gold badges41 silver badges72 bronze badges

1

Trả lời câu hỏi chính của bạn: Dòng trống không được phép trong các chức năng Python?Blank line is not allowed in python functions?

Dòng trống chắc chắn được cho phép trong các chức năng Python.is definitely allowed in python functions.

Tất cả các ví dụ của bạn (A, B, C, D) nên hoạt động và vấn đề có thể (chắc chắn) có liên quan đến "Eclipse và PYDEV Plug-in".

Cân nhắc di chuyển sang một IDE khác như:

  • Spyder - https://pypi.python.org/pypi/spyder
  • Pycharm - https://www.jetbrains.com/pycharm/

Và xem xét sử dụng máy tính xách tay Jupyter để giúp phát triển của bạn.

Đã trả lời ngày 6 tháng 11 năm 2017 lúc 16:23Nov 6, 2017 at 16:23

Hướng dẫn python blank lines in function - python dòng trống trong hàm

Alber8295Alber8295Alber8295

Damian Lattenerodamian Lattenero1 gold badge8 silver badges19 bronze badges

Khi nào nên sử dụng hai dòng trống? Hướng dẫn phong cách Pep 8

Hướng dẫn python blank lines in function - python dòng trống trong hàm
Hình: Nguyên tắc vàng khi sử dụng hai dòng trống trong Python.: The golden rule of when to use two blank lines in Python.

Hai quy tắc sau đây sẽ cung cấp cho bạn một heuristic đủ khi sử dụng hai dòng trống:

  1. Chức năng cấp cao nhất và định nghĩa lớp với hai dòng trống.top-level function and class definitions with two blank lines.
  2. Chèn hai dòng trống sau các câu lệnh nhập nếu mã theo sau bắt đầu với hàm cấp cao nhất hoặc định nghĩa lớp.import statements if the code that follows starts with a top-level function or class definition.

Quy tắc thứ hai là hậu quả của quy tắc đầu tiên để nó có thể được thực hiện về mặt kỹ thuật.

Khi nào nên sử dụng các dòng trống đơn? Hướng dẫn phong cách Pep 8

Bốn quy tắc sau đây sẽ cung cấp cho bạn một heuristic đủ khi sử dụng một dòng trống duy nhất:

  1. Sử dụng một hoặc thêm các dòng trống đơn để tách các nhóm chức năng liên quan.
  2. Sử dụng một dòng trống duy nhất trong các chức năng để tách các phần logic.
  3. Sử dụng một dòng trống duy nhất để định nghĩa phương thức vòm bên trong một lớp.
  4. Không sử dụng một ranh giới trống giữa một lớp lót Python liên quan.

Hãy cùng xem một số ví dụ trong mã tiếp theo!

Hai chức năng cấp cao nhất của các dòng trống

#1.1-Hàm cấp cao nhất bao quanh với hai dòng trống.

WRONG:

import x

def f():
    pass

f()

CORRECT:

import x


def f():
    pass


f()

Một chức năng không có mức độ trống

#1.2-Hàm không có mức độ cao nhất với các dòng trống đơn.

WRONG:

import x


def f():


    def g():
        pass


    g()


f()

CORRECT:

import x


def f():

    def g():
        pass

    g()


f()

Hai dòng trống Định nghĩa lớp cấp cao nhất

#1.3-Định nghĩa lớp cấp cao nhất với hai dòng trống.

WRONG:

def func():
    x = 1

    print(x)    
    return
0

CORRECT:

def func():
    x = 1

    print(x)    
    return
1

Lưu ý rằng các định nghĩa lớp không ở cấp độ đầu

def func():
    x = 1
____
    print(x)    
    return
1 và
def func():
    x = 1
____
    print(x)    
    return
2 không được bao quanh với hai dòng trống là chính xác và theo quy tắc.

Hai dòng trống Nhập câu lệnh

Mặc dù nhiều nguồn trực tuyến nói rằng sẽ có hai dòng trống sau các câu lệnh

def func():
    x = 1
____
    print(x)    
    return
3 trước khi mã bắt đầu, điều này thường không chính xác. PEP 8 chỉ nói rằng hàm cấp cao nhất hoặc định nghĩa lớp nên được bao quanh bởi hai dòng trống!

Pep 8 không nói về các tuyên bố

def func():
    x = 1
____
    print(x)    
    return
3 cụ thể liên quan đến việc chèn hai dòng trống!

  • Nếu khối
    def func():
        x = 1
    ____
        print(x)    
        return
    
    3 được theo sau bởi một hàm hoặc định nghĩa lớp, bạn nên chèn hai dòng trống theo quy tắc này.
  • Nếu khối
    def func():
        x = 1
    ____
        print(x)    
        return
    
    3 được theo sau, giả sử, một định nghĩa biến toàn cầu, bạn không nên chèn hai dòng trống một là đủ!

Nhập câu lệnh theo sau là hai dòng trống:

Đoạn mã sau đây minh họa việc chèn chính xác hai dòng trống sau câu lệnh

def func():
    x = 1
____
    print(x)    
    return
3. Nhưng các dòng trống không có ở đó vì tuyên bố nhập khẩu. Họ ở đó vì định nghĩa hàm cấp cao nhất của
def func():
    x = 1
____
    print(x)    
    return
8.

def func():
    x = 1

    print(x)    
    return
2

Nhập báo cáo không theo sau là hai dòng trống:

Đoạn mã sau đây minh họa việc chèn chính xác chỉ một dòng trống sau câu lệnh

def func():
    x = 1
____
    print(x)    
    return
3 vì chúng tôi xác định biến toàn cầu
def func():
    x = 1
____# some comment
    print(x)    
    return
0 không phải là một lớp cũng không định nghĩa chức năng và do đó, không nên được bao quanh bởi hai dòng trống!

def func():
    x = 1

    print(x)    
    return
3

Hàm ý logic là các câu lệnh

def func():
    x = 1
____
    print(x)    
    return
3 nên được theo sau bởi hai dòng trống là không chính xác!
def func():
    x = 1
____
    print(x)    
    return
3 statements should be followed by two blank lines
is incorrect!

Tiếp theo, chúng tôi sẽ khám phá một số ví dụ trong đó chỉ có một dòng trống duy nhất có thể hoặc nên được chèn vào.

Các dòng trống đơn

#3 - Sử dụng một hoặc thêm các dòng trống đơn để tách các nhóm chức năng liên quan.

def func():
    x = 1

    print(x)    
    return
4

#4 - Sử dụng một dòng trống duy nhất trong các chức năng để tách các phần logic.

def func():
    x = 1

    print(x)    
    return
5

#5 - Sử dụng một dòng trống duy nhất để định nghĩa phương thức vòm bên trong một lớp.

def func():
    x = 1

    print(x)    
    return
6

Một lỗi phong cách phổ biến là các định nghĩa phương pháp bao quanh hai dòng thay vì một vì mọi người nhớ sai Quy tắc số 1.

Ở đây, một ví dụ sai như vậy:

def func():
    x = 1

    print(x)    
    return
7

Quá nhiều khoảng trắng!

Không bao quanh các định nghĩa phương pháp với hai dòng trống!

Các đường trống xung quanh một lớp lót

#6-Không sử dụng một đường trống duy nhất giữa một lớp Python liên quan.

Ví dụ: nếu bạn viết thông số kỹ thuật của ba chức năng để thực hiện sau này, bạn chỉ cần bỏ qua các dòng trống xung quanh các định nghĩa hàm một lớp để tránh quá nhiều khoảng trắng trong mã.

Như vậy:

def func():
    x = 1

    print(x)    
    return
8

Dự kiến ​​2 dòng trống, được tìm thấy 0 (E302)

Python có thể gây ra lỗi hoặc tin nhắn thông tin:

  • def func():
        x = 1
    ____# some comment
        print(x)    
        return
    
    2
  • def func():
        x = 1
    ____# some comment
        print(x)    
        return
    
    3

Để khắc phục lỗi này, bao quanh hàm cấp cao nhất hoặc định nghĩa lớp với hai dòng trống thay vì 0 hoặc một để tuân thủ hướng dẫn kiểu PEP 8.

Không! Không làm điều này:

def func():
    x = 1

    print(x)    
    return
9

Đúng! Thay vào đó làm điều này:

def func():
    x = 1
____
    print(x)    
    return
0

Dưới đây là một số tài liệu tham khảo nhanh để đọc thêm.

References:

  • https://stackoverflow.com/questions/2953250/python-pep8-blank-lines-convention
  • https://peps.python.org/pep-0008/#blank-lines
  • https://www.reddit.com/r/learnprogramming/comments/tnmhwe/when_to_use_blank_lines_in_python_in_order_to/
  • https://www.flake8rules.com/rules/E302.html

Lập trình viên hài hước

Hướng dẫn python blank lines in function - python dòng trống trong hàm
Các lập trình viên thực sự đặt các hằng số phổ biến khi bắt đầu sao cho vũ trụ phát triển để chứa đĩa với dữ liệu họ muốn. - XKCD

Hướng dẫn python blank lines in function - python dòng trống trong hàm

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.

Làm thế nào để bạn thoát khỏi các dòng trống trong Python?

Tập tin TXT trong Python.Chúng ta có thể loại bỏ các dòng trống từ a.Tệp TXT bằng cách sử dụng hàm Dải ().Dải (): Chức năng Dải () kiểm tra xem có trống và đuôi không gian hay không gian, loại bỏ các không gian đó và trả về ký tự.using the strip() function. strip(): strip() function checks whether there is a leading and tailing blank or spaces, removes those spaces, and returns the character.

Các dòng trống có quan trọng trong Python không?

Các dòng trống ở đó để có khả năng hiển thị tốt hơn khi đọc hoặc viết mã.Điều này không thêm hoặc lấy từ chương trình vì các dòng trống bị bỏ qua.. This does not add to or take from the program as empty lines are ignored.

Làm thế nào để bạn thêm một dòng trống vào một chuỗi trong Python?

Nhân vật Newline trong Python: Trong Python, nhân vật dòng mới \ n, được sử dụng để tạo ra một dòng mới.Khi được chèn vào một chuỗi, tất cả các ký tự sau khi ký tự được thêm vào một dòng mới.the new line character “\n” is used to create a new line. When inserted in a string all the characters after the character are added to a new line.

Các dòng trống trong mã là gì?

Các dòng trống cải thiện khả năng đọc bằng cách đặt ra các phần của mã có liên quan đến logic.Hai dòng trống phải luôn được sử dụng trong các trường hợp sau: giữa các phần của tệp nguồn.Giữa các định nghĩa lớp và giao diện.improve readability by setting off sections of code that are logically related. Two blank lines should always be used in the following circumstances: Between sections of a source file. Between class and interface definitions.