0% found this document useful (0 votes)
19 views

Python Coding Rule

The document provides guidelines for Python coding style and conventions. It discusses indentation, use of tabs vs spaces, maximum line length, blank lines and other layout guidelines to make Python code more readable and consistent. The guidelines are based on PEP 8, the Python style guide, and recommendations from Python's creator Guido van Rossum.

Uploaded by

彭彥碩
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views

Python Coding Rule

The document provides guidelines for Python coding style and conventions. It discusses indentation, use of tabs vs spaces, maximum line length, blank lines and other layout guidelines to make Python code more readable and consistent. The guidelines are based on PEP 8, the Python style guide, and recommendations from Python's creator Guido van Rossum.

Uploaded by

彭彥碩
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

PythonCodingRule

ᓔথ㓪ⷕ㾘㣗
䆥〓 Pythonᓔথ㓪ⷕ㾘㣗

1. Pythonᓔথ㓪ⷕ㾘㣗
3\WKRQᓔথ㓪ⷕ㾘㣗 1. ҟ㒡
2. ϔ㟈ᗻⱘᓎ䆂
--- hoxide dreamingk 040724 3. ҷⷕⱘᏗሔ
--- xyb 040915 1. 㓽䖯
--- ZoomQuiet MoinMoin 050610 2. ࠊ㸼ヺ䖬ᰃぎḐ?
3. 㸠ⱘ᳔໻䭓ᑺ
⫼Python䖯㸠ᓔথᯊⱘ㓪ⷕ亢Ḑ㑺ᅮ
䖯㸠ᓔথᯊⱘ㓪ⷕ亢Ḑ㑺ᅮ ॳ᭛:epes:PEP 008ljStyle Guide for Python CodeNJ 4. ぎ㸠
5. 㓪ⷕ
4. ᇐܹ
ҟ㒡 5. ぎḐ
1. ݊ᅗᓎ䆂
䖭㆛᭛ḷ᠔㒭ߎⱘ㓪ⷕ㑺ᅮ䗖⫼Ѣ೼Џ㽕ⱘPythonথᏗ⠜ᴀЁ㒘៤ᷛ‫ޚ‬ᑧⱘPython ҷⷕ.䇋ᶹ䯙Ⳍ 6. ⊼䞞
݇ⱘ݇Ѣ೼PythonⱘCᅲ⦄ЁCҷⷕ亢Ḑᣛफⱘᦣ䗄.
1. ⊼䞞ഫ
䖭㆛᭛ḷᬍ㓪㞾Guido᳔߱ⱘljPython亢ḐᣛफNJϔ᭛. ᑊҢljBarry's style guideNJЁ⏏ࡴњ䚼ߚ‫ݙ‬ 2. 㸠‫⊼ݙ‬䞞
ᆍ. ೼᳝‫ކ‬さⱘഄᮍˈGuideⱘ亢Ḑ㾘߭ᑨ䆹ᰃヺড়ᴀPEPⱘᛣ೒ (䆥⊼˖ህᰃᔧ᳝‫ކ‬さᯊˈᑨҹ 7. ᭛ḷ࣪
Guido亢ḐЎ‫ )ޚ‬䖭㆛PEPг䆌ҡ✊ᇮ᳾ᅠ៤(ᅲ䰙Ϟˈᅗৃ㛑∌䖰ϡӮ㒧ᴳ). 8. ⠜ᴀ⊼䆄
9. ੑৡ㑺ᅮ
ϔ㟈ᗻⱘᓎ䆂 1. ᦣ䗄:ੑৡ亢Ḑ
2. 䇈ᯢ:ੑৡ㑺ᅮ
ᛮ㷶ᕫՓ⫼ϔ㟈ᗻᰃ᮴ⶹⱘཪᗾ(A
ᛮ㷶ᕫՓ⫼ϔ㟈ᗻᰃ᮴ⶹⱘཪᗾ Foolish Consistency is the Hobgoblin of Little Minds) 1. ᑨ䙓‫ⱘܡ‬ৡᄫ
2. ῵ഫৡ
! 3. ㉏ৡ
-- Zoomq 4. ᓖᐌৡ
5. ܼሔব䞣ৡ
೼䖭㆛亢ḐᣛᇐЁⱘϔ㟈ᗻᰃ䞡㽕ⱘ. ೼ϔϾ乍Ⳃ‫ⱘݙ‬ϔ㟈ᗻ᳈䞡㽕. ೼ϔϾ῵ഫ៪ߑ᭄‫ⱘݙ‬ϔ㟈 6. ߑ᭄ৡ
ᗻ᳔䞡㽕. 7. ᮍ⊩ৡ੠ᅲ՟ব䞣
8. 㒻ᡓⱘ䆒䅵
Ԛ᳔䞡㽕ⱘᰃ:ⶹ䘧ԩᯊӮϡϔ㟈 -- ᳝ᯊাᰃ≵᳝ᅲᮑ亢Ḑᣛᇐ.ᔧߎ⦄⭥ᚥᯊ,
10. 䆒䅵ᓎ䆂
䖤⫼Դⱘ᳔Շ߸ᮁ.ⳟⳟ߿ⱘ՟ᄤ,✊ৢ‫އ‬ᅮᗢḋⳟ䍋ᴹ᳈ད.ᑊϨ㽕ϡ㘏ϟ䯂!
ᠧ⸈ϔᴵ᮶ᅮ㾘߭ⱘϸϾད⧚⬅:
1. ᔧᑨ⫼䖭Ͼ㾘߭ᰃᇚᇐ㟈ҷⷕৃ䇏ᗻϟ䰡,े֓ᇍᶤҎᴹ䇈,ҪᏆ㒣дᛃѢᣝ䖭ᴵ㾘߭ᴹ䯙䇏ҷⷕњ.
2. Ўњ੠਼ೈⱘҷⷕֱᣕϔ㟈㗠ᠧ⸈㾘߭(г䆌ᰃग़৆ॳ಴)
-- 㱑✊䖭гᰃϾ⏙䰸݊ᅗ⏋хⱘདᴎӮ(ⳳℷⱘXP亢Ḑ).

