Pertanyaan Cara membuat komentar multiline dengan Python?


Saya baru mulai belajar Python, tetapi saya tidak dapat menemukan cara menerapkan komentar multi-baris. Sebagian besar bahasa telah memblokir simbol komentar seperti

/* 

*/

Saya mencoba ini dengan Python, tetapi itu melemparkan kesalahan, jadi ini mungkin bukan cara yang benar. Apakah Python benar-benar memiliki fitur komentar multiline?


828
2017-10-08 12:51


asal


Jawaban:


Anda dapat menggunakan string triple-dikutip. Ketika mereka bukan docstring (hal pertama di kelas / fungsi / modul), mereka diabaikan.

'''
This is a multiline
comment.
'''

(Pastikan untuk membuat indentasi pada leading ''' tepat untuk menghindari suatu IndentationError.)

Guido van Rossum (pencipta Python) tweeted ini sebagai "tip pro".

Namun, panduan gaya Python, PEP8, nikmat menggunakan komentar baris tunggal berturut-turut, dan ini juga yang akan Anda temukan di banyak proyek. Editor biasanya memiliki cara pintas untuk melakukan ini dengan mudah.


1336
2017-10-08 12:58



Python memang memiliki string multiline string / komentar dalam arti bahwa kecuali digunakan sebagai dokstring, string multiline tidak menghasilkan bytecode -- seperti #komentar yang diambil. Sebenarnya, tindakan itu persis seperti komentar.

Di sisi lain, jika Anda mengatakan perilaku ini harus didokumentasikan dalam resmi docs menjadi sintaks komentar yang benar, maka ya, Anda akan benar untuk mengatakan itu tidak dijamin sebagai bagian dari spesifikasi bahasa.

Dalam kasus apa pun editor Anda juga harus dapat mengomentari terpilih dengan mudah wilayah (dengan menempatkan # di depan setiap baris secara individual). Jika tidak, alihkan ke seorang editor yang melakukannya.

Pemrograman dengan Python tanpa fitur pengeditan teks tertentu dapat menjadi menyakitkan pengalaman. Menemukan editor yang tepat (dan mengetahui cara menggunakannya) dapat menjadi besar perbedaan dalam bagaimana pengalaman pemrograman Python dirasakan.

Tidak hanya seharusnya editor dapat mengomentari daerah yang dipilih, seharusnya juga dapat memindahkan blok kode ke kiri dan kanan dengan mudah, dan seharusnya secara otomatis menempatkan kursor pada level indentasi saat ini ketika Anda menekan Memasukkan. Kode lipat juga bisa bermanfaat.


Untuk melindungi terhadap pembusukan tautan, berikut adalah kontennya Tweet Guido van Rossum:

@BSUCSClub Tip Python: Anda dapat menggunakan string multi-baris sebagai komentar multi-baris. Kecuali digunakan sebagai dokstring, mereka tidak menghasilkan kode! :-)


63
2017-10-08 12:54



Dalam Python 2.7, komentar multiline adalah:

"""
This is a
multilline comment
"""

Jika Anda berada di dalam kelas Anda harus tab dengan benar.

Sebagai contoh:

class weather2():
   """
   def getStatus_code(self, url):
       world.url = url
       result = requests.get(url)
       return result.status_code
   """

Saya harap itu membantu!


27
2018-02-16 14:00



Dari jawaban yang diterima ...

Anda dapat menggunakan string triple-dikutip. Ketika mereka bukan docstring (hal pertama di kelas / fungsi / modul), mereka diabaikan.

Ini tidak benar. Tidak seperti komentar, string yang dikutip tiga kali masih diuraikan dan harus valid secara sintaksis, di mana pun mereka muncul di kode sumber.

Jika Anda mencoba menjalankan kode ini ...

def parse_token(token):
    """
    This function parses a token.
    TODO: write a decent docstring :-)
    """

    if token == '\\and':
        do_something()

    elif token == '\\or':
        do_something_else()

    elif token == '\\xor':
        '''
        Note that we still need to provide support for the deprecated
        token \xor. Hopefully we can drop support in libfoo 2.0.
        '''
        do_a_different_thing()

    else:
        raise ValueError

Anda akan mendapatkan ...

ValueError: invalid \x escape

... pada Python 2.x atau ...

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 79-80: truncated \xXX escape

... pada Python 3.x.

Satu-satunya cara untuk melakukan komentar multi-baris yang diabaikan oleh parser adalah ...

elif token == '\\xor':
    # Note that we still need to provide support for the deprecated
    # token \xor. Hopefully we can drop support in libfoo 2.0.
    do_a_different_thing()

23
2018-06-29 13:04



AFAIK, Python tidak memiliki komentar blok. Untuk mengomentari setiap baris, Anda dapat menggunakan # karakter.

Jika Anda menggunakan Notepad ++, ada jalan pintas untuk memblokir komentar. Saya yakin orang lain suka gVim dan Emacs memiliki fitur serupa.


22
2017-10-08 12:55



Saya pikir tidak, kecuali bahwa string multiline tidak diproses. Namun, sebagian besar, jika tidak semua Python IDE memiliki shortkey untuk 'mengomentari' beberapa baris kode.


9
2017-10-08 12:54



Jika Anda memberi komentar

"""
long comment here
"""

di tengah-tengah skrip, python / linters tidak akan mengenali itu. Lipat akan kacau, karena komentar di atas bukan bagian dari rekomendasi standar. Lebih baik digunakan

# long comment
# here.

Jika Anda menggunakan vim, Anda dapat menggunakan plugin https://github.com/tpope/vim-commentary, untuk secara otomatis mengomentari garis panjang komentar dengan menekan Vjgcc. Dimana Vj memilih 2 baris kode, dan gcc komentar mereka.

Jika Anda tidak ingin menggunakan plugin seperti di atas, Anda dapat menggunakan pencarian dan mengganti suka

:.,.+1s/^/# /g.

Ini akan menggantikan karakter pertama pada baris saat ini dan selanjutnya dengan #.


4
2018-01-31 18:16



Pada Python 2.7.13:

Tunggal:

"A sample single line comment "

Multiline:

"""
A sample
multiline comment
on PyCharm
"""

3
2018-05-11 15:47