ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python 기초 #6] 함수, 사용자 입력과 출력, 파일 읽고 쓰기
    Programming 기초/Python 2023. 4. 19. 16:50

    * 파이썬 함수의 구조

    def 함수 이름(매개변수)
         수행할 문장1
         수행할 문장 2
         ...
    • def는 함수를 만들 때 사용하는 예약어(keyword)
    • 매개변수(parameter) : 함수에 입력으로 전달된 값을 받는 변수.
    • 인수(arguments) : 함수를 호출 할 때 전달하는 입력값.
    • 매개변수와 인수는 혼용해서 사용됨. 

     

    * 입력값과 결괏값에 따른 함수의 형태

    • 일반적인 함수 
    결괏값을 받을 변수 = 함수 이름(입력 인수1, 입력 인수2, ...)
    예)
    def add(a, b):
         result = a + B
         result result                 # a+b의 결괏값 반환
    • 입력값이 없는 함수
    결괏값을 받을 변수 = 함수 이름()
    예)
    def say():
         return 'Hi'
    • 결과값이 없는 함수
    함수 이름(매개변수1, 매개변수2,...)
    예)
    def add(a,b):
         print("%d, %d의 합은 %d입니다." % (a, b, a+b))

    >>>a = add(3,4)
    3, 4의 합은 7입니다.
    >>>print(a)
    None                                # '거짓'값 출력됨.
    • 입력값도 결괏값도 없는 함수
    함수 이름()
    예)
    def say():
         print('Hi')

     

    * 입력값이 몇 개가 될지 모를 때 함수 정의법

    def 함수이름(*매개변수):
         수행할 문장

    매개변수 앞에 *을 붙인다.

    def add_mul(choice, *args):		# 매개변수로 choice와 *args를 받음.
        if choice == "add":
            result = 0
            for i in args:
                result += i
        elif choice == "mul":
            result = 1
            for i in args:
                result = result * i
        return result
    
    
    result = add_mul('add', 1, 2, 3, 4, 5)
    print(result)
    
    result = add_mul('mul', 1, 2, 3, 4, 5)
    print(result)

     

    * 키워드 파라미터

    딕셔너리를 매개변수로 쓰고자 할 때 사용된다. 매개 변수 앞에 **이 붙는다.

    def print_kwargs(**kwargs):
        print(kwargs)
    
    print_kwargs(a=1)	#keyword =a, value =1 딕셔너리 입력
    
    print_kwargs(name='foo', age=3)
    -------------------------------------------
    {'a': 1}
    {'name': 'foo', 'age': 3}

     

    * 함수의 결과값은 언제나 하나이다.

    def add_and_mul(a, b):
        return a+b, a*b
    
    result = add_and_mul(3, 4)
    print(result)
    -----------------------------
    (7, 12) # 1개의 튜플 값으로 출력된다.

     

    * 매개변수에 초깃값 미리 설정하기

    - 초기화시키고 싶은 매개변수는 항상 뒤에 놓아야 한다.

    def say_myself(name, age, man=True):
        print("나의 이름은 %s" % name)
        print("나이는 %d 입니다." % age)
        if man:
            print("남자입니다.\n")
        else:
            print("여자입니다.\n")
    
    
    say_myself("김유빈", 20)
    #say_myself("김유빈", 20, True)  두 문장은 완전히 같다.
    
    say_myself("김유빈", 25, False)
    ---------------------------------
    나의 이름은 김유빈
    나이는 20 입니다.
    남자입니다.
    
    나의 이름은 김유빈
    나이는 25 입니다.
    여자입니다.

     

    *함수 안에서 함수 밖의 변수를 변경하는 방법.

    1. return 사용

    2. global 명령어 사용 : 사용을 권장하지 않는다. 

    - 리스트, 딕셔너리, 집합은 mutable(변할 수 있는 자료형)로, 함수 내에서 바뀐 값이 함수 밖에서도 바뀐다. C언어에서 '참조에 의한 호출'과 같은 개념으로, 포인터로 생각하면된다.

    - 정수, 실수,  문자열, 튜플은 변하지 않는 자료형이다.

    a = 1
    def vartest():
        global a
        a = a+1
    
    vartest()
    print(a)
    --------------------
    2

     

    * lambda

    - 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 

    - 보통 함수를 한 줄로 간결하게 만들 때 사용한다.

    lambda 매개변수1, 매개변수2, .. : 매개변수를 사용한 표현식
    >>> add=lambda a, b: a+b
    >>> result = add(3,4)
    >>> print(result)
    7

     

    * input()

    a = input("내용을 입력하세요: ")	# input()로 써도 됨.
    print(a)
    ------------------------------
    내용을 입력하세요: life is too short, you need python
    life is too short, you need python

     

    *print()

    print("Life" "is" "too short")
    print("Life"+"is"+"too short")	# +연산은 위 문장과 동일하다.
    
    print("Life", "is", "too short") # 문자열 띄어쓰기는 콤마로 한다.
    ----------------------------------
    Lifeistoo short
    Lifeistoo short
    Life is too short

    (복습) 한 줄에 결괏값 출력하기 - for 구문에서 배웠던 end=""

    for i in range(10):
        print(i, end=" ")
    ---------------------
    0 1 2 3 4 5 6 7 8 9

     

    * 파일 읽고 쓰기

    파일 객체 = open(파일 이름, 파일 열기 모드)
    f = open("절대주소/새파일.txt", 'w') #절대주소에 '새파일'을 생성한다. 쓰기모드 w
    f.close()	# 파일 객체를 닫아 주는 역할.
    파일 열기 모드 설명
    r 읽기 모드 - 파일을 읽기만 할 때 사용
    w 쓰기 모드 - 파일에 내용을 쓸 때 사용
    a 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용

     

    * 파일을 쓰기 모드로 열어 출력값 적기(w)

    - 쓰기모드('w')로 파일을 열 때 이미 존재하는 파일을 열면 그 파일의 내용이 모두 사라지게 된다. (추가할 때는 'a' 사용.)

    f = open("C:/(절대주소)/새파일.txt", 'w', encoding="UTF-8")	# encoding 형식을 지정해준다.
    for i in range(1, 11):
        data = "%d번째 줄입니다.\n" % i
        f.write(data)   # data를 파일 객체 f에 써라.
    f.close()

     

    * readline 함수 

    - 외부 파일을 읽어 줄 단위로 출력

    f = open("C:/(주소)/새파일.txt", 'r', encoding="UTF-8")
    while True:
        line = f.readline()	# 첫 번째 줄을 읽고 그 다음 줄을 차례로 읽는다.
        if not line:
            break
        print(line)
    f.close()

     

    * readlines 함수

    - 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 돌려준다.

    f = open("C:/주소/새파일.txt", 'r', encoding="UTF-8")
    lines = f.readlines()	#lines의 자료형은 '리스트'이다.
    for line in lines:
        print(line.strip("\n"), end= " ")	# strip은 내용 제거모듈이다.
    f.close()

     

    * read 함수

    파일의 내용 전체를 문자열로 돌려준다. 

    f = open("C:/주소/새파일.txt", 'r', encoding="UTF-8")
    data = f.read()	# data는 파일 전체 내용이다.
    print(data)
    f.close()

     

    * 파일에 새로운 내용 추가하기(a)

    f = open("C:/주소/새파일.txt", 'a', encoding="UTF-8")
    for i in range(11, 20):	# 11부터 19까지 i에 대입
        data = "%d번째 줄입니다.\n" % i
        f.write(data)   # data를 파일 객체 f에 추가하라.
    f.close()

     

    * with문

    - 파일을 열고 닫는 것을 자동으로 처리해주는 역할

    - with 블록을 벗어나는 순간 열린 파일 객체 f가 자동으로 close 된다.

    with open("C:/주소/새파일.txt", 'a', encoding="UTF-8") as f:
        f.write("Life is too short, you need python\n")

    위 문장과 아래 문장은 같은 문장이다.

    f = open("C:/주소/새파일.txt", 'a', encoding="UTF-8")
    f.write("Life is too short, you need\n")
    f.close()

     

    댓글

Designed by Tistory.