ҷⷕⱘᏗሔ

(Code lay-out)

㓽䖯

(Indentation)
Փ⫼EmacsⱘPython-modeⱘ咬䅸ؐ:4ϾぎḐϔϾ㓽䖯ሖ⃵. ᇍѢ⹂ᅲস㗕ⱘҷⷕ,ԴϡᏠᳯѻ⫳⏋х,ৃҹ㒻㓁Փ⫼8ぎḐⱘࠊ㸼ヺ
(8-space tabs). Emacs Python-mode㞾ࡼথ⦄᭛ӊЁЏ㽕ⱘ㓽䖯ሖ⃵,ձℸ䆒ᅮ㓽䖯খ᭄.

ࠊ㸼ヺ䖬ᰃぎḐ"

(Tabs or Spaces)
∌䖰ϡ㽕⏋⫼ࠊ㸼ヺ੠ぎḐ. ᳔⌕㸠ⱘPython㓽䖯ᮍᓣᰃҙՓ⫼ぎḐ, ݊⃵ᰃҙՓ⫼ࠊ㸼ヺ.⏋ড়ⴔࠊ㸼ヺ੠ぎḐ㓽䖯ⱘҷⷕᇚ㹿䕀ᤶ
៤ҙՓ⫼ぎḐ. (೼EmacsЁ,䗝ЁᭈϾ㓧‫ކ‬ऎ,ᣝESC-xএ䰸ࠊ㸼ヺ(untabify).) 䇗⫼pythonੑҸ㸠㾷䞞఼ᯊՓ⫼-t䗝乍,ৃᇍҷⷕЁϡড়⊩
ᕫ⏋ড়ࠊ㸼ヺ੠ぎḐথߎ䄺ਞ(warnings). Փ⫼-ttᯊ䄺ਞ(warnings)ᇚব៤䫭䇃(errors).䖭ѯ䗝乍ᰃ㹿催ᑺ᥼㤤ⱘ.
ᇍѢᮄⱘ乍Ⳃ,ᔎ⚜᥼㤤ҙՓ⫼ぎḐ(spaces-only)㗠ϡᰃࠊ㸼ヺ. 䆌໮㓪䕥఼ᢹ᳝ՓПᯧѢᅲ⦄ⱘࡳ㛑.(೼EmacsЁ,⹂䅸indent-tabs-
modeᰃnil).

㸠ⱘ᳔໻䭓ᑺ

(Maximum Line Length)


਼ೈҡ✊᳝䆌໮䆒໛㹿䰤ࠊ೼↣㸠80ᄫヺ;㗠Ϩ,にষ䰤ࠊ೼80Ͼᄫヺ Փᇚ໮Ͼにষᑊᥦᬒ㕂៤Ўৃ㛑.೼䖭ѯ䆒໛ϞՓ⫼咬䅸ⱘᡬ঴
(wrapping)ᮍᓣⳟ䍋ᴹ᳝⚍ϥ䰟. ಴ℸ,䇋ᇚ᠔᳝㸠䰤ࠊ೼᳔໻79ᄫヺ(Emacs‫⹂ޚ‬ᕫᇚ㸠䰤ࠊЎ䭓80ᄫヺ), ᇍ乎ᑣᥦᬒⱘ໻ഫ᭛ᴀ(᭛
ḷᄫヺІ៪⊼䞞),᥼㤤ᇚ䭓ᑺ䰤ࠊ೼72ᄫヺ.
ᡬ঴䭓㸠ⱘ佪䗝ᮍ⊩ᰃՓ⫼Pyhonᬃᣕⱘ೚ᣀো,ᮍᣀো(brackets)੠㢅ᣀো(braces)‫ⱘݙ‬㸠ᓊ㓁. བᵰ䳔㽕,Դৃҹ೼㸼䖒ᓣ਼ೈ๲ࡴϔ
ᇍ乱໪ⱘ೚ᣀো, Ԛᰃ᳝ᯊՓ⫼ড᭰ᴴⳟ䍋ᴹ᳈ད.⹂䅸ᙄᔧᕫ㓽䖯њᓊ㓁ⱘ㸠. EmacsⱘPython-modeℷ⹂ᕫᅠ៤њ䖭ѯ.ϔѯ՟ᄤ:
Toggle line numbers

1 class Rectangle(Blob):
2
3 def __init__(self, width, height,
4 color='black', emphasis=None, highlight=0):
5 if width == 0 and height == 0 and \
color == 'red' and emphasis == 'strong' or \
highlight > 100:
6 raise ValueError, "sorry, you lose"
7 if width == 0 and height == 0 and (color == 'red' or
8 emphasis is None):
9 raise ValueError, "I don't think so"
10 Blob.__init__(self, width, height,
11 color, emphasis, highlight)

ぎ㸠

(Blank Lines)
⫼ϸ㸠ぎ㸠ߚࡆ乊ሖߑ᭄੠㉏ⱘᅮН,㉏‫ݙ‬ᮍ⊩ⱘᅮН⫼ऩϾぎ㸠ߚࡆ. 乱໪ⱘぎ㸠ৃ㹿⫼Ѣ(ֱᅜⱘ(sparingly))ߚࡆⳌ݇ߑ᭄㒘៤ⱘ
㕸(groups of related functions). ೼ϔ㒘Ⳍ݇ⱘऩহЁ䯈ৃҹⳕ⬹ぎ㸠.(՟བ.ϔ㒘થ‫(ܗ‬a set of dummy implementations)).
ᔧぎ㸠⫼Ѣߚࡆᮍ⊩(method)ⱘᅮНᯊ,೼'class'㸠੠㄀ϔϾᮍ⊩ᅮНП䯈г㽕᳝ϔϾぎ㸠.
೼ߑ᭄ЁՓ⫼ぎ㸠ᯊ,䇋䇼ᜢⱘ⫼Ѣ㸼⼎ϔϾ䘏䕥↉㨑(indicate logical sections).
Python᥹ফcontol-L(े^L)ᤶ义ヺ԰ЎぎḐ;Emacs(੠ϔѯᠧॄᎹ‫ )݋‬㾚䖭ϾᄫヺЎ义䴶ߚࡆヺ,಴ℸ೼Դⱘ᭛ӊЁ,ৃҹ⫼ҪӀᴹЎⳌ
݇⠛↉(sections)ߚ义.

