Python 10 - 함수 활용 방법

2021. 5. 2. 17:54python

반응형

# 함수 기본값 설정

def profile(name, age, main_lang):
	print("이름:{0}\t나이:{1}\t\t자주 사용 단어:{2}".format(name, age, main_lang))

profile("유재석", 51, "무야호")
profile("김태호", 48, "오케이콜")

---------출력결과----------

이름:유재석  나이:51  자주 사용 단어: 무야호

 

이름:김태호  나이: 48  자주 사용 단어:오케이콜

# 함수 기본값 설정

# 만약 태호와 재석이가 같은 나이에 같은 단어를 자주 사용한다면??

def profile(name, age=17, main_lang="무야호"):
	print("이름:{0}\t나이:{1}\t\t자주 사용 단어:{2}" .format(name, age, main_lang))

profile("유재석")
profile("김태호")

age와 main_lang 을 미리 지정 함으로써 호출시에 편리하게 호출 할 수 있다.

# 키워드 값을 이용한 함수 호출

# 키워드=값을 넣어주면 순서가 뒤바뀌어 있어도 잘 전달될 수 있다.
def profile(name, age, main_lang):
	print(name, age, main_lang)

profile(name="유재석", main_lang="무야호", age=51)
profile(main_lang="오케이콜", age=48, name="김태호")

호출시에 귀찮게 키워드값을 하나하나 넣게 되면 순서가 뒤바뀌어도 잘 전달된다는 장점이 있다.

# 가변인자

def profile(name, age, lang1, lang2, lang3, lang4, lang5):
	print("이름 : {0}\t나이 : {1}\t" .format(name, age), end=" ") # end=" "는 밑에 print출력문과 같은 줄에서 출력되도록한다.
	print(lang1, lang2, lang3, lang4, lang5) #일일이 다 입력해야하는 번거로움...

def profile(name, age, *language): # *language로 표현하면 넣고싶은만큼 넣게 만들어줌
    print("이름 : {0}\t나이 : {1}\t" .format(name, age), end=" ")
    for lang in language: #for문을 이용해 반복되는 lang을 출력
        print(lang, end=" ")
    print()

profile("유재석", 20, "python", "Java", "C", "C++", "C#", "Javascript")
profile("김태호", 25, "kotlin", "Swift")

end=" " 는 print출력문과 같은 줄에서 출력이 되도록한다. 즉 한줄로 출력하고 싶다면 end=" "를 활용한다.

또한 가변인자를 이용하여 앞에 *를 붙이게 되면 인자를 넣고싶은 만큼 넣을 수 있다.

for문을 이용하여 한줄에 원하는 language들을 갯수에 구애받지 않고 마음껏 추가할 수 있다.

# 지역변수 : 함수 내에서만 사용할 수 있는

# 전역변수 : 모든 공간내에서 프로그램 전체에서 사용 할 수 있는

----------A---------------
gun = 10
def checkpoint(soldiers): # 경계근무
  gun = 20
  gun = gun - soldiers
  print("[함수내] 남은 총 : {0}" .format(gun))
  
print("전체 총 : {0}" .format(gun))
checkpoint(2)
print("남은 총 : {0}" .format(gun))

----------B---------------
gun = 10
def checkpoint(soldiers): #경계근무
  global gun
  gun = gun - soldiers
  print("[함수내] 남은 총 : {0}" .format(gun))
print("전체 총 : {0}" .format(gun))
checkpoint(2)
print("남은 총 : {0}" .format(gun))

함수 밖의 gun과 함수 내에 gun값이 서로 연동되지 않는 것을 지역변수라고하고 

이럴때 우리는 전역변수를 사용한다. 이럴 때 B의 코드와 같이 global 함수를 이용하여 해결할 수 있다.

 

# 가능한 global 보단 아래와 같은 방법을 이용하는 것이 가장 좋다.

gun = 10
def checkpoint_ret(gun, soldiers):
  gun = gun - soldiers
  print("[함수내] 남은 총 : {0}" .format(gun))
  return gun
print("전체 총 : {0}" .format(gun)) 
gun = checkpoint_ret(gun, 2)
print("남은 총 : {0}" .format(gun))

---------출력결과----------

 

전체 총 : 10
[함수내] 남은 총 : 8
남은 총 : 8

반응형