4. 파이썬 코딩

곽정은·2021년 1월 4일
1

정리

목록 보기
4/5

안녕하세요. 곽정은입니다.

이번 노드에서는 파이썬 문법을 공부했습니다. 개인적으로 공부한 적은 있지만 응용문제를 풀어보질 않으니 매번 코딩 예제를 만날 때마다 어렵습니다. 적용을 못하겠달까요...?

전에 파이썬 기본 문법은 노트에 적으면서 공부를 했었는데요. 그러니 이번에는 안다고 생각했지만 실상은 잘 모르는 문법들만 정리하려고 합니다.


잘 모르는 파이썬 문법

def

  • def는 함수를 정의할 때 사용하는 일종의 예약어로, 함수명은 임의로 생성할 수 있다. 함수명 뒤에 붙은 괄호는 이 함수에 입력으로 전달되는 값을 받는 자리이며, 입력값이 필요없는 경우에는 위 코드처럼 함수명 뒤에 ()를 붙여주면 된다.

  • def 함수명() 뒤에 :를 붙여부고,이어서 이 함수가 불릴 때 실행할 작업들을 한 줄씩 나열하면 된다. 4칸 들여쓰기는 함수가 끝날 때까지 해주어야 한다.

def say_hi():
	print('안녕!')
  • 이 입력값을 받지 않는 say_hi함수는 '안녕!'이라는 문자열을 출력해주는 함수이다.

스코프: 변수의 유효범위

def say_goosbye():
	goodbye = '잘 가!'
print(goodbye)
  • 함수 내에서도 변수를 정의할 수 있으나 그것은 함수 안에서만 일어난 일이다. 함수가 끝나면 해당 변수는 사라지고 함수 밖에서 해당 변수를 들여다볼 수도 없다.

  • 반대로 함수 내에서 함수 밖의 변수를 읽는 것은 가능하다.

  • 변수의 스코프: 특정 위치에서 어떤 변수에 접근할 수 있는지, 또 한 곳에서 정의된 변수가 어디까지 유효한지 정의된 범위.

  • 함수 내부를 포함해 코드 어디에서든 참조할 수 있는 변수는 전역 스코프를 같는 변수라고 하고, 내부에서 정의되어 밖에서 볼 수 없는 변수는 지역 스코프를 갖는다.

함수에 인자 전달

def say_hi_somebody(name):
	print(name+'안녕')
  • 정의된 함수 괄호 안에 name이라는 입력값이 정의되었다. 이 입력값 자리에 들어오는 값은 해당 함수 내에서 name이라는 변수로 불러 사용할 수 있다.

  • 매개변수: 위와같이 입력값으로 주어진 인자(argument)를 받는 변수. 노드에서 name은 매개변수이고, 준이는 매개변수에 들어가는 인자로 볼 수 있다.

  • 매개변수를 함께 정의한 함수에 인자를 넣지 않으면 필요요소가 빠졌다는 오류를 일으키고, 입력값없이 정의한 함수에 인자를 억지로 넣어도 없어야 하는 곳에 있다며 오류를 일으킨다.

  • 매개변수와 함께 함수를 정의할 때, 괄호 안에 함수가 받은 매개변수의 기본 값을 지정해주면, 입력값이 없을 경우 지정한 입력값을 사용한다.

  • 인자를 추가하려면 괄호 안에 쉼표로 인자의 이름을 다르게 구성해서 넣고, 함수 내에서 그대로 불러 쓰면 된다.

say_hi_couple(name1='싱글', name2='벙글')
	print(name1+','+name2+'안녕!')
  • 함수를 정의할 때 쓰인 인자의 이름을 안다면, 함수를 호출할 때 직접 붙여줄 수도 있다.

  • 인자를 전달할 때는 순서가 상관없다.

  • 기본값이 있는 인자들은 기본값이 없는 인자들 뒤에 와야 한다. 왜냐하면 생략된 인자를 어떤 매개변수로 봐야하는지 불분명하기 때문이다.

