[Aiffel]エッフェル4日目コンセプトの整理と回顧


1.パイソンの概念整理


1)生産性と性能(性能)

  • の生産性は、同じ機能を持つプログラムを書く速度がどれくらい速いかを意味します.
  • パフォーマンスとは、どの言語でもコードを構成および実行する際の処理速度がどれほど速いかを意味します.
  • 作業効率が高いほど、性能が悪くなります.作業効率が低いほど、性能が高くなります.
    Pythonの特性
    1.高い生産性
    2.コードの簡潔性
    3.快速開発
    4.スクリプト言語
  • 2) Generator

  • yield
  • 関数でsulfieldを使用すると、その関数はサードパーティになります.
  • 完成品を使用して、現在の関数を中断し、関数外のコードを実行します.
  • イテレーションとイテレーションの概念の再定義

    3) Try - except



    これはエラーを処理するために必要なプロセスです.
    エラーが発生した場合は除外セクションを実行し、エラーが発生しない場合はtryセクションを実行します.
    a = 8
    b = 0 
    
    try:
        #실행 코드
        print(a/b)
    		
    except:
        print('에러가 발생했습니다.')
        b = b+1 #이런 식으로 except 부분에서 값을 수정해 결과값을 조정할 수 있다.
        print("값 수정 : ", a/b)

    4)時間測定


    timeモジュールを使用して測定できます.
    import time
    begin = time.time()  # 시작 시간 저장
    
    a = 100
    for i in range(100,0,-1):
    	a -= 1
     
    # 작업 코드
    print("time :", time.time() - begin) # 결과는 '초' 단위 입니다.

    5) Multiprocessing


    コンピュータの処理速度を向上させる方法の一つです.
    並列処理は4文字列で同時に処理されて格納され,順序処理は順序で処理される.

    ソース:https://sebastianraschka.com/Articles/2014_multiprocessing.html
    Pythonで並列処理を行うために,マルチプロセッサモジュールを用いた.

    6) lambda


    実行時に作成および使用できる匿名関数.defで名前を定義する関数とは異なり、名前はありません.式の形式を別々にlambda式(lambda expression)と呼ぶ.
  • 匿名関数なので、それ自体は呼び出せません.結果値を使用する場合は、変数に割り当てる必要があります.
  • 変数(lambda関数)(パラメータ)に割り当てたくない場合は、このように使用できます.
  • (lambda x: x+1)(0)
    >>> 1
  • ラムダ式では新しい変数を割り当てることができないので、変数を使用する場合はdef関数を使用することが望ましい.
    map、filter、reduceなどの関数でよく使われます.
  • # map
    num_list = [1, 2, 3]
    num_list = list(map(lambda x: x+1, num_list))
    print(num_list)
    >>> [2, 3, 4]
    
    # 조건부 식 사용하기 - if, else 반드시 둘 다 써야함
    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    list(map(lambda x: str(x) if x % 3 == 0 else x, a))
    >>> [1, 2, '3', 4, 5, '6', 7, 8, '9', 10]
    
    # filter 조건에 해당하는 요소만 반환
    list(filter(lambda x: x % 2, range(10)))  # 파이썬 2 및 파이썬 3
    >>> [1, 3, 5, 7, 9]
    # reduce - 누적해서 함수에 적용 시킴
    from functools import reduce #python3 부터 내장함수가 아님 
    reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
    >>> 10

    7)モジュールとパッケージ


  • モジュール
    関数、変数、クラスを含むファイル.モジュール化コードのエンクロージャ.pyの形態.
  • パッケージ(ライブラリ)
    複数のモジュールを含むフォルダ.pip installを使用して
  • をインストール

    8)プロセス向け、オブジェクト向け


    プロシージャ向けオブジェクトの作業順序に従って、まずプログラミングオブジェクトを作成し、関数を作成します.オブジェクト間で対話できる利点は、順番に読みやすく、理解しやすく、コードの再利用が容易です.コードの分析が容易で、アーキテクチャの変更が容易で、順番に記述された特性のため、1つのエラーが連鎖的に影響を及ぼす可能性があるため、メンテナンスが困難です.通常、コード長が長いため、分析が困難なオブジェクト間のインタラクションのため、設計に多くの時間がかかります.設計に問題が発生した場合は、包括的な再構成が必要になる場合があります.

    9)関数式プログラミング

  • 並列処理
    関数式プログラミングは並列プログラミングにおいて優位である.
    ただし、1つのデータが同時に複数の関数にアクセスされ、1つの関数が既存のデータを変更できる場合、既存のデータへの出力は予想できません.
    ->この問題をどのように解決しますか?純粋性を保つ
    関数化メソッドでは、副作用のある関数を使用して内部状態を変更したり、関数の戻り値に表示されない他の変更を作成したりしません.副作用が全くない関数を純関数と呼ぶ.
  • 10)Pythonコード様式


    コードスタイル-『Hitchhikerガイド』からPython
    PEP8 - Code lay-out

    2. CS


    1)オペレーティングシステム

  • オペレーティングシステム
  • コンピュータハードウェアを管理する役割
  • ソフトウェア
  • は、タスク管理、データ管理、およびプログラム制御を含むすべてのコンピュータが共同で完了しなければならない機能を集約する.
  • プログラム
  • は、CPUやメモリなどの複雑なハードウェアに慣れていない人がコンピュータリソースを簡単に効率的に使用できるようにします.
  • プログラムは、複雑で汎用的なコンピュータ機能を処理するのに役立ち、心配する必要がありません.
  • 友情奮闘
  • Linuxに基づいて作成されたオペレーティングシステム
  • Linuxは、変更および再配置可能なオープンソース
  • です.
    まとめ:Woo奮闘というオペレーティングシステムでは、Pythonというプログラミング言語を使い、Tensorflowという深い学習フレームワークを使って多くのことを学びます.
  • カーネルとは?
    コンピュータオペレーティングシステムの核心であるコンピュータプログラムは、システムのすべてを完全に制御する.
  • Linux自体はオペレーティングシステムではなくカーネルです.
    一般にLinuxオペレーティングシステムとは、カーネルとしてLinuxを使用するオペレーティングシステムを指す.右奮闘やAndroid、ChromeOSのほか、Debian、Cents、Red Hat Enterprise Linuxなど様々なタイプがあります.

    3.誤答


    1)プログラマ


    文字列降順
    def solution(s):
        return ''.join(sorted(s, reverse=True))
  • 分類と並べ替え区分
  • の反転と反転を区別
    =>sorded,reverseは関数,sort,reverseはメソッド
  • である.

    4.回顧


    この時間の概念が多すぎて、整理するのに長い時間がかかりました.私は今日初めて発電機の概念に触れました.発電機と一緒に理解すべきだと思います.後でコードスタンプを勉強するときに見ます.CSの概念が不足していると感じて、もっと本を読んだり、何かをしたりする必要があるかもしれません.