2022. 12. 26. 16:17ㆍ데이터 엔지니어링 과정/python
목차
1. 함수의 정의와 호출
2. 변수의 유효 범위
3. 람다(lambda) 함수
4. 유용한 내장 함수
1. 함수의 정의와 호출
1. 함수의 기본 구조

2. 인자도 반환 값도 없는 함수
def my_func():
print("My first function!")
print("This is a function.")
my_func()
>>> My first function!
>>> This is a function.
3. 인자는 있으나 반환 값이 없는 함수
: 함수명 다음의 괄호에 요구되는 인자값을 넣는다.
- 요구되는 인자값이 하나인 경우
def my_friend(friendName):
print("{}는 나의 친구입니다.".format(friendName))
my_friend("철수")
>>> 철수는 나의 친구입니다.
my_friend("영미")
>>> 영미는 나의 친구입니다.
- 요구되는 인자값이 둘 이상인 경우
: 인자를 모두 입력해야 한다. 하나라도 빠뜨려서는 안됨!
def my_student_info(name, school_ID, phoneNumber):
print("="*20)
print("- 학생이름:",name)
print("- 학급번호:", school_ID)
print("- 전화번호:", phoneNumber)
my_student_info("현아", "01", "01-234-5678")
>>> ====================
- 학생이름: 현아
- 학급번호: 01
- 전화번호: 01-234-5678
my_student_info("진수", "02", "01-987-6543")
>>> ====================
- 학생이름: 진수
- 학급번호: 02
- 전화번호: 01-987-6543
- 만약 함수가 재정의된다면, 함수를 이용한 앞선 코드들의 결과도 바뀌게 됨
def my_student_info(name, school_ID, phoneNumber):
print("*"*20)
print("* 학생이름:",name)
print("* 학급번호:", school_ID)
print("* 전화번호:", phoneNumber)
my_student_info("현아", "01", "01-234-5678")
>>> ********************
* 학생이름: 현아
* 학급번호: 01
* 전화번호: 01-234-5678
my_student_info("진수", "02", "01-987-6543")
>>> ********************
* 학생이름: 진수
* 학급번호: 02
* 전화번호: 01-987-6543
4. 인자도 있고 반환 값도 있는 함수
def my_calc(x,y):
z = x * y
return z
my_calc(3,4)
>>> 12
- 리스트를 인자로 갖는 함수
def my_student_info_list(student_info):
print("*"*25)
print("* 학생이름:", student_info[0])
print("* 학급번호:", student_info[1])
print("* 전화번호:", student_info[2])
print("*"*25)
#인자를 리스트로 입력해서 호출
student1_info=["현아","01","01-234-5678"]
my_student_info_list(student1_info)
>>> *************************
* 학생이름: 현아
* 학급번호: 01
* 전화번호: 01-234-5678
*************************
2. 변수의 유효 범위
1. 전역 변수와 지역변수
: 함수 안에서 정의한 변수는 함수 안에서만 사용할 수 있다.
a = 5 #전역 벽수
def func1():
a = 1 # 지역 변수. func1()에서만 사용
print("[func1] 지역 변수 a =",a)
def func2():
a = 2 # 지역 변수. func2()에서만 사용
print("[func2] 지역 변수 a =",a)
def func3():
print("[func3] 전역 변수 a =",a)
def func4():
global a # 함수 내에서 전역 변수 변경 위해 선언
a = 4 # 전역 변수의 값 변경
print("[func4] 전역 변수 a =",a)
- 지역변수 a
func1() #함수 func1() 호출
func2() #함수 func2() 호출
print("전역 변수 a =",a) #전역 변수 출력
>>> [func1] 지역 변수 a = 1
>>> [func2] 지역 변수 a = 2
>>> 전역 변수 a = 5
👀 func1(), func2()에서 정의된 지역변수 a는 각각의 함수에 따른 지역 변수를 정의한 것이다.
- 전역 변수를 변경하고 싶을 때는 선언하여 사용한다.
func3()
func4()
func3()
>>> [func3] 전역 변수 a = 5
>>> [func4] 전역 변수 a = 4
>>> [func3] 전역 변수 a = 4
👀 func4()의 경우, 앞서 선언된 전역변수는 global로 데려온 후 a를 4로 재정의하면서 전역변수 a의 값을 바꾼다.
따라서 그 다음으로 호출된 현재의 전역변수의 값을 나타내는 func3()의 결과도 바뀐다.
3. 람다(lambda) 함수
- 한줄로 함수를 표현
- 기본구조
- (lambda <인자> : <인자 활용 수행 코드>) (<인자>)
(lambda x : x**2) (4)
>>> 16
- 람다 함수를 변수에 할당한 후에 인자를 호출해서 사용
mySquare = lambda x : x**2
mySqaure(2)
>>> 4
mySqaure(5)
>>> 25
- 여러 개의 인자를 받아 사용하는 것도 가능
mySimpleFunc = lambda x,y,z : 2*x + 3*y + z
mySimpleFunc(1,2,3)
>>> 11
4. 유용한 내장 함수
1. 형 변환 함수
- int() 정수형으로 변환
- 소수점 이하는 버려짐
[int(0.123), int(3.5123456), int(-1.3257)]
>>> [0, 3, -1]
- 문자열을 정수형으로 변환
[int('1234'), int('5678'), int('-9012')]
>>> [1234, 5678, -9012]
- float() 실수형으로 변환
[float(0), float(123), float(-567)]
>>> [0.0, 123.0, -567.0]
- 문자열을 실수형으로 변환
[float('10'), float('0.123'), float('-567.89')]
>>> [10.0, 0.123, -567.89]
- str() 문자형으로 변환
[str(123), str(456789), str(-987)]
>>> ['123', '456789', '-987']
[str(0.123), str(345.678), str(-5.672)]
>>> ['0.123', '345.678', '-5.672']
- 리스트, 튜플, 세트형으로 변환
list_data = ['abc', 1, 2, 'def']
tuple_data = ('abc', 1, 2, 'def')
set_data = {'abc', 1, 2, 'def'}
[type(list_data),type(tuple_data), type(set_data)]
>>> [list, tuple, set]
- list() 리스트로 변환
print("리스트로 변환: ",list(tuple_data), list(set_data))
>>> 리스트로 변환: ['abc', 1, 2, 'def'] [1, 2, 'def', 'abc']
- tuple() 튜플로 변환
print("튜플로 변환: ",tuple(list_data), tuple(set_data))
>>> 튜플로 변환: ('abc', 1, 2, 'def') (1, 2, 'def', 'abc')
- set() 세트로 변환
print("세트로 변환: ",set(list_data), set(tuple_data))
>>> 세트로 변환: {1, 2, 'def', 'abc'} {1, 2, 'def', 'abc'}
👀set의 경우, 순서보다도 겹치지 않는 게 중요하다. 그래서 set의 구성요소의 순서는 기존에 입력한 것과 다를 수도 있다.
2. bool 함수
- 숫자를 인자로 bool 함수 호출
bool(0) # 인자 : 숫자 0
>>> False
bool(1) # 인자 : 양의 정수
>>> True
bool(-10) # 인자: 음의 정수
>>> True
bool (5.12) # 인자: 양의 실수
>>> True
bool (-3.25) # 인자: 음의 실수
>>> True
🤸🏻♀️bool은 숫자인 경우에, 0만 False이군!
- 문자열을 인자로 bool 함수 호출
bool('a') # 인자: 문자열 'a'
>>> True
bool(' ') # 인자: 빈 문자열(공백)
>>> True
bool('') # 인자: 문자열 없음
>>> False
bool(None) # 인자: 문자열 없음
>>> False
🤸🏻♀️bool은문자열인 경우에, 안에 문자열이 존재하지 않는다면 False이군!
그런데!! 빈 문자열, 즉 공백은 있다고 봐서 True!!
- 리스트, 튜플 세트를 인자로 bool 함수 호출
- 리스트를 인자로 bool 함수 호출
myFriends = []
bool(myFriends) # 항목이 없는 빈 리스트
>>> False
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
bool(myFriends) # 인자: 항목이 있는 리스트
>>> True
- 튜플을 인자로 bool 함수 호출
myNum = ()
bool(myNum) # 인자: 항목이 없는 빈 튜플
>>> False
myNum = (1, 2, 3)
bool(myNum) # 인자: 항목이 있는 튜플
>>> True
- 세트를 인자로 bool 함수 호출
mySetA = {}
bool(mySetA) # 인자: 항목이 없는 빈 세트
>>> False
mySetA = {10, 20, 30}
bool(mySetA) # 인자: 항목이 있는 세트
>>> True
🤸🏻♀️bool은 리스트, 튜플, 세트에서 비어있다면 False
- bool 함수의 활용
def print_name(name):
if bool(name):
print("입력된 이름:", name)
else:
print("입력된 이름이 없습니다.")
print_name("James")
>>> 입력된 이름: James
print_name("")
>>> 입력된 이름이 없습니다.
3. 최솟값과 최댓값을 구하는 함수
- 리스트에서 활용
myNum = [10, 5, 12, 0,3.5, 99.5, 42]
[min(myNum), max(myNum)]
>>> [0, 99.5]
- 문자열에서 활용
myStr = "zxyabc"
[min(myStr),max(myStr)]
>>> ['a', 'z']
- 튜플에서 활용
myNum = (10, 5, 12, 0, 3.5, 99.5, 42)
[min(myNum),max(myNum)]
>>> [0, 99.5]
- 세트에서 활용
myNum = {"Abc", "abc", "bcd", "efg"}
[min(myNum),max(myNum)]
>>> ['Abc', 'efg']
4. 절댓값과 전체 합을 구하는 함수
- abs() 절댓값을 구하는 함수
[abs(10), abs(-10)]
>>> [10, 10]
[abs(2.45), abs(-2.45)]
>>> [2.45, 2.45]
- sum() 전체 합을 구하는 함수
sumList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sum(sumList)
>>> 55
5. 항목의 개수를 구하는 함수
len("ab cd") # 문자열
>>> 5
len([1, 2, 3, 4, 5, 6, 7, 8]) # 리스트
>>> 8
len((1, 2, 3, 4, 5)) # 튜플
>>> 5
len({'a', 'b', 'c', 'd'}) # 세트
>>> 4
len({1: "Thomas", 2: "Edward", 3: "Henry"}) #딕셔너리
>>> 3
6. 내장 함수의 활용
- 사용하지 않은 경우
scores = [90, 80, 95, 85] # 과목별 시험 점수
score_sum = 0 #총점 계산을 위한 초깃값 설정
subject_num = 0 #과목수 계산을 위한 초깃값 설정
for score in scores:
score_sum = score_sum + score #과목별 점수 모두 더하기
subject_num = subject_num + 1 #과목수 계산
average = score_sum / subject_num # 평균(총점 / 과목수) 구하기
print("총점:{0}, 평균:{1}".format(score_sum,average))
>>> 총점:350, 평균:87.5
- 사용했을 경우
scores = [90, 80, 95, 85] #과목별 시험 점수
print("총점{0}, 평균:{1}".format(sum(scores), sum(scores)/len(scores)))
>>> 총점350, 평균:87.5
print("최하 점수: {0}, 최고 점수:{1}".format(min(scores), max(scores)))
>>> 최하 점수: 80, 최고 점수:95
'데이터 엔지니어링 과정 > python' 카테고리의 다른 글
[7일차] 문자열과 텍스트 파일 데이터 다루기 (0) | 2022.12.28 |
---|---|
[6일차] 객체와 클래스 (0) | 2022.12.27 |
[4일차] 입력과 출력 (2) | 2022.12.22 |
[3일차] 제어문 (if_for_while) (0) | 2022.12.21 |
[2일차] 변수와 자료형 (0) | 2022.12.20 |