함수 결과를 값으로 반환

  • 함수에 값을 넣으면 계산된 값을 돌려주는 것은 함수의 핵심이다. 하지만 우리가 함수를 만들면 열심히 계산은 해주지만 돌려주는 것은 없다.

  • return은 함수 호촐 부분을 return 뒤에 작성으로 반환시킨다. 함수가 호출되면 정의된 함수로 이동하고 return 뒤에 작성된 부분(수식, 기호, 값)을 따라 결과값을 반환하는 것이다. 함수를 호출해준 바깔에 결과를 알려주기 위해 사용하는 것이다.

  • 모든 함수는 어떤 값을 return(반환)해야 한다. 그래서 return이 정의되지 않은 경우 None을 결과값으로 뱉어낸다.

  • 그렇기 때문에 함수를 정의하고 return을 쓰지 않은 채로 함수 밖에서 print(함수(값))를 통해 결과를 출력하고 싶어도 None만 나오는 것이다.

  • 또한 return은 현재 함수의 실행은 멈추조 함수 호출이 끝나는 지점부터 다시 진행한다. 그래서 return 뒤에 위치하고 있어 수행되지 않는 코드를 Dead Code라고 한다.

  • 그리고 함수를 만들 때 매개변수는 없지만 값만 반환하는 합수를 만들 수도 있다.

자료형

  • 정수인 int는 양의 정수, 음의 정수를 모두 포함한다. 정수는 무한하지만 컴퓨터 메모리는 유한하기에 64비트 컴퓨터의 경우 64비트의 공간에 하나의 숫자를 저장할 수 있다. 그럼 18,446,744,073,709,551,616개의 숫자만 인식할 수 있는데 각각 음과 양으로 나누면 -9,223,372,036,854,775,808부터 9,223,372,036,854,775,808까지의 숫자만 표현할 수있다. (유한 정밀도)

  • 1은 정수지만 1.0은 소수인 float이다.

  • 10진법 숫자 중에서도 소수는 2진법으로 정확히 나타낼 수 없고 가장 근사치의 값으로 저장된다.

  • float는 부동소수점 수(floating point number)의 줄임말이다.

  • 소수점 저장 방법에는 2가지가 있다. 하나는 부동소수점으로, 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로, 유효숫자를 나타내는 가수와 소수점의 위치를 풀이하는 지수로 나누어 표현한다. 파이썬이 소수를 표현할 때 이 방식을 채택하고 있다.

  • 나머지는 고정소수점으로, 정수를 표현하는 비트의 수와 소수를 표현하는 비트의 수를 미리 정해두고 해당 비트 만큼만 사용해서 숫자를 표현하는 방식이다.

  • None이라는 자료형도 있는데, 이는 아무것도 없음을 뜻한다. 타 프로그래밍 언어에서는 null이라고도 한다.

  • None은 디자인 타임(=프로그래밍 시점=설계 타이밍)에는 필요가 없지만 프로그램 실행 타이밍에 정의되지 않은 어떤 것이 발생했다고 할 때, 그 어떤 것으로도 정의되지 않는 유형을 정의하기 위해 필요하다고 한다. 프로그램이 그 자리에서 죽는 것보단 아무것도 없는 객체를 반환하는게 나으니깐 말이다.

  • type()는 True, False를 넣으면 class를 'bool'이라고 반환한다.

  • bool()는 값을 입력받으면 참과 거짓으로 반환한다. None이거나 0일 때는 False를 반환하고, 그외에는 True를 반환한다.

  • 문자열 안에서 쌍따옴표랑 따옴표를 둘 다 사용하고 싶다면, 문자열 안에서 따옴표 앞에 \을 붙여 문자 그대로 해석하라고 표시할 수 있다.

  • 슬라이싱을 할 때 n:m이라고 쓴다면, n번째부터 m번째 직전까지를 한 번에 뽑아온다는 뜻이다. n:은 n번째 부터 끝까지라는 뜻이고, :m은 처음부터 m번째 직전까지, 즉 m-1번째까지라는 뜻이다.


미루고 미루다가 이제서야 정리를 하게 되었습니다. 덕분에 정리해야할 노드가 많이 밀렸군요...허허

파이썬 문법은 한번 봤으니 어느정도는 알겠지 싶었는데, 정말 쓰는 것만 기억하고 잘 사용하지 않거나 개념적인 부분은 싹 다 처음보는 것 같군요. 이래서 복습이 중요하다고 하는 거구만요.

조금씩이라도 꾸준히 노드 복습하겠습니다.

그럼 20000~!

profile
인공지능 냉각시스템 개발기업 전략기획

0개의 댓글