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.反復器
  • 値をポップアップできるオブジェクト
  • 重複可能なオブジェクトを決定する方法はdir()によって__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를 만들어 하나씩 계산값을 출력시킨다
    👇 出力値

    なぜ不活性評価を使用するのか
    上記の例で説明したように、リストの出力値を使用すると、すべての計算値がメモリに格納され、リスト内の対応する要素が直接出力されます.
    ただし、サードパーティ製の出力値を使用することは、出力を計算する値であるため、より少ないメモリが使用され、上記の例では、実装されていないが計算に使用されない値に加えて、余分なメモリ浪費を低減することができる