https://docs.python.org/ko/3/tutorial/controlflow.html#default-argument-values
python tutorial 4 기타 제어 흐름 도구 その他の制御フローツール
if - elif - else
for-in
range(-10,-100-30) / range(len(a)) / print(range(10))
break / continue / else / psss
def 함수이름(매개변수):
도큐멘테이션 문자열 (docString)
매개변수 - 기본인자 / 키워드인자 / 가변인자
언패킹 (*리스트, 튜플 / **딕셔녀리)
람다식
어노테이션
PEP8
4.1. if 문 if 文
elif
'else if' 줄임. 과도한 들여쓰기를 피하는 데 유용
if - elif 시퀀스는 switch - case 문을 대신
キーワード 'elif' は 'else if' を短くしたもので、過剰なインデントを避けるのに役立ちます。
一連の if ... elif ... elif ... は、他の言語における switch 文や case 文の代用となります。
4.2. for
파스칼- 항상 숫자의 산술적인 진행을 통해 반복
C - 사용자가 반복단계와 중지 조건을 정의
Python の for 文は、
読者が C 言語や Pascal 言語で使いなれているかもしれない for 文とは少し違います。
(Pascal のように) 常に算術型の数列にわたる反復を行ったり、
(C のように) 繰返しステップと停止条件を両方ともユーザが定義できるようにするのとは違い、
파이썬 - 시퀀스(리스트나 문자열)의 항목들을 차례대로 변수에 대입하며 반복
Python の for 文は、任意のシーケンス型 (リストまたは文字列) にわたって反復を行います。
反復の順番はシーケンス中に要素が現れる順番です。
※ 이터레이트 iterate : 반복 反復
구조
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1
수행할 문장2
...
시퀀스를 반복 시, 사본이 만들어지지는 않음
시퀀스를 수정할 필요가 있다면 ‘사본’을 만들기 - 조건에 슬라이스 문 편리! words[:]
ループ内部でイテレートしているシーケンスを修正する必要があれば (例えば選択されたアイテムを複製するために)
最初にコピーを作ることをお勧めします。
シーケンスに対するイテレーションは暗黙にコピーを作りません。スライス記法はこれを特に便利にします
위 예에서
for w in words[:]: 대신 for w in words: 으로 입력하면
If문에서 ‘defenestrate‘을 word[0]에 계속 삽입하여 무한 루프가 됨.
for w in words:
この例は defenestrate を何度も繰り返し挿入することで、無限リストを作成しようとします。
4.3. range( ) 함수 range() 関数
range(n)
n만큼 수열생성 - 범위 생성
반복문 조건 만들 때 편리
range(5) : 0~4
数列にわたって反復を行う必要がある場合、組み込み関数 range() が便利です。
この関数は算術型の数列を生成します:
끝값은 만들어지는 수열에 포함 x
range(10) : 10개. 길이 10인 시퀀스 인덱스
指定した終端値は生成されるシーケンスには入りません。
range(10) は 10 個の値を生成し、長さ 10 のシーケンスにおける各項目のインデクスとなります。
range(시작, 끝, 스텝)
스텝 : 증가분 (음수가능)
range を別の数から開始したり、他の増加量を指定することもできます:
(負でも; 増加量は時に 'ステップ(step)' と呼ばれることもあります)
range(5, 10)
5, 6, 7, 8, 9
range(0, 10, 3)
0, 3, 6, 9
range(-10, -100, -30)
-10, -40, -70
for i range(len(n))
range() と len() を次のように組み合わせられます:
enumerate()가 편리
しかし、多くの場合は enumerate() 関数を使う方が便利です。
range() - print()해보기.
range を直接出力すると変なことになります:
range() : 리스트가 아님 -> 공간 절약
range() が返すオブジェクトは、いろいろな点でリストであるかのように振る舞いますが、本当はリストではありません。
これは、イテレートした時に望んだ数列の連続した要素を返すオブジェクトです。
しかし実際にリストを作るわけではないので、スペースの節約になります。
이터러블 (イテラブル iterable)
멤버들을 한 번에 하나씩 돌려 줄 수 있는 객체 - ex) list, str, tuple
소진될 때까지 항목을 구하는 함수와 구조의 조건으로 적합
for문 : for item in iterable
list() : 이터러블로 리스트생성
このようなオブジェクトは イテラブル (iterable) と呼ばれます。
これらは関数やコンストラクタのターゲットとして、あるだけの項目を逐次与えるのに適しています。
for 文がそのような イテレータ であることはすでに見てきました。
関数 list() もまた一つの例です。これはイテラブルからリストを生成します:
4.4. break 와 continue, 그리고 else
break:
가장 가까운 루프로부터 빠져나감
break 文 : C 言語と同じく、最も内側の for または while ループを中断します。
else :
루프 종료 시 실행
- for : 리스트 소진
- while : 조건 거짓
루프가 break 문으로 종료할 때는 실행 x
ループ文は else 節を持つことができます。
(for) 反復処理対象のリストを使い切ってループが終了したとき、
(while) 条件が偽になったときに実行されますが、
break 文でループが終了したときは実行されません。この動作を、
소수를 찾는 루프
素数を探す ループ
(else 절은 if문이 아니라 for 루프에 속합니다.)
(else 節は if 文 ではなく 、 for ループに属しています。)
try - else와 비슷
try - else : 예외가 발생하지 않을 때 실행
루프 - else : break 가 발생하지 않을 때 실행
ループの else 句は、 if 文の else よりも try 文の else に似ています。
try 文の else 句は例外が発生しなかった時に実行され、ループの else 句は break されなかった場合に実行されます。
try 文と例外についての詳細は 例外を処理する を参照してください。
continue
반복문을 이어서 함.
continue를 만나면 반복문 처음으로 돌아가 수행.
continue 文 C 言語から借りてきたもので、ループの次のイテレーションを実行します:
4.5. pass
pass
아무것도 하지 않음
문법적으로 문장이 필요하지만, 할 일이 없을 때 사용
何もしません。
文を書くことが構文上要求されているが、プログラム上何の動作もする必要がない時に使われます:
- 최소 클래스 생성 시
最小のクラスを作るときによく使われる方法です:
- 새로운 코드를 작성 시
함수나 조건부 바디를 채움
더 추상적으로(유연하게) 생각 할 수 있게 도와줌
pass のもう 1 つの使い道は、
新しいコードを書いているときの関数や条件文の仮置きの本体としてです。
こうすることで、より抽象的なレベルで考え続けられます。
pass は何事も無く無視されます
4.6. 함수 정의 関数を定義する
피보나치 수열 (임의 한도까지 피보나치 수열 구하기)
フィボナッチ数列 (Fibonacci series) : 任意の上限値まで書き出すような関数を作成できます:
함수 만드는 방법
def 함수 이름(매개변수):
body
함수정의 키워드 def
반드시 들여쓰기 후 body 작성
def は関数の 定義 (definition) を導くキーワードです。
def の後には、関数名と仮引数を丸括弧で囲んだリストを続けなければなりません。
関数の実体を構成する実行文は次の行から始め、インデントされていなければなりません。
독스트링(docstring)
함수 바디의 첫 문장. 함수의 도큐멘테이션 문자열
호출 시, 자동생성되는 문자열 -> 설명서
권장, 좋은 관습
사용자들이 대화형으로 코드를 열람할 수 있도록 하는 도구
関数の本体の記述する文の最初の行は文字列リテラルにすることもできます。
この文字列は関数のドキュメンテーション文字列 (documentation string) docstring
ドキュメンテーション文字列を使ったツールには、オンライン文書や印刷文書を自動的に生成したり、
ユーザが対話的にコードから直接閲覧できるようにするものがあります。
自分が書くコードにドキュメンテーション文字列を入れるのはよい習慣です。書く癖をつけてください。
함수의 지역변수는 지역 심볼 테이블에 저장/참조
함수 실행 시, 함수 지역 변수를 위해 새로운 심볼 테이블을 생성 - 지역 심볼 테이블
* 변수 참조 순서 : 지역 심볼 테이블 -> 전역 심볼 테이블 -> 내장 테이블
* 전역변수는 함수에서 직접 대입 x (global 문으로 명시하지 않는 이상 / 참조는 가능)
関数を 実行 (execution) するとき、
関数のローカル変数のために使われる新たなシンボルテーブル (symbol table) が用意されます。
関数内で変数への代入を行うと、その値はすべてこのローカルなシンボルテーブルに記憶されます。
一方、変数の参照を行うと、
まずローカルなシンボルテーブルが検索され、
次にさらに外側の関数のローカルなシンボルテーブルを検索し、
その後グローバルなシンボルテーブルを調べ、
最後に組み込みの名前テーブルを調べます。
従って、関数の中では、グローバルな変数を参照することはできますが、直接値を代入することはできません。
(global 文で名前を挙げておかない限り)
그래서
인자들은 값에 의한 호출로 전달 (call by value) - 값은 항상 객체의 값이 아니라 객체의 참조
사실, 객체 참조에 의한 호출이 더 좋은 표현 (call by object reference)
가변 객체가 전달되면, 호출자는 피호출자가 만든 변경을 볼 수 있기 때문 ( ex) 리스트에 항목 추가)
関数を呼び出す際の実際の引数 (実引数) は、関数が呼び出されるときに関数のローカルなシンボルテーブル内に取り込まれます。
そうすることで、引数は 値渡し (call by value) で関数に渡されることになります 。
(ここでの 値 (value) とは常にオブジェクトへの 参照(reference) をいい、オブジェクトの値そのものではありません)
実際には、オブジェクトへの参照渡し (call by object reference) と書けばよいのかもしれません。
変更可能なオブジェクトが渡されると、関数の呼び出し側は、呼び出された側の関数がオブジェクトに行ったどんな変更 にも出くわすことになるからです。
(例 : リストに挿入された要素)
함수가 다른 함수를 호출할 때도, 그를 위한 새 지역 심볼 테이블을 생성 함
関数がほかの関数を呼び出すときには、新たな呼び出しのためにローカルなシンボルテーブルが新たに作成
함수 이름 바꾸는 방법 ( 변수에 함수 명 대입!)
변수에 함수명을 대입하면서 함수이름을 바꿀 수 있음!
물론 함수 역할 가능!
함수를 정의하면, 현재 심볼 테이블에 함수 이름을 생성함
함수 이름은 인터프리터가 사용자 정의 함수로 인식하는 형식
이 값은 다른 이름으로 대입 가능하며 함수로도 사용가능.
이것이 이름을 바꾸는 일반적인 방법
関数の定義を行うと、関数名は現在のシンボルテーブル内に取り入れられます。
関数名の値は、インタプリタからはユーザ定義関数 (user-defined function) として認識される型を持ちます。
この値は別の名前に代入して、後にその名前を関数として使うこともできます。
これは一般的な名前変更のメカニズムとして働きます:
None
다른 언어라면, fib 가 값을 돌려주지 않기 때문에 함수가 아니라 프로시저라고 생각할 수 있습니다.
return 문이 없는 함수의 값 : None
None 값 출력 X - print( ) 로 확인 가능
他の言語出身の人からは、 fib は値を返さないので関数ではなく手続き (procedure) だと異論があるかもしれませんね。
技術的に言えば、実際には return 文を持たない関数もややつまらない値ですが値を返しています。
この値は None と呼ばれます (これは組み込みの名前です)。 None だけを書き出そうとすると、インタプリタは通常出力を抑制します。
本当に出力したいのなら、以下のように print() を使うと見ることができます:
범위 까지의 피보나치 수열의 값을 '리스트'로 얻는 함수
フィボナッチ数列の数からなるリストを出力する代わりに、値を返すような関数を書くのは簡単です:
return
함수의 반환 값
return 문이없으면 return 값은 None
return 文 :
関数から一つ値を返します。
return の引数となる式がない場合、 None が返ります。
関数が終了したときにも None が返ります。
result.append(a)
- obj.methodname
obj = 객체
methodname = 객체에 '속하는' 함수. 정의된 메서드
- 리스트 객체 : result / 메소드 : append / 인자 : a
result.append(a)
リストオブジェクト result の メソッド (method)を呼び出しています。
メソッドとは、オブジェクトに '属している' 関数のことで、
obj を何らかのオブジェクト (式であっても構いません)、
methodname をそのオブジェクトで定義されているメソッド名とすると、
obj.methodname と書き表されます。
형 마다 각각 다른 메소드를 정의
다른 형의 메소드는 이름 중복 가능
클래스를 생성하며 형과 메소드 정의
異なる型は異なるメソッドを定義しています。
異なる型のメソッドで同じ名前のメソッドを持つことができ、あいまいさを生じることはありません。
(クラス (class) を使うことで、自前のオブジェクト型とメソッドを定義することもできます。 クラス 参照)
append(값)
리스트 마지막항에 값 추가하는 메소드
result = result + [a] 보다 더 효율적
append()は、
リストオブジェクトで定義されています; このメソッドはリストの末尾に新たな要素を追加します。
append() は result = result + [a] と等価ですが、より効率的です。
4.7. 함수 정의 더 보기 関数定義についてもう少し
함수에 대입하는 인자는 3가지 형식이 있고 조합이 가능하다.
- 기본인자 (위치 인자)
- 키워드 인자
- 임의 인자 (가변인자)
可変個の引数を伴う関数を定義することもできます。
引数の定義方法には 3 つの形式があり、それらを組み合わせることができます。
4.7.1. 기본 인자 값 デフォルトの引数値
def add(a, b): # a, b는 매개변수
return a+b
print(add(3, 4)) # 3, 4는 인수, 인자
기본 인자
하나 이상
もっとも便利なのは、一つ以上の引数に対してデフォルトの値を指定する形式です。
この形式を使うと、定義されている引数より少ない個数の引数で呼び出せる関数を作成します:
‘ask_ok’ 인자 : 3개. prompt / reries=4 / reminder='Please try again!'
여기서 기본인자는 prompt
뒤 reries / reminder 는 키워드 인자. 이미 값이 정해져 있음.
꼭 필요한 인자 ask_ok('정말 끝내길 원하세요?')
선택적 인자 하나 ask_ok('파일을 덮어써도좋습니까?', 2)
모든 인자 ask_ok('파일을 덮어써도 좋습니까?', 2, '자, 예나 아니요로만 답하세요!')
必須の引数のみ与える: ask_ok('Do you really want to quit?')
一つのオプション引数を与える: ask_ok('OK to overwrite the file?', 2)
全ての引数を与える: ask_ok('OK to overwrite the file?', 2, 'Come on, onlyyes or no!')
in : 시퀀스에 있는 값 검사
この例では in キーワードが導入されています。
このキーワードはシーケンスが特定の値を含んでいるかどうか調べるのに使われます。
‘기본값’
: 함수 정의 시점에 정의되고 있는 스코프(범위)정의
‘デフォルト値’は、
関数が定義された時点で、関数を 定義している 側のスコープ (scope) で評価されるので
는 5 를 인쇄한다.
は 5 を出力します。
중요
기본값은 한 번만 값이 구해짐
이것은 기본값이 리스트, 딕셔너리, 클래스의 인스턴스와 같은 가변 객체일 때 차이를 만듭니다.
예를 들어, 다음 함수는 계속되는 호출로 전달된 인자들을 누적 함.
重要な警告:
デフォルト値は 1 度だけしか評価されません。
デフォルト値がリストや辞書のような変更可能なオブジェクトの時にはその影響がでます。
例えば以下の関数は、後に続く関数呼び出しで関数に渡されている引数を累積します:
결과 :
[1]
[1, 2]
[1, 2, 3]
연속 호출 시, 기본값이 축적되지 않기를 원한다면
後続の関数呼び出しでデフォルト値を共有したくなければ、代わりに以下のように関数を書くことができます:
4.7.2. 키워드 인자 キーワード引数
키워드 인자 (kwarg)
형식 : kwarg=value
関数を kwarg=value という形式の キーワード引数 を使って呼び出すこともできます。
필수 인자(기본인자) : voltage
선택 인자 : state, action, type
必須引数 (voltage)
オプション引数 (state、action、type) を受け付けます。
정상 :
parrot(1000) # 1 positional argument
parrot(voltage=1000) # 1 keyword argument - 필수인자도 키워드인자처럼
parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments
parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments - 순서 상관 x
parrot('a million', 'bereft of life', 'jump') # 3 positional arguments
parrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword
에러 :
parrot() # 필수인자 는 꼭!
parrot(voltage=5.0, 'dead') # 키워드 인자는 뒤에 와야 위치
parrot(110, voltage=220) # 하나의 인자에 두 개 값 입력 x
parrot(actor='John Cleese') # 잘못된 키워드인자 대입 x
- 키워드인자는 항상 위치인자 뒤에
- 잘못된 키워드인자 대입 x (ex) actor)
- 순서 상관 x
- 필수인자(위치인자)도 키워드 인자처럼 값을 전달 ok. (ex) parrot(voltage=1000))
- 어떤 인자도 두 개 이상의 값을 받을 수 없음.
- 関数の呼び出しにおいて、キーワード引数は位置引数の後でなければなりません。
- 渡されるキーワード引数は全て、関数で受け付けられる引数のいずれかに対応していなければならず
(例えば、actor はこの parrot 関数の引数として適切ではありません)、
- 順序は重要ではありません。
- これはオプションでない引数でも同様です (例えば、parrot(voltage=1000) も適切です)。
- いかなる引数も値を複数回は受け取れません。
- 에러 이유 : funtion의 인자 a 값으로 0 과 a=0 이렇게 2개를 대입하고 있다.
매개변수 **name
형식 매개변수들에 대응하지 않는 모든 키워드 인자들을 담음. (매핑 형)
*name형식과 조합 : 형식 매개변수 목록 밖의 위치 인자들을 담은 튜플을 받습니다.
(*name 은 **name 앞에 나와야 합니다.)
仮引数の最後に **name の形式
それまでの仮引数に対応したものを除くすべてのキーワード引数が入った辞書を受け取ります。(マッピング型)
*name の形式をとる、仮引数のリストを超えた位置引数の入ったタプルを受け取る引数と組み合わせることができます。
(*name は **name より前になければなりません)
정의
호출
결과
입력ㄷ한 키워드 인자들의 순서와 출력 순서 일치
なお、複数のキーワード引数を与えた場合に、それらが出力される順序は、関数呼び出しで与えられた順序と同じになります。
4.7.3. 임의인자 리스트 任意引数リスト
입력값이 몇개 인지 정해지지 않은 인자 (가변인자. 많이 사용 되지 않음)
*args
튜플로 저장
앞에 0개 이상의 인자들이 올 수 있음.
関数が任意の個数の引数で呼び出せるよう指定する方法
最も使うことの少ない選択肢
これらの引数はタプルに格納されます。
可変個の引数の前に、ゼロ個かそれ以上の引数があっても構いません。
보통,
매개변수 마지막에 위치 : 남은 입력 인자 전부를 모으기 위해
*args 뒤는 모두 '키워드 인자‘가 위치
通常
可変引数は、関数に渡される入力引数の残りを全て掬い取るために、仮引数リストの最後に置かれます。
*args 引数の後にある仮引数は 'キーワード専用' 引数で、位置引数ではなくキーワード引数としてのみ使えます。
4.7.4. 인자 목록 언 패킹 引数リストのアンパック
언 패킹
* 연산자 : 리스트, 튜플 언패킹함.
ex) range() 함수 : start, stop 인자 필요 list(range(*args))
引数がすでにリストやタプルになっていて、個別な位置引数を要求する関数呼び出しに渡すためにアンパックする必要がある場合には、逆の状況が起こります。
例えば、組み込み関数 range() は引数 start と stop を別に与える必要があります。
個別に引数を与えることができない場合、関数呼び出しを * 演算子を使って書き、リストやタプルから引数をアンパックします:
** 연산자 : 딕셔너리 언패킹
同じやりかたで、** オペレータを使って辞書でもキーワード引数を渡すことができます:
4.7.5. 람다식 ラムダ式
lambda
이름 없는 작은 함수 생성
lambda a, b: a+b. (두 인자의 합을 돌려주는 함수)
함수 객체가 있어야 하는 곳이면 어디나 람다 함수가 사용가능
문법적으로 하나의 표현 식으로 제한
의미적으로는, 일반적인 함수 정의의 편의 문법일 뿐
중첩된 함수 정의처럼, 람다 함수는 둘러싸는 스코프에 있는 변수 참조가능
キーワード lambda を使うと、
名前のない小さな関数を生成できます。
例えば lambda a, b: a+b は、二つの引数の和を返す関数です。
ラムダ式の関数は、関数オブジェクトが要求されている場所にならどこでも使うことができます。
ラムダ式は、構文上単一の式に制限されています。
意味付け的には、ラムダ形式は単に通常の関数定義に構文的な糖衣をかぶせたものに過ぎません。
入れ子構造になった関数定義と同様、ラムダ式もそれを取り囲むスコープから変数を参照することができます:
ex) 함수를 돌려 주는 람다식
関数を返すところでラムダ式を使っています。
ex) 작은 함수를 인자로 전달
ちょっとした関数を引数として渡すのに使っています:
.sort(key=기준) : 인자들을 기준에 맞게 정렬함 (영어단어이면 알파벳 순)
4.7.6. 도큐멘테이션 문자열. ドキュメンテーション文字列
첫 줄 : 객체의 간단한 설명. 목적을 간결하게 요약
이름이나 형 언급 x - 다른 방법으로 제공 (이름이 작업을 설명하면 예외)
대문자로 시작 / 마침표로 끝
最初の行は、常に対象物の目的を短く簡潔にまとめたものでなくてはなりません。
簡潔に書くために、対象物の名前や型を明示する必要はありません。
名前や型は他の方法でも得られるからです (名前がたまたま関数の演算内容を記述する動詞である場合は例外です)。
最初の行は大文字で始まり、ピリオドで終わっていなければなりません。
여러 줄 :
두 번째 줄은 빈칸으로 - 요약, 설명을 분리.
그 다음 - 호출 규약, 부작용 등 설명
ドキュメンテーション文字列中にさらに記述すべき行がある場合、
二行目は空行にし、まとめの行と残りの記述部分を視覚的に分離します。
つづく行は一つまたはそれ以上の段落で、対象物の呼び出し規約や副作用について記述します。
파이썬 파서는 문자열 리터럴의 들여쓰기를 이어 줌
설명서를 처리하는 도구로 필요하다면 들여쓰기를 제거해야 함
Python のパーザは複数行にわたる Python 文字列リテラルからインデントを剥ぎ取らないので、
ドキュメントを処理するツールでは必要に応じてインデントを剥ぎ取らなければなりません。
관례
설명부분의 첫 들여쓰기가 전체 들여쓰기의 기준이 됨 (インデント)
(문자열 따옴표 줄은 들여쓰기를 반영 x)
この処理は以下の規約に従って行います。
最初の行の 後にある 空行でない最初の行が、ドキュメント全体のインデントの量を決めます。
(最初の行は通常、文字列を開始するクオートに隣り合っているので、インデントが文字列リテラル中に現れないためです。)
덜 들여쓰기 된 줄이 나타나면 앞부분의 모든 공백이 제거 됨.
このインデント量と "等価な" 空白が、文字列のすべての行頭から剥ぎ取られます。
インデントの量が少ない行を書いてはならないのですが、もしそういう行があると、先頭の空白すべてが剥ぎ取られます。
공백의 같음은 Tab (8 스페이스) 후 검사
インデントの空白の大きさが等しいかどうかは、タブ文字を (通常は 8 文字のスペースとして) 展開した後に調べられます。
4.7.7. 함수 어노테이션 関数のアノテーション
함수 어노테이션
함수 인자의 형에 대한 메타데이터
関数アノテーション は
ユーザ定義関数で使用される型についての完全にオプションなメタデータ情報です
__annotations__ 어트리뷰트에 ‘딕셔너리’로 저장
함수에 영향 x
함수이름.__annotations__
アノテーション は関数の __annotations__ 属性に辞書として格納され、
関数の他の部分には何も影響がありません。
매개변수 어노테이션 : ‘매개변수이름’ + ‘: 표현식’
def 함수이름 (매개변수이름 : 표현식):
반환 값 어노테이션
def 함수이름(매개변수목록) -> 반환값표현식:
パラメータアノテーションは、
パラメータ名の後にコロンを続けることによって定義され、その後にアノテーションの値として評価される式が置かれます。
戻り値アノテーションは、
パラメータリストと def ステートメントの終わりを表すコロンの間に置かれたリテラル -> によって定義され、その後に式が続きます。
次の例は位置引数とキーワード引数、そして戻り値アノテーションを持っています:
4.8. 코딩 스타일 コーディングスタイル
스타일 가이드 : PEP 8
Python には、ほとんどのプロジェクトが守っているスタイルガイドとして PEP 8 があります。
それは非常に読み易く目に優しいコーディングスタイルを推奨しています。
全ての Python 開発者はある時点でそれを読むべきです。
ここに最も重要な点を抜き出しておきます:
들려 쓰기 : 4-스페이스 / 탭 사용x
4 스페이스
작은 들여쓰기 (더 많은 중첩 도를 허락한다) 와 큰 들여쓰기 (읽기 쉽다) 사이 좋은 절충
탭은 혼란을 야기
インデントには空白 4 つを使い、タブは使わないこと。
空白 4 つは
(深くネストできる) 小さいインデントと (読み易い) 大きいインデントのちょうど中間に当たります。
タブは混乱させるので、使わずにおくのが良いです。
79자 이내 줄 넘김
작은 화면 사용자 편의
큰 화면 여러 코드 파일들을 나란히 볼 수 있게 함
ソースコードの幅が 79 文字を越えないように行を折り返すこと。
こうすることで小さいディスプレイを使っているユーザも読み易くなり、
大きなディスプレイではソースコードファイルを並べることもできるようになります。
함수, 클래스, 함수 내의 큰 코드 블록 사이에 빈 줄로 분리
가능하다면, 주석은 별도의 줄로 넣으세요.
関数やクラスや関数内の大きめのコードブロックの区切りに空行を使うこと。
可能なら、コメントは行に独立で書くこと。
독스트링 사용
docstring を使うこと。
연산자 주변, 콤마 뒤 스페이스 / 괄호 바로 안 스페이스 x : a = f(1, 2) + g(3, 4).
演算子の前後とコンマの後には空白を入れ、括弧類のすぐ内側には空白を入れないこと: a = f(1, 2) + g(3, 4)。
클래스와 함수들에 일관성 있는 이름
クラスや関数に一貫性のある名前を付けること。
慣習では CamelCase をクラス名に使い、 lower_case_with_underscores を関数名やメソッド名に使います。
첫 번째 메서드 인자의 이름으로는 항상 self 를 사용
常に self をメソッドの第 1 引数の名前 (クラスやメソッドについては クラス初見 を見よ) として使うこと。
특별한 인코딩x 파이썬 기본이 최선
あなたのコードを世界中で使ってもらうつもりなら、風変りなエンコーディングは使わないこと。
どんな場合でも、Python のデフォルト UTF-8 またはプレーン ASCII が最も上手くいきます。
同様に、ほんの少しでも他の言語を話す人がコードを読んだりメンテナンスする可能性があるのであれば、非 ASCII 文字も識別子に使うべきではありません。
'Python &Ruby > Python3 튜토리얼 정리' 카테고리의 다른 글
python tutorial -6 모듈 (0) | 2019.06.14 |
---|---|
python tutorial -5 자료 구조 (0) | 2019.06.14 |
python tutorial -3 주석, 수, 문자열, 리스트, end=, 조건/바디 .. (0) | 2019.06.11 |
python tutorial -2 인터프리터 (0) | 2019.06.10 |
python tutorial -1 파이썬 특징 (0) | 2019.06.07 |