TIL 4 | Python
Python(Python)
1991年にプログラマーの貴島(Guido van Rossum)が発表したプログラミング言語で、簡潔で分かりやすい文法で人気を集めている.
"Life is too short, You need python."
Pythonの名前はボアを意味するので、Pythonを使うとヘビに関する名前がたくさんあります.
Python Rule
ユーザ間の混乱を減らすために,相互間の黙示規則がある.
コードレイアウトにTapまたは4つのスペースを使用
Pythonのドキュメントには4つのスペースが推奨されています
クラス名はCamel Case、変数名はSnake Case
👇 例
class ThisIsExample:
def this_is_example:
Function
入力値を関数に入れ、関数から結果値を得ることができます.
定義機能
def function():
return
returnは関数の値を返しますreturnに式がない場合はNoneを返します
可変パラメータ/キーワードパラメータ
*args 가변 매개변수 **kwargs 키워드 매개변수
def function(*args):
return args
def function(**kwargs):
return kwargs
可変パラメータ使用*
/キーワードパラメータ使用**
解包キーワードパラメータdictionary形式で作成
各関数には1つの可変パラメータしか使用できません.また、可変パラメータの後ろには一般パラメータは使用できません.
可変パラメータは順番に割り当てられますが、キーワードパラメータを使用してパラメータを直接指定してロードできます.
Class
なぜClassを使うのか
重複するコード作成とエラーを低減し、メンテナンスを支援
クラス定義
class ClassName:
1.コンストラクション関数、メソッドclass ClassName:
def __init__(self, name, action):
self.name = name
self.action = action
def method(self):
print("method")
クラスで作成された関数をmethodと呼びます一般関数とは異なりmethodにはパラメータが必要です
dir()内蔵関数を使用してオブジェクトをチェックする方法
2.インスタンス:クラスとして定義されたオブジェクトを変数にする
a = ClassName("name", "action")
위 Class에서 self를 제외한 매개변수가 2개이므로 매개변수를 2개 넣어준다
クラス名に()を付ける👇 読み込み方法
a.method()
出力はdef method(self)
の随行文人print(method)
継承(Inheritance):書き込みされたクラスを取得し、派生クラスを作成します.기반 클래스
class ClassName:
def __init__(self, name, action):
self.name = name
self.action = action
def method(self):
print(self.name)
파생 클래스
class Inheritance(ClassName):
def __init__(self, name, action, shape):
self.name = name
self.action = action
self.shape = shape
인스턴스
a = Inheritance("name", "action", "shape")
method 호출
a.method()
出力はdef method(self)
の随行文人print(self.name)
必要に応じて複数の継承が可能3.反復器
__iter__
が含むか否かを判断することができる(
문자열
、리스트
、딕셔너리
、세트
などは重複可能なオブジェクト)__next__
を呼び出し、個々に取り出す残りの要素がない場合、
__next__
はStopIteration例外👇イテレーションの作成例
説明
最後の数字を5に指定した後、
__next__
を使用して1つずつ取り出し、5を超えるとStopIteration異常を引き起こす4.具体的な値(Generator)
__iter__
および__next__
methodは、ウィジェットGenerator
👇マネージャの作成例
👍
__iter__
と__next__
を指定する必要はなく、関数の発生量だけで簡単に作成できます.👇収益率を利用して複数回収益率を編成する必要はありません
👇イテレーションとイテレーションのスキーマ構造
lazy evaluation
タイムパッケージを使用して遅延が発生します.
ランダムパッケージを使用して整数を作成
import time, random
def random_list(size):
result = []
num = 0
for i in range(size):
num += random.randint(0,100)
result.append(num)
return result
# random.randint()를 이용하여 0부터 100까지의 무작위의 숫자를 불러온다
# random_list(size)는 인자로 size값을 받아 요소 갯수가 size값인 리스트를 만든다
def print_iter(iter):
for element in iter:
print(element)
def lazy_return(num):
sec = 1
print(f"sleep {sec}s")
time.sleep(sec)
return num
#sec값에 따라 지연시간을 변화시킬 수 있다
print("comprehension_list=")
def comprehension_list():
a = random_list(3)
comprehension_list = [ lazy_return(i) for i in a ]
print(comprehension_list)
return comprehension_list
print_iter(comprehension_list())
# 리스트 표현식을 이용하여 리스트를 만들고 그 리스트를 출력을 하면서
# 각 리스트의 요소들도 출력시킨다
print("generator_exp=")
def generator_exp():
a = random_list(3)
gen = ( lazy_return(i) for i in a )
print(gen)
return gen
print_iter(generator_exp())
# generator 표현식을 이용하여 generator를 만들어 하나씩 계산값을 출력시킨다
👇 出力値なぜ不活性評価を使用するのか
上記の例で説明したように、リストの出力値を使用すると、すべての計算値がメモリに格納され、リスト内の対応する要素が直接出力されます.
ただし、サードパーティ製の出力値を使用することは、出力を計算する値であるため、より少ないメモリが使用され、上記の例では、実装されていないが計算に使用されない値に加えて、余分なメモリ浪費を低減することができる
Reference
この問題について(TIL 4 | Python), 我々は、より多くの情報をここで見つけました https://velog.io/@action2thefuture/TIL-4-Pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol