Python 266

[Python] *args / ** kwargs

개요 파이썬 코드를 보다 보면 아래와 같이 *args, **kwargs를 사용하는 함수가 존재한다. def myFun1(*args): ... def myFun2(**kwargs): ... 어떤 의미인지, 어떤 용도로 사용하는지 알아보도록 한다. *args Arguments를 의미하며, 함수에서 개수가 정해지지 않은 여러 개(n개)의 인자를 받을 때 사용한다. 예로 들어, 아래와 같이 3개의 숫자를 더하는 함수를 정의했다. def add(x, y, z): print("sum:", x + y + z) add(10, 12, 13) 그리고 4개, 5개의 숫자를 더한 값을 계산할 필요도 있다고 해보자. add 함수는 3개의 인자만을 전달받도록 정의되었기 때문에 4개 이상의 인자를 받을 수 없다. 때문에 4개의 인..

Python 2022.08.08

[Python] import - 다른 경로에 위치한 모듈 가져오기

import 2022.05.28 - [import] 모듈 가져오기 2022.08.04 - [Python] import - 검색 순서 위 글에서는 모듈을 가져오는 방법과 검색 순서에 대해서 알아보았다. 그래서 다른 경로에 있는 python 모듈을 가져와 사용하려면 어떻게 해야 하는가? 파이썬에서는 경로를 나타내는 방법으로 상대 경로와 절대 경로가 존재하지만, 이 글에서는 단순하게 동일 경로에 있는 모듈 하위 경로에 있는 모듈, 상위 경로에 있는 모듈을 가져와보도록 한다. 아래는 바쁜 현대인을 위한 요약이다. 동일 경로 : 단순 import 하위 경로 : from import 상위 경로/다른 경로 : sys.path.append('PATH') 동일 경로 먼저 아래 구조의 프로젝트가 있다고 하자. expr/p..

Python 2022.08.06

[Python] import - 검색 순서

import 2022.05.28 - [import] 모듈 가져오기에서 다른 모듈을 가져와 사용하는 방법을 정리했다. pip, conda 등으로 설치한 모듈은 import 문으로 사용하면 되는데, 직접 작성한 Python 모듈은 어떻게 가져와야 할까? 먼저 import 문은 아래 목록을 순서대로 탐색하며 가져올 모듈을 찾는다. sys.modules built-in modules sys.path 순서대로 탐색하여 찾는 모듈과 패키지가 없으면 ModuleNotFoundError가 발생한다. sys.modules 파이썬이 모듈이나 패키지를 찾기 위해 가장 먼저 확인하는 곳. 현재 프로젝트에서 import 해서 사용하고 있는 모듈과 패키지를 저장한 dictionary다. 한 번 import 된 모듈과 패키지를 다..

Python 2022.08.04

[Python] 이모지 출력하기

이모지 인쇄 파이썬에서 이모지를 인쇄하는 방법은 유니코드, CLDR 등 여러 가지가 존재하는데, 간단히 정리해두려고 한다. 이모지 목록은 아래 URL에서 확인할 수 있다. http://unicode.org/emoji/charts/full-emoji-list.html 이모지 복사/붙여 넣기 이모지는 텍스트와 같이 취급할 수 있기 때문에 복사하여 붙여 넣을 수 있을 뿐만 아니라 print 함수로 출력할 수도 있다. print('👩‍🍼') Unicode 모든 이모지에는 Unicode와 CLDR 이름이 정해져 있기 때문에, unicode나 CLDR 이름을 알면 이모지를 출력할 수 있다. 방법 1. 먼저 이모지 목록에서 원하는 이모지의 Unicode(U+1F63F)를 확인한다. 2. Unicode의 +문자를 0으..

Python 2022.07.28

[Pip] pip를 통해 설치한 패키지 전부 삭제(초기화)

개요 python 환경에 pip를 이용해 패키지를 여럿 설치했다. 근데 좀 잘못 설치한 것 같다……. 그래서 pip를 이용해 설치한 패키지를 전부 삭제하고 싶다. 다만 의존 패키지도 함께 설치되었기 때문에 삭제할 패키지가 많은 상태이다. 113개의 패키지를 한꺼번에 삭제하는 방법을 정리해둔다. 방법 1. 설치한 패키지 목록(requirements.txt) 추출 pip freeze > requirements.txt pip freeze 명령은 '패키지 이름=버전' 형식으로 설치한 패키지 목록을 출력해준다. 그 출력 결과를 requirements.txt로 저장한다. 2. requirements.txt 상의 패키지 삭제 pip uninstall -r -y # -r : --requirement. 지정한 requi..

