'''
# 함수(function) : 입력값(인자값,인수값, 파라미터, 매개 변수, argument), 기능 구현, 결과값(출력값, 리턴값, 반환값))
- ★★재사용 가능한 블록
- print같은 내장함수도 있지만 직접 함수를 정의하여 사용할 수 있음
- 함수정의 방법
~def 로 시작함
~함수명을 작성함
~함수명 옆에 ()(괄호) 붙임, 인자가 필요하면 괄호안에 표기함.
~:(콜론)을 붙여서 블록을 시작함
~코드 부분은 들여쓰기를 시작하여 작성함.
~return은 반환값이 존재하면 작성하고, 반환값이 없으면 작성안함.(None반환)
- def 함수명(입력값) :
수행코드
return [결과값] #결과값이 있다면
- 함수호출(call) : 함수 정의 이후, 함수를 호출(call)을 해야만 함수가 실행됨.
- 변수 범위 : 모든 위치의 변수에 접근이 가능하지 않음.
~지역변수 : 함수 내부에 정의된 변수 (함수 안에서만 접근가능함.)
~전역변수 : 함수 외부에 정의된 변수 (전체에서 접근가능함.)
- 인자 사용 방법1 : 인자 사용하는 변수를 지정하여 사용 가능
def test(a) :
print(a)
test(a="hi") #ok
test(b="hi") #error
test("hello") #ok - 변수가 한 개일때
def add(num1, num2) :
result1 = num1 + num2
return result1
print( add(num1=3, num2=4) ) #ok
print( add(num1=3, num3=4) ) #error
print( add(3,4) ) #ok
print( add(3, num2=4) ) #ok
-인자 사용 방법2 : 인자 사용하는 변수에 기본값을 미리 지정할 수 있음(default argument)
~default 인자는 맨 마지막에 위치해야 함. ex) (num1=10, num2) -> 불가!!!
def add(num1, num2=10) :
result1 = num1 + num2
return result1
print( add(4) ) #4
print( add(4,15) ) #19 -> 두 개 넣어도 됨!(두 개 다 넣을 경우 기본값에 덮어씀)
- 인자 사용 방법3 : 인자의 개수가 지정하기 어려울때 *(아스터리스크)를 붙일 수 있음. *가 붙은매개 변수는 tuple형이 됨.
#가변 변수 함수
def addMulti(*num) :
print(num)
addMulti(1,2,3) #(1, 2, 3, 4, 5)
- 반환값은 원래 하나여야 함! (파이썬은 특이하게 결과값에 여러 개를 입력하면 튜플 형식으로 묶어서 하나로 반환 가능)
def add(num1, num2) :
result1 = num1 + num2
result2 = num1 - num2
return result1, result2
print( add(3,4) ) # (7, -1)
========================================================================================
print("===========================\n\n\n\n\n\n\n")
#두 수를 더하는 메서드(함수)
def add(num1, num2) :
result1 = num1 + num2
return result1
print( add(3,4) )
print("\n===========================\n\n\n\n\n\n\n")
#두 수를 빼는 메서드(함수)
def minus(num1, num2) :
result2 = num1 - num2
return result2
print( minus(5,4) )
print("\n===========================\n\n\n\n\n\n\n")
#두 수를 곱하는 메서드(함수)
def multiple(num1, num2) :
result3 = num1 * num2
return result3
print( multiple(5,4) )
print("\n===========================\n\n\n\n\n\n\n")
#두 수를 나누는 메서드(함수)
def devide(num1, num2) :
result4 = num1 / num2
return result4
print( devide(6,2) )
print("\n===========================\n\n\n\n\n\n\n")
#두 수를 더하는 메서드(함수) - 인자 미리 지정
def add(num1, num2=10) :
result1 = num1 + num2
return result1
print( add(4) )
print("\n===========================\n\n\n\n\n\n\n")
#세 수를 더하는 메서드(함수)
def add(num1, num2, num3) :
result = num1 + num2 + num3
return result
print( add(1,2,3) )
print("\n===========================\n\n\n\n\n\n\n")
========================================================================================
#결과값이 없는 함수 : 화면에 hello, python 출력
def helloPython() :
print("hello, python")
return None #결과값이 없을 경우 안 적어도 되지만, ★★무조건 return이 있다! 생략이 가능할 뿐
helloPython()
========================================================================================
print("\n===========================\n\n\n\n\n\n\n\n\n\n")
#가변 변수 함수
def addMulti(*num) :
result = 0
for i in num :
result = result + i
return result
print( addMulti(1,2) )
print("\n===========================\n\n\n\n\n\n\n")
========================================================================================
'''
#모듈: 클래스, 함수, 변수 를 의미 있게 모아 놓은 것
- 모듈을 이용하면 코드를 좀 더 이해하기 쉽고 논리적으로 만들 수 있음.
- 모듈은 함수, 클래스, 변수로 이루어짐.
- 모듈은 독자적으로 실행 가능함.
- import 키워드를 사용함.
import module1 [, module2, module3…]
- 파이썬 파일명이 모듈명이 됨. ★★모둘명 파일과 실행할 파일이 같은 경로(폴더)에 존재해야 함.
* 모듈 찾는 방식(아래 순서대로 찾음) "
1. 현재 같은 디렉토리
2. 같은 디렉토리가 아니면, pythonpath 의 경로
3. 이것도 찾을 수 없으면, 파이썬의 기본 경로
* sys.path 변수에서 확인 가능
import sys
print(sys.path)
- import <가져올 모듈명> 으로 모듈을 가져올 수 있다. 이를 Generic Import라 한다.
ex) import random
- 불러온 모듈을 사용할때는 <모듈명.함수명> 으로 사용한다.
ex) random.choice(a) / random.choice(b)
- 모듈은 처음 한 번만 불러옴.
- 만약 매번 모듈명을 앞에 쓰는게 귀찮다면 from <모듈명> import <그 중의 함수명> 을 사용하면 된다.
ex1) from random import choice -> choice(a) / choice(b)
ex2) from calc import add, sum-> a=add(1,2) / print(sum)
- 모든 함수를 가져오고 싶다면 from <모듈명> import * 를 하면 된다.
ex) from random import * -> choice(a) / shuffle(b)
'''
- PYTHONPATH 경로 설정
#dir(modname) : 모듈이 가지고 있는 정보를 반환
import calc
print( dir (calc) )
print(calc.__name__) # 모듈 calc의 __name__
print(__name__) # 실행하고 있는 현재 파일의 __name__
========================================================================================
'''
#디렉토리도 하나의 파일!
#파일 입출력 (File I/O)
- 파일 열고 닫기(열었으면 닫아줘야 함!)
~파이썬에서 파일에 관련한 기본적인 함수를 제공함.
~file 객체를 사용하여 조작함.
- 파일 열기
~파일을 읽고 쓰려면 먼저 파일을 열어야 함.
~open() 함수를 사용함.
~open(filename [, access_mode] [, buffering])
~access_mode 는 읽기, 쓰기, 추가하기
<access mode>
- r : 기본모드. 읽기전용
- r+ : 읽고 쓸 수 있는 모드
- w : 쓰기 전용. 파일이 없으면 새롭게 파일을 만들고, 있으면 덮어 씀.(덮어쓰기)
- w+ : 읽고 쓸 수 있는 모드, 파일이 없으면 새롭게 파일을 만들고, 있으면 덮어 씀.
- a : 파일에 내용을 추가함. 파일이 없으면 새롭게 파일을 만듬.(이어쓰기)
- a+ : 추가하고 읽을 수 있는 모드. 파일이 없으면 새롭게 파일을 만듬.
- File 객체 속성값
~file.closed : 파일이 닫혀있으면 true. 그렇지 않으면 false.
~file.mode : 파일을 연 mode를 반환함.
~file.name : 파일명을 반환함.
f = open("test.txt", "w")
print("이름", f.name)
print("모드", f.mode)
f.close()
- 파일닫기
~파일을 닫은 후에는 쓰거나 읽을 수 없음
~close()를 하여 닫는 처리를 하는 것이 좋음.
'''
========================================================================================
f = open("d:/sample.txt", 'w')
f.write("안녕하세요?\n")
f.write("오늘은 토요일입니다.\n")
f.write("이제 곧 저녁시간입니다.\n")
f.close()
========================================================================================
f = open("d:/sample2.txt", 'r')
line1 = f.readline() #한 줄씩 읽기
line2 = f.readline()
line1 = line1.strip() #줄바꿈 제거
line2 = line2.strip()
print(line1)
print(line2)
f.close()
f = open("d:/sample2.txt", 'r')
while True :
line = f.readline()
if (not line) :
break
print(line.strip())
f.close()
========================================================================================
f = open("d:/sample2.txt", 'a')
f.write("조금 졸립니다.\n")
f.close()
========================================================================================
- os 모듈을 이용함. import os
- os.rename(현재 파일명, 바꿀 파일명)
import os
os.rename("d:/sample2.txt", "d:/파일명 변경.txt")
from os import *
rename( "d:/파일명 변경.txt", "d:/sample4.txt")
========================================================================================
- os 모듈을 이용함. import os
- os.remove(파일명)
from os import *
remove("d:/sample4.txt")
========================================================================================
- os 모듈을 이용함. import os
- os.rename(현재 폴더/ 파일명, 바꿀 폴더/ 파일명)
from os import *
rename( "d:/sample.txt", "d:/python/sample.txt")
========================================================================================
#pickel : txt 데이터가 아닌 파이썬 객체 자체를 파일로 저장
import pickle
profile_file = open("d:/profile.pickle", "wb")
profile = {"이름":"박명수", "나이": "30", "취미" : ["축구", "골프", "코딩"]}
print(profile)
pickle.dump(profile, profile_file) # profile 에 있는 정보를 file에 저장 #pickle.dump(객체, 파일)
profile_file.close()
profile_file = open("d:/profile.pickle", "rb")
profile = pickle.load(profile_file) # file에 있는 정보를 profile에 불러오기 # pickle.load(파일)
print(pickle)
profile_file.close()
'파이썬(PYTHON) > 개념정리' 카테고리의 다른 글
[파이썬(Python)] 클래스 (0) | 2022.07.23 |
---|---|
[파이썬(Python)] 디렉토리, 예외 처리 (0) | 2022.07.17 |
[파이썬(Python)] 함수 - 리스트, 튜플, 딕션너리(사전), 시간 (0) | 2022.07.10 |
[파이썬(Python)] 함수 - 숫자, 랜덤, 문자열 + 문자열 포맷 (0) | 2022.07.09 |
[파이썬(Python)] 조건문, 반복문 (0) | 2022.07.09 |