# 파이썬(Python)
> 대화형(인터프리터를 통해 실시간으로 실행, 리눅스의 쉘) 스크립트 언어, 객체 지향적인 프로그래밍(OOP) 지원
* 프로그래밍 언어(컴퓨터는 사람의 말을 이해 못함, 컴퓨터는 명령을 처리하기 위해 컴퓨터가 이해할 수 있는 언어인 기계어(0,1로 이루어진 명령체계)로 명령이 작성되어 있어야 함)
> 컴파일 언어 : 컴파일러라는 장치(프로그램)를 통해 사람이 작성한 코드를 기계어로 변환하여 프로그램을 생성
컴퓨터가 실행할 수 있는 기계어로 이루어진 프로그램을 만들어 놓고 필요할 때 실행
> 스크립트 언어 : 인터프리터(프로그램)를 통해 실행 요청 시 라인 단위로(명령 단위로)즉시 기계어로 변화하여 실행
평소에는 소스코드 상태로 존재하다가 실행 요청이 있을 때 실시간으로 기계어로 변환해가며 실행
+ 특징
- 파이썬 2.X 버전과 3.X 버전이 완벽하게 호환되지 않음, 문법적으로 일부 차이가 있음
- 명령문 끝에 ;(세미콜론)을 붙이지 않음(붙혀도 실행 됨, 상관없음)
- 영역의 구분은 공백(들여쓰기)로 함, !!!!주의!!!! 같은 영역에 속하는 명령들은 같은 들여쓰기 크기를 갖어야 함
- #의 용도
> 주석기호로 사용(한줄 주석, # 오른쪽 코드는 주석처리)
> #!(셔뱅)으로 사용, 소스코드의 가장 선두에 작성, 하위 코드를 실행할 프로그램을 지정
> 인코딩 명시용으로 사용(문자셋, 언어지정)
# coding: utf-8
# _*_coding: utf-8 _*_
- 프로그램을 실행하는 방법
> 대화형 실행, 파일 실행
+ 자료형 및 연산자
- 변수명
> 변수 이름 명명규칙은 C언어와 동일함(a-zA-20-9_)
> 변수 이름을 구분짓기 위한 별도의 기호가 없음, 데이터 타입도 지정하지 않음
- 산술 연산자
> 더하기, 빼기, 곱하기, 나누셈의 몫, 나눗셈의 나머지는 C언어와 동일
> +, -, *, /, %
> 파이썬3 에서는 /는 일반 나눗셈의 결과 값, 나눗셈의 몫을 구할 때 //연산자 사용
> 거듭제곱(**)연산자 사용
- 비교 연산자
> C언어와 동일 (==, !=, >, <, >=, <=)
- 논리 연산자
> and(&), or(|), not
- 논리 자료형(Boolean)
> 참/거짓 두 가지 값을 가지는 자료형
> 참 : True, 거짓 : False
> 대/소문자 주의, 첫 글자 대문자
- 문자 자료형
> '," 기호를 사용하여 문자 형태의 값을 표현
> C언어처럼 문자와 문자열을 구분하지 않음, 문자로 처리
> '으로 시작 했으면 '으로 끝나야 하고, "으로 시작 했으면 "으로 끝나야함
> ''',""" : 다량의문자를 사용할 때, 공백과 개행을 문자에 포함할 수 있는 형태
파이썬은 다중 행 주석기호(/*~*/)가 없기 때문에 ''',"""를 다중 행 주석으로 활용
> *(곱하기)를 문자와 숫자 사이에서 사용하면 문자 반복으로 사용 됨
> +(더하기)를 문자와 문자 사이에서 사용하면 문자 연결로 사용 됨(더하기 기호는 생략 가능, 공백으로도 연결 가능함)
> 인덱싱(Indexing), 슬라이싱(Slicing)
- 인덱싱 : 문자가 들어있는 변수이름 뒤에 [위치]를 지정하면 원하는 문자를 선택하여 사용할 수 있음
- 슬라이싱 : 문자가 들어있는 변수이름 뒤에 [시작위치:끝위치]를 지정하여 원하는 범위의 문자를 선택하여 사용할 수 있음.
- 리스트 자료형( [데이터, 데이터, 데이터, ....] )
> 데이터(값)들을 나열, !!순서가 존재!!하며 다양한 데이터 타입의 값을 담을 수 있음
> 문자와 마찬가지로 0부터 시작하는 인덱스를 가지고 있으며, 슬라이싱도 가능함
> append() : 리스트의 값을 추가, 리스트의 마지막에 값이 추가됨
> extend() : 리스트의 값을 추가, 여러 값들을 리스트 형태로 한번에 추가할 수 있음
> insert() : 리스트의 값을 추가, 원하는 위치에 값을 추가할 수 있음
> index() : 리스트의 값들 중에서 원하는 값의 위치를 찾을 때 사용
리스트.index(찾을 값[,시작위치,끝위치])
> count() : 리스트의 값들 중에서 지정한 값의 개수를 반환
> remove () : 리스트의 값을 삭제, 동일한 값이 두 개 이상 존재한다면 앞 쪽의 값부터 삭제
> pop() : 리스트의 값을 뽑아 내어 반환, 결과적으로 리스트의 값이 삭제 됨
값을 지정하지 않으면 가장 마지막 값을 뽑아냄, 값의 위치를 지정하면 지정한 값을 뽑아냄, 사용할 떄마다 갱신됨
> sort(), reverse() : 정방향, 역방향 정렬
- 사전 자료형( {키1:값1, 키2:값2, 키3:값3, ... } )
> 키와 값의 쌍으로 이루어져 있는 자료형, !!순서가 없음!! , 키는 꼭 문자일 필요 없음
> 새로운 값을 추가하려면 새로운 키와 값을 할당해야 하고, 변경하려면 해당 항목의 키에 변경할 값을 할당하면 됨
> kets() : 사전의 키 만을 반환
> values() : 사전의 값 만을 반환
> clear() : 사전 초기화, 모든 내용을 삭제 함
> del 사전명[키] : 지정된 키와 값이 삭제 됨
+ 제어문(if, for, while)
> 제어문들의 조건식 끝에는 콜론(:)을 명시해야 함
> break(반목문 탈출), continue(반복문의 선두 이용) 키워드 사용 가능
- if문
> 조건문, else if -> elif
> 사용 방법
if 조건식:
명령문
명령문
elif 조건식:
명령문
명령문
else:
명령문
명령문
- for문
> 리스트의 값들을 순차적으로 꺼내어 변수에 대입하고, 대입할 값이 존재하면 참, 존재하지 않으면 거짓
> 리스트 값의 개수만큼 반복 실행
> 사용 방법
for 변수 in 리스트:
명령문
명령문
- while문
> 조건이 거짓 될때까지 반복적으로 명령을 실행할 때 사용하는 반복문
> 조건식이 거짓이 되지 않으면 영원히 종료되지 않는 무한루프가 되므로 반드시 조건이 거짓되는 상태를 만들어야 함
> 사용 방법
while 조건식:
명령문
명령문
+ 입력
- input('출력문자') : 입력받은 값을 숫자(정수)값으로 반환
- raw_input('출력문자') : 입력받은 값을 문자값으로 반환
--------------------
연습1
gugudan.py(숫자를 문자와 연결할 때는 str(숫자) 함수로 문자로 변환하여 연결해야함)
결과
======== gugudan =======
2 X 1 = 2
2 X 2 = 4
.....
9 X 9 =81
================ ========
풀이2
#! /usr/bin/python2
# coding: utf-8
print'========gugudan========'
for x in range(2,10):
for y in range(1,10):
print str(x)+'x'+str(y)+'='+str(x*y)
print'========================'
연습2
calc.py
===========calc==========
1. ADD 2.SUB 3.MUL 4.DUV 5.EXIT
-------------------------------------
값1 : [입력대기]
값2 : [입력대기]
선택 : [입력대기]
========================
1단계는 한번만 실행하고 종료
2단계는 5번을 선택할 때까지 반복 실행(1~5가 아닌 값을 입력하면 에러라는 문구 출력 반복)
+ 함수
- 함수는 하나의 기능을 가지는 코드의 조합
각각의 명령 : 왼팔 앞으로, 왼팔 뒤로, 오른팔 앞으로, 오른팔 뒤로, 왼발을 앞으로, 왼발을 뒤로, 오른발 앞으로, 오른발 뒤로
하나의 기능 : 걷기(걸음수)
1. 왼발 앞으로
2. 오른팔 앞으로
3. ~~~
...
- 파이썬 함수의 정의는 def 키워드로 시작해서 콜론(:)으로 끝내고, 함수 실행 명령문들의 범위는 들여쓰기로 구분함
- 함수 정의
def 함수이름(매개변수[,매개변수,...]):
명령문
명령문
...
[return 반환값]
+ 모듈
- 모듈이란 자주 사용되는 함수, 변수, 클래스 파일로 작성하여 재사용 할 수 있도록 만들어 놓은 파이썬 파일
- 여러 모듈을 묶어서 패키지로 사용
- 모듈 사용 방법
import 모듈이름 # 모듈 전체를 가져와 사용하겠다(모듈 전체를 로딩)
-> 함수 호출 : 모듈이름.함수명
from 모듈이름 import 함수명 # 모듈에서 지정한 함수만 가져와 사용하겠다(지정한 함수만 로딩)
-> 함수 호출 : 함수명
+ urllib2 모듈
- urlopen(URL[,data]) : 인자로 URL을 전달하면 해당 URL에 대한 HTTP 요청 메시지를 송신하고 응답받은 메시지를 반환
- read() : 응답 메시지의 Body 부분만을 읽을 때 사용
- info() : 응답 메시지의 Header 부분만을 읽을 때 사용(반환값이 문자)
- info().headers : 응답 메시지의 Header를 리스트 형태로 반환
- headers.get('헤더이름') : 인자로 전달한 이름의 헤더 값만을 반환함
- Request(URL) : 지정된 URL에 대한 요청 메시지를 생성하여 반환함
- add_header('헤더이름', '헤더값') : 요청 메시지에 헤더를 추가함
+ urllib 모듈
- urlencode(사전) : 사전에 들어있는 요소를 요청 메시지 Body에 포함될 수 있는 포맷으로 변환해줌
{ 'id':admin','pass':'P@ssw0rd' } -------> id=admin&pass=P@ssw0rd
'정보보안 > 공부 기록' 카테고리의 다른 글
NAT (0) | 2023.01.01 |
---|---|
Blind_sql_injection code (0) | 2023.01.01 |
Salt, 패스워드 취약점 점검 (0) | 2023.01.01 |
SELinux Log (0) | 2023.01.01 |
SELinux (0) | 2023.01.01 |