python 287

[Python] 변수에 함수 저장

파이썬에서 함수는 1급 객체(first-class object)이다. 1급 객체(first-class object) 프로그래밍 언어 디자인에서 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체 보통 함수에 매개변수로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원하는 객체를 말한다. 이 글에서는 1급 객체의 조건 중 하나인 변수에 함수를 할당하여 사용하는 방법에 대해 다룬다. 기본 사용 테스트 함수 두 수를 입력받아 그 합을 반환하는 더하기 함수를 예시로 들고자 한다. def plus(a, b): return a + b 변수에 테스트 함수 할당 result라는 변수에 테스트 함수를 할당한다. 함수를 호출해 반환 값을 변수에 저장하는 것과 함수를 변수에 저장하는 것의 차이를 구분해야 ..

Python 2021.11.23

[list] 리스트 컴프리헨션

리스트 컴프리헨션 (list comprehension) 기존의 리스트를 이용해 새 리스트를 만드는 방법 기존 리스트 생성과 동일하게 대괄호를 이용하나, 대괄호 내에 for 문, if 문 등의 코드를 넣어 리스트를 생성한다. 기본 구조 및 동작 순서 코드 전통적인 방식으로 리스트를 선언하는 것과 리스트 컴프리헨션을 사용하여 선언하는 것을 비교해보자. # 전통적인 방법 number_1 = [] for i in range(10): number_1.append(i) print("number_1", number_1) # 리스트 컴프리헨션 number_2 = [i for i in range(10)] print("number_2", number_2) 실행 결과 실행 시 두 개의 리스트가 동일한 값으로 생성되었음을 알..

Python 2021.11.21

[Selenium] 명시적 대기 (Explicit Wait)

2021.11.09 - [Selenium] 암시적 대기(Implicit Wait) 위 글에서는 Selenium의 대기 방식 중 웹 페이지가 모두 로딩될 때까지 기다리는 암시적 대기 방식에 대해 다뤘다. 이 글에서는 Selenium의 대기 방식 중, 명시적 대기 방식에 대해 다룬다. 명시적 대기 (Explicit Wait) 지정한 요소가 웹 페이지 내에서 지정한 조건을 만족할 때까지 기다린다. 필요성 Ajax를 이용해 동적 변경이 발생하는 웹 페이지인 경우 Web Elemnet가 나타날 때까지 시간이 걸릴 수 있는데, Web Element가 나타나기 전에 참조하고자 하면 오류가 발생할 수 있으므로 대기하는 시간이 필요하다. 암시적 대기는 웹 페이지 전체가 로딩될 때까지 기다리는 반면 명시적 대기는 특정 요..

Python 2021.11.13

자릿수를 맞춰 숫자 출력 - zfill, rjust

2021.11.03 - [format] 자릿수를 맞춘 숫자 출력 이전 글에 이어, format 함수 외에 사용할 수 있는 자릿수를 맞춘 숫자 출력 방법에 대해 적는다. zfill() 문자열 앞을 0으로 채운다. 코드 n = 32 print(str(n).zfill(5)) 실행 결과 숫자형 데이터인 경우 string으로 형변환이 필요하며, 매개변수의 값이 반환하는 문자열의 길이다. rjust(n, s) 문자열을 오른쪽으로 정렬하여 반환한다. 첫번째 매개변수는 반환하는 문자열의 길이에 해당하며, 두번째 매개변수는 공백을 채우는 문자에 해댕한다. 코드 n = 32 print(str(n).rjust(5, '0')) 실행 결과

Python 2021.11.10

[Selenium] 암시적 대기(Implicit Wait)

암시적 대기(Implicit Wait) Driver 객체가 get(url)로 요청한 페이지의 내용이 모두 로딩을 완료할 때까지 암묵적으로 대기한다. 필요성 Python으로 Selenium을 조작할 때 Python은 Selenium으로 신호를 보내고, Selenium은 웹 브라우저로 신호를 보낸다. 웹 브라우저는 접속하고자 하는 서버에 웹 페이지를 보여달라는 신호를 보내고, 서버는 HTML, CSS, Javascript 등으로 구성된 웹 페이지를 웹 브라우저로 보낸다. 그리고 웹 브라우저는 전달받은 정보를 화면으로 변환해서 눈으로 보여준다. 이 과정에는 시간이 필요하다. Selenium은 실제로 웹 브라우저를 동작시키기 때문에 driver.get()으로 URL을 호출하자마자, 접속하고자 하는 서버로부터 데..

Python 2021.11.09

[format] 자릿수를 맞춘 숫자 출력