㓪ⷕ

(Encodings)epes:(PEP 263)
PythonḌᖗথᏗЁⱘҷⷕᖙ乏ྟ㒜Փ⫼ASCII៪Latin-1㓪ⷕ(জৡ ISO-8859-1). Փ⫼ASCIIⱘ᭛ӊϡᖙ᳝䆥ⷕcookie(coding cookie).
Latin-1ҙᔧ⊼䞞៪᭛ḷᄫヺІ⍝ঞ԰㗙ৡᄫ䳔㽕Latin-1ᯊᠡ㹿Փ⫼; ঺໪Փ⫼\x䕀Нᄫヺᰃ೼ᄫヺІЁࣙ৿䴲ASCII(non-ASCII)᭄᥂
ⱘ佪䗝ᮍ⊩. ԰ЎPEP 263ᅲ⦄ҷⷕⱘ⌟䆩༫ӊⱘ䚼ߚ᭛ӊᰃϾ՟໪.

Python 2.4 Unicode


UTF-8

--ZoomQuiet

ᇐܹ

(Imports)
䗮ᐌᑨ䆹೼ऩ⣀ⱘ㸠Ёᇐܹ(Imports),՟བ:

No: import sys, os


Yes: import sys
import os

Ԛᰃ䖭ḋгᰃৃҹⱘ:

from types import StringType, ListType

Imports 䗮ᐌ㹿ᬒ㕂೼᭛ӊⱘ乊䚼,ҙ೼῵ഫ⊼䞞੠᭛ḷᄫヺІПৢ,೼῵ഫⱘܼሔব䞣੠ᐌ䞣Пࠡ.Importsᑨ䆹᳝乎ᑣഄ៤㒘ᅝᬒ.
1. ᷛ‫ޚ‬ᑧⱘᇐܹ(Imports )
2. Ⳍ݇ⱘЏࣙ(major package)ⱘᇐܹ(े,᠔᳝ⱘemailࣙ೼䱣ৢᇐܹ)
3. ⡍ᅮᑨ⫼ⱘᇐܹ(imports)
Դᑨ䆹೼↣㒘ᇐܹП䯈ᬒ㕂ϔϾぎ㸠.
ᇍѢ‫ݙ‬䚼ࣙⱘᇐܹᰃϡ᥼㤤Փ⫼Ⳍᇍᇐܹⱘ.ᇍ᠔᳝ᇐܹ䛑㽕Փ⫼ࣙⱘ㒱ᇍ䏃ᕘ.
ҢϔϾࣙ৿㉏ⱘ῵ഫЁᇐܹ㉏ᯊ,䗮ᐌৃҹ‫ݭ‬៤䖭ḋ:

from MyClass import MyClass


from foo.bar.YourClass import YourClass

བᵰ䖭ḋ‫ݭ‬ᇐ㟈њᴀഄৡᄫ‫ކ‬さ,䙷Мህ䖭ḋ‫ݭ‬

import MyClass
import foo.bar.YourClass

ेՓ⫼0\&ODVV0\&ODVV੠IRREDU<RXU&ODVV<RXU&ODVV

ぎḐ

(Whitespace in Expressions and Statements)