Python 2022.07.26

[python3] venv 사용

venv 2021.06.25 - [CentOS 7] virtualenv 설치 및 사용 에서 소개한 virtualenv와 동일한 기능을 하는 python 가상 환경. pip로 설치해야 하는 virtualenv와 다르게 python3.4부터 표준 배포판에 내장되어 있어 별도로 설치할 필요가 없다…… 고 한다. 설치 다만 Ubuntu의 경우, 아래의 명령어로 설치를 수행해야 정상적으로 가상 환경이 생성되었다. 😅 apt install python3-venv 가상 환경 생성 venv는 python3 -m 옵션을 사용해 생성할 수 있다. python3 -m venv ./ # 예시 python3 -m venv ./airflow 지정한 경로에 가상환경이 생성된다. 경로명이 가상 환경의 이름이 된다. 가상 환경 활성화..

Python 2022.07.21

[Python] 2차원 배열 열 추출

2차원 배열 열 추출 2차원 배열에서 각 행을 추출하는 방법은 간단하다. 2차원 배열은 배열이 원소이기 때문에 각 원소인 배열을 통으로 출력하면 되기 때문이다. a = [ [0, 1], [2, 3], [4, 5], [6, 7], [8, 9], ] for i in range(5): print(a[i]) 그렇다면 배열 내 배열의 원소에 접근해야 하는 열의 경우에는 어떻게 추출할 수 있을까? 방법을 몇 가지 정리해둔다. 리스트 컴프리헨션 리스트 컴프리헨션을 이용해 각 행에서 n번째의 원소만을 뽑아낸다. a = [ [0, 1], [2, 3], [4, 5], [6, 7], [8, 9], ] print([t[0] for t in a]) print([t[1] for t in a]) 반복문을 이용해 모든 열을 뽑을 때..

Python 2022.07.14

[functools] reduce 함수

functools high-order-function을 위해 고안된 것으로 다름 함수에 적용하거나 다른 함수를 반환하는 모듈이다. 💡 High-Order-Function (고차함수) 하나 이상의 함수를 인자로 받거나 함수를 결과로 반환하는 함수로, 쉽게 말해 함수를 다루는 함수라고 할 수 있다. 함수형 프로그래밍을 할 때 사용한다. HOF를 사용하면 유연하고 반복을 줄일 수 있는 코드를 작성할 수 있다. functools는 다음과 같은 함수를 제공한다. Iru_cached cmp_to_key total_ordering partial reduce 이 글에서는 functools가 제공하는 함수는 reduce에 대해서 정리한다. reduce() 여러 개의 데이터를 대상으로 주로 누적 집계를 내기 위해 사용한다..

Python 2022.07.04

[Python] 2차원 배열을 1차원 배열로 변환

2차원 배열을 1차원 배열로 변환 프로그래밍을 하다 보면 2차원 배열을 1차원 배열로 변환해야 할 때가 있다. 보통 아래와 같이 반복문을 사용해서 리스트를 누적시키는데, 이 외의 방법을 정리한다. my_list = [[1, 2], [3, 4], [5, 6]] answer = [] for element in my_list: answer += element sum(iterable, start) sum 함수는 매개변수로 전달받은 start에 iterable의 모든 데이터를 더한다. list1 = [[1, 10], [2, 22], [3, 19], [4, 7]] list2 = sum(list1, []) print(list2) 위 코드에서 sum(list1, [])은 [] + [1, 10] + [2, 22] + [..

Python 2022.07.01

[Python] exec

exec 문자열 또는 코드 객체와 같이 동적으로 생성된 프로그램을 실행한다. exec(object, globals=None, locals=None) 매개변수 object : 문자열 또는 코드 객체 global : (선택) 딕셔너리 사용 locals : (선택) 매핑 객체 사용 사용법 exec('CODE') # 예시 code = 'nums = [i for i in range(5)]' exec(code) print(nums) exec 외에서 선언한 변수, 라이브러리도 exec 내에서 사용할 수 있다. eval VS exec exec은 문자열 식을 실행하는 eval 함수와 비교되곤 한다. 참고 : 2021.12.17 - [eval] 문자열 식 실행 exec 또한 eval과 마찬가지로 문자열을 실행시키므로 매우..

Python 2022.06.22