정수형, 실수형과 같은 숫자 데이터를 다루다 보면 소수점 이하 둘째 자리까지 출력하거나, 또는 세 자리의 정수로 출력하는 등 자리 수를 맞춰서 출력을 해야 할 때가 있다. 즉, 문자열 포매팅 방법에 대해 적어본다. str.format() 서식 지정자(format indentifier)를 사용하여 문자열을 출력한다. 문자열의 중괄호 내에 지정된 키로 매개변수에서 값을 찾아 대입하여 문자열을 만든다. 여기서 키는 매개변수의 위치값인 인덱스가 될 수도 있으며, 인덱스는 0부터 시작한다. a = "index_0" b = "index_1" # index print("{1}".format(a, b)) # key print("{a} {b}".format(a=a, b=b)) 자릿수 지정 서식 출력할 값과 서식은 콜론(..

Python 2021.11.03

[math] 최소공배수, 최대공약수

2021.09.28 - [재귀 호출] 최대공약수 구하기 / 피보나치 수열 [재귀 호출] 최대공약수 구하기 / 피보나치 수열 최대공약수 최대공약수 Greatest Common Disiver, GCD 두 개 이상의 정수의 공통 약수 중 가장 큰 값 방법 1. 정수 중 작은 값부터 1씩 감소시키면서 약수인 값을 찾는다. 2. 유클리드 알고리즘 a와 b의 최 passwd.tistory.com 위 글에서 재귀 호출을 이용해 최대공약수를 계산하는 알고리즘에 대해 다루었다. 최대공약수를 구할 수 있다면 최소공배수도 자연스럽게 구할 수 있다. 두 수의 곱을 최대공약수로 나눈 값이 최소공배수이기 때문이다. $$ gcd(a,b)*lcm(a,b)=a*b $$ 그렇다면 Python으로 최대공배수/최대공약수를 계산할 때 반드시..

Python 2021.11.02

[Python] JSON 데이터 다루기

JSON (제이슨, JavaScript Object Notation) 속성 - 값 쌍 또는 키 - 값 쌍으로 이루어진 데이터 개체를 전달하기 위한 개방형 표준 포맷 { "이름": "홍길동", "나이": 25, "성별": "여", "주소": "서울특별시 양천구 목동", "특기": ["농구", "도술"], "가족관계": {"#": 2, "아버지": "홍판서", "어머니": "춘섬"}, "회사": "경기 수원시 팔달구 우만동" } 인간이 읽을 수 있는 텍스트를 사용하며, 언어 독립형 데이터 포맷이다. 비동기 브라우저/서버 통신에 사용하며 XML을 대체한다. Python에서는 내장 모듈인 json을 이용해 JSON 데이터를 처리할 수 있다. json 모듈 사용 방법 loads() json 문자열을 python ..

Python 2021.11.01

[requests] http cURL 요청 처리

개요 cURL과 같은 웹 요청을 Python으로 처리하는 방법을 적어둔다. cURL; client URL 윈도우와 리눅스에 기본 설치되고 있는 웹 개발 툴 http, https, ftp, sftps, smtp, telnet 등의 다양한 프로토콜을 이용해 데이터를 전송하기 위한 라이브러리와 명령 줄 도구를 제공한다. 명령어 curl -X "" -H "" -d '{}' # -X : --request. 요청 메소드 지정 # -H : --header. HTTP Header에 추가 # -d : --data. HTTP POST data 지정 # 예시 curl -X POST "https://gitlab.example.com/api/v4/projects" -H "Accept-Encoding: gzip" -H "Cont..

Python 2021.10.31

[Python] tuple

Tuple 리스트와 유사하지만 리스트와는 다르게 변하지 않는 순서와 값의 집합이다. 대표적으로 여러 값을 한 번에 저장하거나 변수 두 개의 값을 서로 변경할 때 사용한다. 선언 및 초기화 소괄호는 생략이 가능하면, 튜플 내의 값은 쉼표로 구분한다. 튜플 내 자료형은 동일하지 않아도 괜찮다. 튜플 내에 튜플이 포함될 수도 있다. 튜플 내에 한 개의 원소만 존재하면 튜플로 취급하지 않으나, 원소 뒤에 쉼표를 찍으면 튜플로 취급할 수 있다. t1 = () t2 = (1, "a") t3 = 1, "a" t4 = (1, "a", (1, "a")) t5 = (1,) 인덱싱 순서가 있기 때문에 인덱스로 접근 가능하다. t[1] 슬라이싱 t[1:] 튜플 합치기 + 연산자로 튜플을 합칠 수 있다. t = t2 + t3 ..

Python 2021.10.28