Guidoϡ୰⃶೼ҹϟഄᮍߎ⦄ぎḐ:
VSDP KDP>@^HJJV` $OZD\VZULWHWKLVDV VSDP KDP>@^HJJV` 
㋻᣼ⴔ೚ᣀো,ᮍᣀো੠㢅ᣀোⱘ,བ:VSDP KDP>@^HJJV` 
㽕ྟ㒜ᇚᅗ‫ݭ‬៤VSDP KDP>@^HJJV` 
LI[ SULQW[\[\ \[ Always write this as LI[ SULQW[\[\ \[
㋻䌈೼䗫ো,ߚো៪‫ݦ‬োࠡⱘ,བ:
LI[ SULQW[\[\ \[ 㽕ྟ㒜ᇚᅗ‫ݭ‬៤ LI[ SULQW[\[\ \[
㋻䌈ⴔߑ᭄䇗⫼ⱘখ᭄߫㸼ࠡᓔᓣᣀো(open parenthesis )ⱘ,བVSDP  .㽕ྟ㒜ᇚᅗ‫ݭ‬៤VSDP  .
VOLFLQJDVLQGLFW> NH\ @ OLVW>LQGH[@ Always write this as GLFW> NH\ @ OLVW>LQGH[@
㋻䌈೼㋶ᓩ៪ߛ⠛(slicing?ϟᷛ?)ᓔྟⱘᓔᓣᣀোࠡⱘ,བ:
GLFW> NH\ @ OLVW>LQGH[@㽕ྟ㒜ᇚᅗ‫ݭ‬៤GLFW> NH\ @ OLVW>LQGH[@
೼䌟ؐ(៪݊ᅗ)䖤ㅫヺ਼ೈⱘ⫼Ѣ੠݊ᅗᑊᥦⱘϔϾҹϞⱘぎḐ,བ:
Toggle line numbers

1 x = 1
2 y = 2
3 long_variable = 3

㽕ྟ㒜ᇚᅗ‫ݭ‬៤
Toggle line numbers

1 x = 1
2 y = 2
3 long_variable = 3
(ϡ㽕ᇍҹϞӏᛣϔᴵ੠Ҫѝ䆎 --- Guido ‫ݏ‬៤䖭ḋⱘ亢Ḑ䍙䖛20ᑈњ.)

݊ᅗᓎ䆂

(Other Recommendations)
ྟ㒜೼䖭ѯѠ‫ܗ‬䖤ㅫヺϸ䖍ᬒ㕂ϔϾぎḐ:䌟ؐ(=), ↨䕗(==, <, >, !=, <>, <=,>=, in, not in, is, is not), Ꮧᇨ䖤ㅫ (and, or, not).
* ᣝԴⱘⳟ⊩೼ㅫᴃ䖤ㅫヺ਼ೈᦦܹぎḐ. ྟ㒜ֱᣕѠ‫ܗ‬䖤ㅫヺϸ䖍ぎḐⱘϔ㟈.
ϔѯ՟ᄤ:
Toggle line numbers

1 i = i+1
2 submitted = submitted + 1
3 x = x*2 - 1
4 hypot2 = x*x + y*y
5 c = (a+b) * (a-b)
6 c = (a + b) * (a - b)

ϡ㽕೼⫼Ѣᣛᅮ݇䬂ᄫখ᭄៪咬䅸খ᭄ؐⱘ'='ো਼ೈՓ⫼ぎḐ,՟བ:
Toggle line numbers

1 def complex(real, imag=0.0):


2 return magic(r=real, i=imag)

ϡ㽕ᇚ໮ᴵ䇁হ‫ݭ‬೼ৠϔ㸠Ϟ.

No: if foo == 'blah': do_blah_thing()


Yes: if foo == 'blah':
do_blah_thing()

No: do_one(); do_two(); do_three()


Yes: do_one()
do_two()
do_three()
⊼䞞

(Comments)
ৠҷⷕϡϔ㟈ⱘ⊼䞞↨≵⊼䞞᳈Ꮒ.ᔧҷⷕׂᬍᯊ,ྟ㒜Ӭ‫ܜ‬᳈ᮄ⊼䞞!
⊼䞞ᑨ䆹ᰃᅠᭈⱘহᄤ. བᵰ⊼䞞ᰃϔϾⷁ䇁៪হᄤ,佪ᄫ↡ᑨ䆹໻‫ݭ‬, 䰸䴲ҪᰃϔϾҹᇣ‫ݭ‬ᄫ↡ᓔ༈ⱘᷛ䆚ヺ(∌䖰ϡ㽕ׂᬍᷛ䆚ヺ
ⱘ໻ᇣ‫)ݭ‬.
བᵰ⊼䞞ᕜⷁ,᳔དⳕ⬹᳿ሒⱘহো(period?㒧ሒহ᳿ⱘ‫ذ‬乓?гৃҹᰃ䗫ো৻,) ⊼䞞ഫ䗮ᐌ⬅ϔϾ៪໮Ͼ⬅ᅠᭈহᄤᵘ៤ⱘ↉㨑㒘៤,
↣Ͼহᄤᑨ䆹ҹহো㒧ሒ.
Դᑨ䆹೼হ᳿,হোৢՓ⫼ϸϾぎḐ,ҹ֓ՓEmacsⱘᮁ㸠੠฿‫ܙ‬Ꮉ԰ण䇗ϔ㟈 (䆥ᣝ:ᑨ䆹䇈ᰃՓ䖭ϸ⾡ࡳ㛑ℷᐌᎹ԰,". "㒭ߎњ᭛ḷ
㒧ᵘⱘᦤ⼎).
⫼㣅䇁к‫ݭ‬ᯊ,ᮁ䆡੠ぎḐᰃৃ⫼ⱘ.
䴲㣅䇁೑ᆊⱘPython⿟ᑣਬ:䇋⫼㣅䇁к‫ݭ‬Դⱘ⊼䞞,䰸䴲Դ120%ⱘ⹂ֵ 䖭ѯҷⷕϡӮ㹿ϡពԴⱘ䇁㿔ⱘҎ䯙䇏.

E
E

-- ZoomQUiet
㑺ᅮՓ⫼㒳ϔⱘ᭛ḷ࣪⊼䞞Ḑᓣ᳝߽Ѣ㡃དдᛃ੠ಶ䯳ᓎ䆂ʽ-- CodeCommentingRule

⊼䞞ഫ

(Block Comments)
⊼䞞ഫ䗮ᐌᑨ⫼Ѣ䎳䱣ⴔϔѯ(៪㗙ܼ䚼)ҷⷕᑊ੠䖭ѯҷⷕ᳝ⴔⳌৠⱘ㓽䖯ሖ⃵. ⊼䞞ഫЁ↣㸠ҹ'#'੠ϔϾぎḐᓔྟ(䰸䴲Ҫᰃ⊼䞞
‫ⱘݙ‬㓽䖯᭛ᴀ). ⊼䞞ഫ‫↉ⱘݙ‬㨑ҹҙ৿ऩϾ'#'ⱘ㸠ߚࡆ. ⊼䞞ഫϞϟᮍ᳔ད᳝ϔぎ㸠ࣙೈ(៪Ϟᮍϸ㸠ϟᮍϔ㸠,ᇍϔϾᮄߑ᭄ᅮН↉
ⱘ⊼䞞).

㸠‫⊼ݙ‬䞞

(Inline Comments)
(inline?‫ݙ‬㘨?㗏៤"㸠‫↨"ݙ‬䕗ད৻)
ϔϾ㸠‫⊼ݙ‬䞞ᰃ੠䇁হ೼ৠϔ㸠ⱘ⊼䞞.㸠‫⊼ݙ‬䞞ᑨ䆹䇼ᜢ䗖⫼. 㸠‫⊼ݙ‬䞞ᑨ䆹㟇ᇥ⫼ϸϾぎḐ੠䇁হߚᓔ. ᅗӀᑨ䆹ҹ'#'੠ऩ
ϾぎḐᓔྟ.
x = x+1 # Increment x

བᵰ䇁ᛣᰃᕜᯢњⱘ,䙷М㸠‫⊼ݙ‬䞞ᰃϡᖙ㽕ⱘ,џᅲϞᰃᑨ䆹㹿এᥝⱘ. ϡ㽕䖭ḋ‫ݭ‬:

x = x+1 # Increment x

x = x+1 # Compensate for border

Ԛᰃ᳝ᯊ,䖭ḋᰃ᳝Ⲟⱘ:

x = x+1 # Compensate for border

᭛ḷ࣪

(Documentation Strings)
Conventions for writing good documentation strings (a.k.a. "docstrings") are immortalized in epes:PEP 257.
ᑨ䆹ϔⳈ䙉ᅜ㓪‫ݭ‬དⱘ᭛ḷᄫヺІ(জৡ"docstrings")ⱘ㑺ᅮ(?ᅲ೼ϡⶹ䘧ᗢМ䆥)

Documentation Strings-- ;
pydoc;epydoc,Doxygen , MoinMoin , ,
!
-- Zoomq

Ў᠔᳝݀݅῵ഫ,ߑ᭄,㉏੠ᮍ⊩㓪‫ݭ‬᭛ḷᄫヺІ.᭛ḷᄫヺІᇍ䴲݀ᓔⱘᮍ⊩ϡᰃᖙ㽕ⱘ,ԚԴᑨ䆹᳝ϔϾᦣ䗄䖭Ͼᮍ⊩‫خ‬ҔМⱘ⊼
䞞.䖭Ͼ⊼䞞ᑨ䆹೼"def"䖭㸠ৢ.
epes:PEP 257 ᦣ䗄њདⱘ᭛ḷᄫヺІⱘ㑺ᅮ.ϔᅮ⊼ᛣ,໮㸠᭛ḷᄫヺІ㒧ሒⱘ""" ᑨ䆹ऩ⣀៤㸠,՟བ:

"""Return a foobang

Optional plotz says to frobnicate the bizbaz first.


"""

ᇍऩ㸠ⱘ᭛ḷᄫヺІ,㒧ሒⱘ"""೼ৠϔ㸠гৃҹ.
Python \
:
#python
>>> import time
>>> dir(time)
['__doc__', '__file__', '__name__', 'accept2dyear', 'altzone', 'asctime', 'clock', 'ctime', 'daylight', 'gmtime',
'localtime', 'mktime', 'sleep', 'strftime', 'strptime', 'struct_time', 'time', 'timezone', 'tzname', 'tzset']
>>> help(time.time)
Help on built-in function time in module time:

time(...)
time() -> floating point number

Return the current time in seconds since the Epoch.


Fractions of a second may be present if the system clock provides them.

⠜ᴀ⊼䆄

(Version Bookkeeping) (៥㾝ᕫি"⊼䆄"᳈ད)


བᵰԴ㽕ᇚRCS៪CVSⱘᴖ乍(crud)ࣙ৿೼Դⱘ⑤᭛ӊЁ,ᣝབϟ‫خ‬.
Toggle line numbers

1 __version__ = "$Revision: 1.4 $"


2 # $Source: E:/cvsroot/python_doc/pep8.txt,v $

䖭Ͼ㸠ᑨ䆹ࣙ৿೼῵ഫⱘ᭛ḷᄫヺІПৢ,᠔᳝ҷⷕПࠡ,Ϟϟ⫼ϔϾぎ㸠ߚࡆ.

CVS

# $id$
# $Revision$

# $Id: ussp.py,v 1.22 2004/07/21 04:47:41 hd Exp $


# $Revision: 1.4 $
----HD

ੑৡ㑺ᅮ

(Naming Conventions)
Pythonᑧⱘੑৡ㑺ᅮ᳝⚍⏋х,᠔ҹ៥Ӏᇚ∌䖰ϡ㛑ՓПবᕫᅠܼϔ㟈--- ϡ䖛䖬ᰃ᳝݀䅸ⱘੑৡ㾘㣗ⱘ. ᮄⱘ῵ഫ੠ࣙ(ࣙᣀ㄀ϝᮍⱘ
Ḛᶊ)ᖙ乏ヺড়䖭ѯᷛ‫ޚ‬,ԚᇍᏆ᳝ⱘᑧᄬ೼ϡৠ亢Ḑⱘ, ֱᣕ‫ݙ‬䚼ⱘϔ㟈ᗻᰃ佪䗝ⱘ.

ᦣ䗄ੑৡ亢Ḑ

(Descriptive: Naming Styles)


᳝䆌໮ϡৠⱘੑৡ亢Ḑ.ҹϟⱘ᳝ࡽѢ䕼䅸ℷ೼Փ⫼ⱘੑৡ亢Ḑ,⣀ゟѢᅗӀⱘ԰⫼.
ҹϟⱘੑৡ亢Ḑᰃӫ᠔਼ⶹⱘ:
b (ऩϾᇣ‫ݭ‬ᄫ↡)
B (ऩϾ໻‫ݭ‬ᄫ↡)
ᇣ‫ݭ‬І བ:getname
ᏺϟߦⱘᇣ‫ݭ‬І བ:_getname
໻‫ݭ‬І བ:GETNAME
ᏺϟߦⱘ໻‫ݭ‬І བ:_GETNAME
CapitalizedWords(佪ᄫ↡໻‫ݭ‬ऩ䆡І) (៪ CapWords, CamelCase -- 䖭ḋੑৡᰃ⬅Ѣᅗⱘᄫ↡䫭㨑᳝㟈ⱘḋᄤ㗠ᴹⱘ.
䖭᳝ᯊг㹿ᔧ԰StudlyCaps. བ:GetName
mixedCase (⏋ড়໻ᇣ‫ݭ‬І)(Ϣ佪ᄫ↡໻‫ݭ‬ІϡৠП໘೼Ѣ㄀ϔϾᄫヺᰃᇣ‫ݭ‬བ:getName)
Capitalized_Words_With_Underscores(ᏺϟߦ㒓ⱘ佪ᄫ↡໻‫ݭ‬І) (ϥ䰟!)
䖬᳝ϔ⾡Փ⫼⡍߿ࠡ㓔ⱘ亢Ḑˈ⫼ѢᇚⳌ݇ⱘৡᄫߚ៤㒘.䖭೼PythonЁϡᐌ⫼, ԚᰃߎѢᅠᭈᗻ㽕ᦤϔϟ.՟བ,os.stat()ߑ᭄䖨ಲϔ
Ͼtuple, Ҫⱘ‫ܗ‬㋴Ӵ㒳Ϟ᳝䈵st_mode, st_size, st_mtimeㄝㄝ䖭ḋⱘৡᄫ. X11ᑧⱘ᠔᳝݀ᓔߑ᭄ҹXᓔ༈.(೼PythonЁ,䖭Ͼ亢Ḑ䗮ᐌ䅸
Ўᰃϡᖙ㽕ⱘ, ಴Ўሲᗻ੠ᮍ⊩ৡҹᇍ䈵԰ࠡ㓔,㗠ߑ᭄ৡҹ῵ഫৡ԰ࠡ㓔.)
঺໪,ҹϟ⫼ϟߦ㒓԰ࠡᇐ៪㒧ሒⱘ⡍⅞ᔶᓣᰃ㹿݀䅸ⱘ(䖭ѯ䗮ᐌৃҹ੠ӏԩдᛃ㒘ড়(Փ⫼?)):
_single_leading_underscore(ҹϔϾϟߦ㒓԰ࠡᇐ): ᔅⱘ"‫ݙ‬䚼Փ⫼(internal use)"ᷛᖫ.
(՟བ,"from M import *"ϡӮᇐܹҹϟߦ㒓ᓔ༈ⱘᇍ䈵).
single_trailing_underscore_(ҹϔϾϟߦ㒓㒧ሒ): ⫼Ѣ䙓‫ܡ‬ϢPython݇䬂䆡ⱘ‫ކ‬さ,՟བ.
"Tkinter.Toplevel(master, class_='ClassName')".
BBGRXEOHBOHDGLQJBXQGHUVFRUH(ঠϟߦ㒓): ҢPython 1.4䍋Ў㉏⾕᳝ৡ.
BBGRXEOHBOHDGLQJBDQGBWUDLOLQJBXQGHUVFRUHBB: ⡍⅞ⱘ(magic) ᇍ䈵៪ሲᗻ,ᄬ೼Ѣ⫼᠋᥻ࠊⱘ(user-controlled)ৡᄫぎ䯈, ՟བ:
BBLQLWBB, BBLPSRUWBB ៪ BBILOHBB. ᳝ᯊᅗӀ㹿⫼᠋ᅮН, ⫼Ѣ㾺থᶤϾ⡍⅞㸠Ў(magic behavior)(՟བ:䖤ㅫヺ䞡䕑); ᳝ᯊ㹿ᵘ䗴఼
(infrastructure)ᦦܹ,ҹ֓㞾ᏅՓ⫼៪Ўњ䇗䆩. ಴ℸ,೼᳾ᴹⱘ⠜ᴀЁ,ᵘ䗴఼(ᵒᬷᕫᅮНЎPython㾷䞞఼੠ᷛ‫ޚ‬ᑧ) ৃ㛑ᠧㅫᓎゟ㞾Ꮕ
ⱘ儨⊩ሲᗻ߫㸼,⫼᠋ҷⷕ䗮ᐌᑨ䆹䰤ࠊᇚ䖭⾡㑺ᅮ԰ЎᏅ⫼. ℆៤Ўᵘ䗴఼ⱘϔ䚼ߚⱘ⫼᠋ҷⷕৃҹ೼ϟ⒥㒓Ё㒧ড়Փ⫼ⷁࠡ㓔,՟
བ. BBERERBPDJLFBDWWUBB.

䇈ᯢੑৡ㑺ᅮ

(Prescriptive: Naming Conventions)

ᑨ䙓‫ⱘܡ‬ৡᄫ

(Names to Avoid)
∌䖰ϡ㽕⫼ᄫヺ`l'(ᇣ‫ݭ‬ᄫ↡el(ህᰃ䇏䷇,ϟৠ)), 2 ໻‫ݭ‬ᄫ↡RK ៪I'(໻‫ݭ‬ᄫ↡eye)԰Ўऩᄫヺⱘব䞣ৡ. ೼ᶤѯᄫԧЁ,䖭ѯᄫヺϡ
㛑Ϣ᭄ᄫ1੠0ߚᓔ.ᔧᛇ㽕Փ⫼'l'ᯊˈ⫼'L'ҷ᳓ᅗ.

῵ഫৡ

(Module Names)
῵ഫᑨ䆹ᰃϡ৿ϟߦ㒓ⱘ,ㅔⷁⱘ,ᇣ‫ⱘݭ‬ৡᄫ.
಴Ў῵ഫৡ㹿᯴ᇘࠄ᭛ӊৡ, ᳝ѯ᭛ӊ㋏㒳໻ᇣ‫ݭ‬ϡᬣᛳᑊϨ៾ⷁ䭓ৡᄫ, ῵ഫৡ㹿䗝ЎⳌᔧⷁᰃ䞡㽕ⱘ---䖭೼UnixϞϡᰃ䯂乬, Ԛ
ᔧҷⷕӴࠄMac ៪WindowsϞህৃ㛑ᰃϾ䯂乬њ.
ᔧϔϾ⫼C៪C++‫ⱘݭ‬ᠽሩ῵ഫ᳝ϔϾԈ䱣ⱘPython῵ഫ,䖭ϾPython῵ഫᦤկњ
ϔϾ᳈催ሖ(՟བˈ᳈䴶৥ᇍ䈵)ⱘ᥹ষᯊ,C/C++῵ഫ᳝ϔϾࠡᇐϟߦ㒓(བ˖_socket)
Pythonࣙᑨ䆹ᰃϡ৿ϟߦ㒓ⱘ,ㅔⷁⱘ,ܼᇣ‫ⱘݭ‬ৡᄫ.

㉏ৡ
(Class Names)
޴Т≵᳝՟໪ˈ㉏ৡᘏᰃՓ⫼佪ᄫ↡໻‫ݭ‬ऩ䆡І(CapWords)ⱘ㑺ᅮ.

ᓖᐌৡ

(Exception Names)
བᵰ῵ഫᇍ᠔᳝ᚙ‫މ‬ᅮНњऩϾᓖᐌ,ᅗ䗮ᐌ㹿ি‫"خ‬error"៪"Error". ԐТ‫ݙ‬ᓎ(ᠽሩ)ⱘ῵ഫՓ⫼"error"(՟བ:os.error), 㗠Python῵ഫ䗮
ᐌ⫼"Error" (՟བ: xdrlib.Error). 䍟࢓ԐТᰃؒ৥Փ⫼CapWordsᓖᐌৡ.

ܼሔব䞣ৡ

(Global Variable Names)


(䅽៥ӀᏠᳯ䖭ѯব䞣ᠧㅫা㹿⫼Ѣ῵ഫ‫ݙ‬䚼) 䖭ѯ㑺ᅮϢ䙷ѯ⫼Ѣߑ᭄ⱘ㑺ᅮᏂϡ໮.㹿䆒䅵ৃҹ䗮䖛"from M import *"ᴹՓ⫼ⱘ
䙷ѯ῵ഫ,ᑨ䆹೼䙷ѯϡᛇ㹿ᇐܹⱘܼሔব䞣(䖬᳝‫ݙ‬䚼ߑ᭄੠㉏)ࠡࡴϔϾϟߦ㒓).

ߑ᭄ৡ

(Function Names)
ߑ᭄ৡᑨ䆹Ўᇣ‫ݭ‬,ৃ㛑⫼ϟߦ㒓亢Ḑऩ䆡ҹ๲ࡴৃ䇏ᗻ. mixedCaseҙ㹿‫ܕ‬䆌⫼Ѣ䖭⾡亢ḐᏆ㒣ऴӬ࢓ⱘϞϟ᭛(བ: threading.py) ҹ
ֱ֓ᣕ৥ৢ‫ݐ‬ᆍ.

ᮍ⊩ৡ੠ᅲ՟ব䞣

(Method Names and Instance Variables)


䖭↉໻ԧϞ੠ߑ᭄Ⳍৠ:䗮ᐌՓ⫼ᇣ‫ݭ‬ऩ䆡,ᖙ㽕ᯊ⫼ϟߦ㒓ߚ䱨๲ࡴৃ䇏ᗻ.
Փ⫼ϔϾࠡᇐϟߦ㒓ҙ⫼Ѣϡᠧㅫ԰Ў㉏ⱘ݀݅᥹ষⱘ‫ݙ‬䚼ᮍ⊩੠ᅲ՟ব䞣. Pythonϡᔎࠊ㽕∖䖭ḋ; ᅗপ‫އ‬Ѣ⿟ᑣਬᰃ৺䙉ᅜ䖭Ͼ
㑺ᅮ.
Փ⫼ϸϾࠡᇐϟߦ㒓ҹ㸼⼎㉏⾕᳝ⱘৡᄫ. Pythonᇚ䖭ѯৡᄫ੠㉏ৡ䖲᥹೼ϔ䍋: བᵰ㉏Foo᳝ϔϾሲᗻৡЎ BBD, ᅗϡ㛑ҹ)RRBBD䆓
䯂. (ᠻ㨫ⱘ⫼᠋(An insistent user)䖬ᰃৃҹ䗮䖛)RRB)RRBBDᕫࠄ䆓䯂ᴗ.) 䗮ᐌ,ঠࠡᇐϟߦ㒓ᑨ䆹া⫼ᴹ䙓‫ܡ‬Ϣ㉏(Ўৃҹᄤ㉏࣪᠔䆒
䅵)Ёⱘሲᗻথ⫳ৡᄫ‫ކ‬さ.

㒻ᡓⱘ䆒䅵

(Designing for inheritance)


ྟ㒜㽕⹂ᅮϔϾ㉏Ёⱘᮍ⊩੠ᅲ՟ব䞣ᰃ৺㽕㹿݀ᓔ. 䗮ᐌ,∌䖰ϡ㽕ᇚ᭄᥂ব䞣݀ᓔ,䰸䴲Դᅲ⦄ⱘᴀ䋼Ϟাᰃ䆄ᔩ. ҎӀᘏᰃ᳈୰
⃶㒭㉏ᦤկϔϾߑ᭄ⱘ᥹ষ԰Ў᳓ᤶ (Python 2.2 ⱘϔѯᓔথ㗙೼䖭⚍Ϟ‫خ‬ᕫ䴲ᐌⓖ҂).
ৠḋ,⹂ᅮԴⱘሲᗻᰃ৺ᑨЎ⾕᳝ⱘ.⾕᳝Ϣ䴲᳝݀ⱘऎ߿೼Ѣ: ࠡ㗙∌䖰ϡӮ㹿⫼೼ϔϾ⌒⫳㉏Ё,㗠ৢ㗙ৃ㛑Ӯ. ᰃⱘ,Դᑨ䆹೼໻㛥
Ёህ⫼㒻ᡓ䆒䅵དњԴⱘ㉏.
⾕᳝ሲᗻᖙ乏᳝ϸϾࠡᇐϟߦ㒓,᮴ৢ㕂ϟߦ㒓.
䴲᳝݀ሲᗻᖙ乏᳝ϔϾࠡᇐϟߦ㒓,᮴ৢ㕂ϟߦ㒓.
݀݅ሲᗻ≵᳝ࠡᇐ੠ৢ㕂ϟߦ㒓,䰸䴲ᅗӀϢֱ⬭ᄫ‫ކ‬さ, ೼ℸᚙ‫މ‬ϟ,ऩϾৢ㕂ϟߦ㒓↨ࠡ㕂៪⏋хⱘᣐ‫ݭ‬㽕ད, ՟བ:class_ӬѢ
klass. ᳔ৢϔ⚍᳝ѯѝ䆂; བᵰⳌ↨class_Դ᳈୰⃶klass,䙷М䖭াᰃϔ㟈ᗻ䯂乬.

䆒䅵ᓎ䆂

(Programming Recommendations)
ৠ䈵NoneП㉏ⱘऩؐ䖯㸠↨䕗,ᑨ䆹∌䖰⫼:'is'៪'is not'ᴹ‫خ‬. ᔧԴᴀᛣᰃ"if x is not None"ᯊ,ᇍ‫ݭ‬៤"if x"㽕ᇣᖗ -- ՟བᔧԴ⌟䆩ϔϾ
咬䅸ЎNoneⱘব䞣៪খ᭄ᰃ৺㹿䆒㕂Ў݊ᅗؐᯊ. 䖭Ͼ݊ᅗؐৃ㛑ᰃϔϾ೼ᏗᇨϞϟ᭛ЁЎ‫!ؐⱘ؛‬
෎Ѣ㉏ⱘᓖᐌᘏᰃད䖛෎ѢᄫヺІⱘᓖᐌ. ῵ഫ੠ࣙᑨ䆹ᅮНᅗӀ㞾Ꮕⱘඳ‫ݙ‬⡍ᅮⱘ෎ᓖᐌ㉏(base exception class), ෎㉏ᑨ䆹ᰃ‫ݙ‬ᓎ
ⱘException㉏ⱘᄤ㉏. 䖬ྟ㒜ࣙ৿ϔϾ㉏ⱘ᭛ḷᄫヺІ.՟བ:
Toggle line numbers

1 class MessageError(Exception):
2 """Base class for errors in the email package."""

Փ⫼ᄫヺІᮍ⊩(methods)ҷ᳓ᄫヺІ῵ഫ,䰸䴲ᖙ乏৥ৢ‫ݐ‬ᆍPython 2.0ҹࠡⱘ⠜ᴀ. ᄫヺІᮍ⊩ᘏᰃ䴲ᐌᖿ,㗠Ϩ੠unicodeᄫヺІ݅


⫼ৠḋⱘAPI(ᑨ⫼⿟ᑣ᥹ষ)
೼Ẕᶹࠡ㓔៪ৢ㓔ᯊ䙓‫ܡ‬ᇍᄫヺІ䖯㸠ߛ⠛.
⫼startswith()੠endswith()ҷ᳓, ಴ЎᅗӀᰃᯢ⹂ⱘᑊϨ䫭䇃᳈ᇥ. ՟བ:

No: if foo[:3] == 'bar':


Yes: if foo.startswith('bar'):

՟໪ᰃབᵰԴⱘҷⷕᖙ乏Ꮉ԰೼Python 1.5.2 (Ԛᰃ៥ӀᏠᳯᅗϡӮথ⫳!).


ᇍ䈵㉏ൟⱘ↨䕗ᑨ䆹ྟ㒜⫼isinstance()ҷ᳓Ⳉ᥹↨䕗㉏ൟ.՟བ:

No: if type(obj) is type(1):


Yes: if isinstance(obj, int):

ẔᶹϔϾᇍ䈵ᰃ৺ᰃᄫヺІᯊ,㋻䆄ᅗгৃ㛑ᰃunicodeᄫヺІ! ೼Python 2.3, str੠unicode᳝݀݅ⱘ෎㉏,basestring,᠔ҹԴৃҹ䖭ḋ‫خ‬:


Toggle line numbers

1 if isinstance(obj, basestring):

೼Python 2.2 ㉏ൟ῵ഫЎℸᅮНњStringTypes㉏ൟ, ՟བ:


Toggle line numbers

1 from types import StringTypes


2 if isinstance(obj, StringTypes):

೼Python 2.0੠2.1,Դᑨ䆹䖭ḋ‫خ‬:
Toggle line numbers

1 from types import StringType, UnicodeType


2 if isinstance(obj, StringType) or \
isinstance(obj, UnicodeType) :

ᇍᑣ߫,(ᄫヺІ(strings),߫㸼(lists),‫ܗ‬㒘(tuples)), Փ⫼ぎ߫㸼ᰃfalse䖭Ͼџᅲ,಴ℸ"if not seq"៪"if seq"↨ "if len(seq)"៪"if not len(seq)"


ད.
к‫ݭ‬ᄫヺІ᭛ᄫᯊϡ㽕ձ䌪Ѣ᳝ᛣНⱘৢ㕂ぎḐ. 䖭⾡ৢ㕂ぎḐ೼㾚㾝Ϟᰃϡৃ䕼߿ⱘ,ᑊϨ᳝ѯ㓪䕥఼(⡍߿ᰃ䖥ᴹ,reindent.py) Ӯ
ᇚᅗӀׂᭈᥝ.
ϡ㽕⫼ == ᴹ↨䕗Ꮧᇨൟⱘؐҹ⹂ᅮᰃTrue៪False(ᏗᇨൟᰃPythn 2.3Ёᮄ๲ⱘ)

No: if greeting == True:


Yes: if greeting:
No: if greeting == True:
Yes: if greeting:

-- ZoomQuiet (2005-01-26)

last edited 2005-06-17 02:48:56 by ZoomQuiet

You might also like