Menurut dokumentasi, mereka're cukup banyak dipertukarkan. Apakah ada gaya alasan untuk menggunakan salah satu dari yang lain?
Saya ingin menggunakan tanda kutip ganda di seluruh string yang digunakan untuk interpolasi atau yang bahasa alami pesan, dan tanda kutip tunggal untuk simbol kecil-seperti string, tapi akan melanggar aturan jika string mengandung kutipan, atau jika saya lupa. Saya menggunakan tiga tanda kutip ganda untuk docstrings dan baku string literal untuk ekspresi reguler bahkan jika mereka tidak't diperlukan.
Misalnya:
LIGHT_MESSAGES = {
'English': "There are %(number_of_lights)s lights.",
'Pirate': "Arr! Thar be %(number_of_lights)s lights."
}
def lights_message(language, number_of_lights):
"""Return a language-appropriate string reporting the light count."""
return LIGHT_MESSAGES[language] % locals()
def is_pirate(message):
"""Return True if the given message sounds piratical."""
return re.search(r"(?i)(arr|avast|yohoho)!", message) is not None
Mengutip dokumen resmi di https://docs.python.org/2.0/ref/strings.html:
Dalam bahasa inggris: String literals dapat tertutup dalam pencocokan tanda kutip tunggal (') atau tanda kutip ganda (").
Jadi tidak ada perbedaan. Sebaliknya, orang-orang akan memberitahu anda untuk memilih mana gaya yang sesuai dengan konteks, dan konsisten. Dan saya setuju - menambahkan bahwa itu adalah sia-sia untuk mencoba untuk datang dengan "konvensi" untuk hal semacam ini karena anda'll hanya berakhir membingungkan setiap pendatang baru.
Aku digunakan untuk memilih '
, terutama untuk'''docstrings'''
, seperti yang saya menemukan """ini menciptakan beberapa bulu"""
. Juga, '
dapat diketik tanpa Shift kunci di Swiss jerman keyboard.
Sejak itu saya telah berubah untuk menggunakan tiga tanda kutip untuk """docstrings"""
, agar sesuai dengan PEP 257.
I'm dengan Akan:
I'll tetap dengan itu, bahkan jika itu berarti banyak yang melarikan diri.
Aku mendapatkan nilai tunggal dikutip pengidentifikasi berdiri keluar karena tanda kutip. Sisa dari praktek-praktek yang ada hanya untuk memberikan orang-orang tunggal dikutip pengidentifikasi berdiri beberapa kamar.
Jika string anda telah mengandung, maka anda harus menggunakan yang lain. Misalnya, "Anda're mampu melakukan hal ini"
, atau 'katanya "Hi!",'
. Selain itu, anda hanya harus konsisten seperti yang anda bisa (hanya modul, dalam sebuah paket, dalam sebuah proyek, dalam suatu organisasi).
Jika kode anda akan dibaca oleh orang-orang yang bekerja dengan C/C++ (atau jika anda beralih di antara bahasa-bahasa tersebut dan Python), kemudian menggunakan''
untuk single-karakter string, dan ","
untuk string yang lebih panjang mungkin dapat membantu memudahkan transisi. (Demikian juga untuk mengikuti bahasa lain di mana mereka tidak dapat dipertukarkan).
Kode Python I've terlihat di alam liar cenderung mendukung "
atas '
, tapi hanya sedikit. Satu pengecualian adalah bahwa """ini"""
adalah jauh lebih umum daripada'''ini'''
, dari apa yang saya lihat.
Triple mengutip komentar yang menarik subtopik dari pertanyaan ini. PEP 257 menentukan tiga tanda kutip untuk doc string. Saya melakukan pemeriksaan cepat menggunakan Google Code Pencarian dan menemukan bahwa [triple double quotes pada Python][2] adalah tentang 10x sepopuler [triple single quote][3] -- 1.3 M vs 131K kejadian di kode Google indeks. Jadi dalam garis multi kasus kode anda mungkin akan menjadi lebih akrab bagi orang-orang jika menggunakan tiga tanda kutip ganda.
[2]: http://www.google.com/codesearch?hl=en&lr=&q=lang%3Apython+%22% 22%22 [3]: http://www.google.com/codesearch?hl=en&lr=&q=lang%3Apython+%27% 27% 27
"If you're going to use apostrophes,
^
you'll definitely want to use double quotes".
^
Untuk itu alasan sederhana, saya selalu menggunakan tanda kutip ganda di luar. Always
Berbicara bulu, apa yang baik adalah perampingan string literal dengan ' jika anda're akan harus menggunakan melarikan diri karakter untuk mewakili apostrof? Apakah itu menyinggung coders untuk membaca novel? Saya dapat't membayangkan betapa menyakitkan bahasa inggris sma kelas adalah untuk anda!
Python menggunakan kutipan seperti ini:
mystringliteral1="this is a string with 'quotes'"
mystringliteral2='this is a string with "quotes"'
mystringliteral3="""this is a string with "quotes" and more 'quotes'"""
mystringliteral4='''this is a string with 'quotes' and more "quotes"'''
mystringliteral5='this is a string with \"quotes\"'
mystringliteral6='this is a string with \042quotes\042'
mystringliteral6='this is a string with \047quotes\047'
print mystringliteral1
print mystringliteral2
print mystringliteral3
print mystringliteral4
print mystringliteral5
print mystringliteral6
Yang memberikan output sebagai berikut:
this is a string with 'quotes'
this is a string with "quotes"
this is a string with "quotes" and more 'quotes'
this is a string with 'quotes' and more "quotes"
this is a string with "quotes"
this is a string with 'quotes'
Saya menggunakan tanda kutip ganda pada umumnya, tetapi tidak untuk alasan tertentu - Mungkin hanya karena kebiasaan dari Jawa.
Saya kira anda're juga lebih cenderung ingin apostrof dalam inline literal string dari anda yang ingin tanda kutip ganda.
It's mungkin gaya preferensi lebih dari apa pun. Aku hanya memeriksa PEP 8 dan tidak't melihat apapun lagi dari tunggal vs ganda kutipan.
Saya lebih memilih tanda kutip tunggal karena hanya satu keystroke, bukan dua. Artinya, saya don't harus mash tombol shift untuk membuat single quote.
Di Perl anda ingin menggunakan tanda kutip tunggal ketika anda memiliki string yang doesn't perlu interpolasi variabel atau melarikan diri karakter seperti \n, \t, \r, dll.
PHP membuat perbedaan yang sama seperti Perl: konten dalam tanda kutip tunggal tidak akan ditafsirkan (bahkan tidak \n akan diubah), sebagai lawan untuk double quotes yang dapat berisi variabel-variabel yang memiliki nilai mereka dicetak.
Python tidak, aku'm takut. Secara teknis terlihat, tidak ada $ tanda (atau sejenisnya) untuk memisahkan nama/teks dari sebuah variabel dalam Python. Kedua fitur membuat Python lebih mudah dibaca, lebih sedikit membingungkan, setelah semua. Tanda kutip tunggal dan ganda dapat digunakan secara bergantian dalam Python.
Saya hanya menggunakan apa pun yang menyerang mewah saya pada waktu itu; it's mudah untuk dapat beralih di antara dua at iseng!
Tentu saja, ketika mengutip kutipan characetrs, beralih antara dua mungkin tidak begitu aneh setelah semua...
Saya bertujuan untuk meminimalkan kedua piksel dan mengejutkan. Saya biasanya lebih suka '
dalam rangka untuk meminimalkan piksel, tapi "
sebaliknya jika string memiliki apostrof, lagi-lagi untuk meminimalkan piksel. Untuk docstring, namun, saya lebih memilih """
atas'''
karena yang terakhir adalah non-standar, biasa, dan oleh karena itu mengherankan. Jika sekarang saya memiliki banyak string di mana saya digunakan "
per logika di atas, tetapi juga salah satu yang bisa lolos dengan '
, saya masih dapat menggunakan "
di dalamnya untuk menjaga konsistensi, hanya untuk meminimalkan kejutan.
Mungkin hal ini membantu untuk berpikir dari pixel minimalisasi filsafat dengan cara sebagai berikut. Akan anda lebih suka bahwa karakter bahasa inggris tampak seperti A B C
atau AA BB CC
? Pilihan terakhir limbah 50% dari non-kosong piksel.
Tim anda's rasa atau proyek anda's coding pedoman.
Jika anda berada di sebuah multilanguage lingkungan, anda mungkin ingin mendorong penggunaan dari jenis yang sama dari kutipan string yang lain menggunakan bahasa, misalnya. Yang lain, saya pribadi lebih suka tampilan '
Saya menggunakan tanda kutip ganda karena saya telah melakukannya selama bertahun-tahun dalam banyak bahasa (C++, Java, VB...) kecuali Bash, karena saya juga menggunakan tanda kutip ganda pada teks normal dan karena saya'm menggunakan (dimodifikasi) non-keyboard bahasa inggris di mana kedua karakter memerlukan tombol shift.
'
= "
/
= \
= \\
contoh :
f = open('c:\word.txt', 'r')
f = open("c:\word.txt", "r")
f = open("c:/word.txt", "r")
f = open("c:\\\word.txt", "r")
Hasil yang sama
=>> tidak, mereka're tidak sama.
Satu backslash akan melarikan diri karakter. Anda hanya terjadi untuk sukses dalam contoh itu karena \k
dan \w
tidak't berlaku lolos seperti \t
atau \n
atau \\
atau \"
Jika anda ingin menggunakan satu garis miring terbalik (dan mereka menafsirkan seperti itu), maka anda perlu menggunakan "raw" string. Anda dapat melakukan ini dengan menempatkan 'r
' di depan string
im_raw = r'c:\temp.txt'
non_raw = 'c:\\temp.txt'
another_way = 'c:/temp.txt'
Sejauh yang jalan di Windows prihatin, garis miring ke depan ditafsirkan dengan cara yang sama. Jelas string itu sendiri berbeda sekalipun. Saya tidak't menjamin bahwa mereka're ditangani dengan cara ini pada perangkat eksternal, meskipun.