[python] Repl.it again & lessons

Alex of the year 2020 & 2021·2020년 11월 22일
0

Python

목록 보기
17/18
post-thumbnail

다시 풀어보는 Repl.it

실수와 허수를 포함하는 복소수를 표현하는 방법

i가 아니라 j
예를 들면 1+3j 이런 식으로 표현한다.

변수명 법칙

  1. 영어 알파벳숫자, 그리고 underscore로만 구성
  2. 변수 이름 첫 글자는 알파벳 or underscore일 것. 숫자는 X
  3. 영어 알파벳은 대문자와 소문자가 구분이 됨 (Case sensitve)

f-string의 다양한 사용

  1. calling a function in f-string
def to_lowercase(input):
	return input.lower()
        
name = "Eric Idle"
f"{to_lowercase(name)} is funny."


eric idle is funny.
  1. creating classes with f-strings & objects
class Comedian:
	def __init__(self, first_name, last_name, age):
    	self.first_name = first_name
        self.last_name = last_name
        self.age = age
        
    def __str__(self)
    	return f"{self.first_name} {self.last_name} is {self.age}."
      
    def __repr__(self):
    	return f"{self.first_name} {self.last_name} is {self.age}. Surprise!"


>>> new_comedian = Comedian("Eric", "Idle", 74)
>>> new_comedian
Eric Idle is 74. Surprise! 
>>> f"{new_comedian}"
'Eric Idle is 74.'           # (f-string 호출 시 str 형태로 반환되는 것 확인 가능)
>>> f"{new_comedian!r}"
'Eric Idle is 74. Surprise!' # (f-string 호출 시 str 형태로 반환되는 것 확인 가능)

__str__, __repr__

위에서 f-string 학습 중 의문이 든 것이 new_comedian을 호출하면 왜 __str__이 아닌 __repr__가 작동되는가였다. 의문은 아래 설명으로 풀렸다.

The __str__() and __repr__() methods deal with how objects are presented as strings, so you’ll need to make sure you include at least one of those methods in your class definition. If you have to pick one, go with __repr__() because it can be used in place of __str__().

The string returned by __str__() is the informal string representation of an object and should be readable. The string returned by __repr__() is the official representation and should be unambiguous. Calling str() and repr() is preferable to using __str__() and __repr__() directly.

By default, f-strings will use __str__(), but you can make sure they use __repr__() if you include the conversion flag !r.

reference: https://realpython.com/python-f-strings/

+)

__str____repr__객체를 사용자가 이해할 수 있는 문자열로 반환하는 함수.
str()은 입력받은 객체의 문자열 버전을 반환하는 함수.

(내가 몰랐던 사실: str은 사실 내장 함수가 아니라 파이썬의 기본 내장 클래스. str(3)이라는 것은, 내장 함수 str을 실행하는 것이 아니라, 내장 str 클래스의 생성자 메소드를 실행하고 그 인자로 3을 주는 것과 같다. str이 클래스라는 것은help(str)로 확인 가능.)

파이썬에는 내장된 많은 자료형들에, 해당하는 자료형에 대한 연산을 정의하는 메소드들이 있다. 그 메소드들은 메소드의 이름 앞뒤에 ‘__‘(double underscore)를 지니고 있다.

repr은 representation의 약자로, 어떤 객체의 본질보다는 외부에 노출되는 즉 사용자가 이해할 수 있는 객체의 모습을 표현한다. repr함수는 어떤 객체의 출력될 수 있는 표현을 문자열의 형태로 반환한다.

__str__이나 __repr__이나 객체의 문자열 표현을 반환한다는 점은 공통이다.
__str__의 본질적인 목적은 객체를 '표현'하는 것보다는 추가적인 객체의 가공이나 다른 데이터와 호환될 수 있도록 문자열화(평문화)하는 것에 있다. 다른 자료형 간에 인터페이스를 제공하기 위해 존재하는 것.
__repr__의 본질적인 목적은 해당 객체를 인간이 이해할 수 있는 표현으로 나타내기 위함이다.

__str__을 정의하지 않을 경우, __repr__이 대신 쓰일 수 있다.

reference:
https://shoark7.github.io/programming/python/difference-between-__repr__-vs-__str__

파이썬 수학 연산 표현들의 실행 순서

() --> ** --> *, /, % --> +. -

profile
Backend 개발 학습 아카이빙 블로그입니다. (현재는 작성하지 않습니다.)

0개의 댓글