본문 바로가기

파이썬 튜터리얼 정리 4.6 - 함수 정의하기

* 함수 정의하기



def 함수명( 인자값 ):

내용


def a3():
print('aaa')
a3()


---------------


- return 값 갖는 함수


def a3():
return 'aaa'
print(a3())


---------------

- input 있는 함수


def a(num):
return 'a'*num
print(a(3))


---------------


- 2개 input 갖는 함수


def make_string(str, num):
return str*num
print(make_string('b', 3))


실행결과

1
aaa


로그인 애플리케이션 (파이썬)

input_id = input("아이디를 입력해주세요.\n")
def login(_id):
members = ['egoing', 'k8805', 'leezche']
for member in members:
if member == _id:
return True
return False
if login(input_id):
print('Hello, '+input_id)
else:
print('Who are you?')




* 임의 한도(n)까지 피보나치 수열을 출력하는 함수 정의하기.

>>> def fib(n):    # write Fibonacci series up to n
...     """Print a Fibonacci series up to n."""
...     a, b = 0, 1
...     while a < n:
...         print(a, end=' ')
...         a, b = b, a+b
...     print()
...
>>> # Now call the function we just defined:
... fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

- 첫 번째 줄 : documentation string, 독 스트링. 함수 설명.

필수는 아니나, 독스트링을 첨부하는 것은 좋은 관습!


* 변수 참조 우선순위 : 지역 > 전역 > 내장

- 그래서 전역 변수들은 함수 내에서 직접 값이 대입 될 수 없음! (global 문으로 명시 하지 않는 이상)


* 함수에 호출 되는 인자들은 새로운 지역 심볼 테이블에 만들어 짐.

- 그래서 인자들은 값에 의한 '호출'로 전달 됨. (call by value) : 값이 아니라 참조로 가지고 옴.


* 함수 이름도 변수 처럼 다른 이름에 대입 할 수 있음.

>>> fib
<function fib at 10042ed0>
>>> f = fib
>>> f(100)
0 1 1 2 3 5 8 13 21 34 55 89


* return 값이 없으면 none값을 출력 - print( )로 확인 가능.

>>> fib(0)
>>> print(fib(0))
None




>>> def fib2(n):  # return Fibonacci series up to n
...     """Return a list containing the Fibonacci series up to n."""
...     result = []
...     a, b = 0, 1
...     while a < n:
...         result.append(a)    # see below
...         a, b = b, a+b
...     return result
...
>>> f100 = fib2(100)    # call it
>>> f100                # write the result
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

 result.append(a) : result = result + [a] 와 동등하지만, 더 효율적