수업(국비지원)/Python
[Python] 전역변수, 지역변수
byeolsub
2023. 4. 24. 20:31
#전역변수 : 모든 함수에서 접근이 가능한 변수
#지역변수 : 함수 내부에서만 접근이 가능한 변수
📌 func3과 func4는 지역변수 전역변수로 변하지 않는다.
func5의 경우 global

def func3() :
c=300 #지역변수
print("func3() 함수 호출", a,b,c)
def func4() :
a=110 #지역변수
b=220 #지역변수
print("func4() 함수 호출", a,b)
#함수내부에서 전역변수값 수정하기
def func5() :
global a #a,b 변수는 전역 변수를 사용함
a=110
b=220
print("func5() 함수 호출", a,b)
# 전역 변수. 모든 함수들이 사용하는 변수
a=100
b=200
func3()
#print("main:",a,b,c) # c 변수는 func3() 함수에서만 사용가능. 지역변수
# c라는 변수는 메인에서 접근 불가.
print("main:",a,b)
func4() # 결과 -> func4() 함수 호출: 110 220
print("main:",a,b)# 결과 -> main: 100 200 #전역 변수
func5()
print("main:",a,b)

#함수내부에서 전역변수값 수정하기
def func5() :
global a,b #a,b 변수는 전역 변수를 사용함
a=110
b=220
print("func5() 함수 호출", a,b)
- 매개변수
📌

def add1(v1,v2) :
return v1+v2
def sub1(v1,v2):
return v1-v2
hap = add1(10,20)
sub = sub1(10,20)
print(hap)
print(sub)
hap = add1(10.5,20.1)
sub = sub1(10.5,20.1)
print(hap)
print(sub)
hap = add1("python","3.9")
print(hap)
#hap = add1("python","3.9","7") #add1함수의 배개변수 갯수 틀림
#가변 매개 변수 : 매개변수의 갯수를 정하지 않을 경우
def multiparam(*p) :
result = 0
for i in p :
result += i
return result
print(multiparam())
print(multiparam(10,20))
print(multiparam(10,20,30))
print(multiparam(1.5,2.5,3))

#매개변수에 기본값 설정
def hap1(num1=0,num2=1) : #매개변수가 없는경우 0,1 기본값 설정
return num1+num2
print(hap1()) #num1=1 num2=1 기본값 설정
print(hap1(10)) #num1=10 num2=1 기본값 설정
print(hap1(10,20)) #num1=10 num2=20
print(hap1(0,20)) #num1=10 num2=20
print(hap1(10,20,30))#오류

#리턴값 두개인 경우 : 리스트로 리턴
def multiReturn(v1,v2) :
list1=[]
list1.append(v1+v2)
list1.append(v1-v2)
return list1
list1=multiReturn(200, 100)
print(list1)
#람다식을 이용한 함수
hap2 = lambda num1,num2: num1+num2
#print(hap2(10)) #오류
print(hap2(10,20)) #30
print(hap2(10.5,20.5)) #31.0
#기본값 매개변수
hap3=lambda num1=0,num2=1:num1+num2
print(hap3(10)) #11
print(hap3(10,20)) #30
print(hap3(10.5,20.5)) #31.0
❓ 매개변수 예제
#문제:리스트의 평균을 구해주는 함수 getMan 구현하기
list1 = [1,2,3,4,5,6]
print(getMan(list1))

#1.
def getMean(l) :
return sum(l)/len(l) if len(l)>0 else 0
list1 = [1,2,3,4,5,6]
print(getMean(list1))
print(getMean([]))
#2.람다식을 이용한 함수
getMean2 = lambda l : sum(l)/len(l) if len(l)>0 else 0
print(getMean(list1))
print(getMean([]))
❓ 각각의 요소의 값에 10더하기
#mylist1 보다 각각의 요소가 10이더 많은 요소를 가진
#mylist2 를 생성
mylist1=[1,2,3,4,5]
mylist2=[] #11,1,2,13,14,15

mylist1=[1,2,3,4,5]
#mylist1 보다 각각의 요소가 10이더 많은 요소를 가진 mylist2 를 생성
mylist2=[] #11,1,2,13,14,15
#1. for구문 반복식
for n in mylist1 :
mylist2.append(n+10)
print(mylist2)
#2. 컴프리헨션 방식
mylist2=[n+10 for n in mylist1]
print(mylist2)
#3-1. map방식
#map(함수,리스트) : 리스트의 각 요소에 함수 적용
def add10(n) :
return n+10`
mylist2 = list(map(add10,mylist1))
print(mylist2)
#3-2. map람다 방식
mylist2 = list(map(lambda n:n+10, mylist1)) #n은 mylist1안의 하나하나의 요소. map으로 함수적용한것을 list화
print(mylist2)