내 잡다한 노트

[Python] 알아두면 좋을 문법 정리 본문

Language/Python

[Python] 알아두면 좋을 문법 정리

peanutwalnut 2023. 3. 12. 12:29

# 가변 인수

용도 ) 매개변수가 여럿인 함수를 짤 때 사용, 매개변수가 몇개가 필요한지 모를때
def funtion(*args):
print(args)
*를 붙이면 args라는 이름의 튜플이 되고 iterable해서 반복문도 사용할 수 있다.

고정인수와 가변인수를 함께 사용할 땐, 고정 매개변수를 먼저 지정해야한다.

 

# 언패킹

인수를 순서대로 넣을 때 리스트나 튜플을 사용하는 방법

x = [10 ,20, 30]

def print_numbers(a, b, c) 로 만들어짐.

print_numbers(*x) 를 하면 x의 요소들이 순서대로 함수에 들어가게 된다.

이때, 함수의 매개변수 개수와 리스트의 요소 개수는 같아야 한다.

딕셔너리를 언패킹할때는 ** 으로 써야한다. 이때, 함수의 매개변수 이름과 딕셔너리의 키 이름과 개수가 같아야한다.

 

키워드 인수))

용도))) 인수의 순서가 헷갈릴 때

키워드 인수는 함수 호출에서 매개변수의 이름을 명시적으로 지정하여 함수 또는 메서드에 전달되는 인수입니다.

함수를 호출할 때 사용되며 그러면 인수의 순서와 상관없이 그 매개변수로 들어가게 된다.

personal_info(name='홍길동', age=30) # 함수호출

 

def greet(name, message):
    print(f"{message}, {name}!")

# calling the function with keyword arguments
greet(name="John", message="Hello")

 

키워드 인수를 사용하는 가변 인수 함수 ))

문법))

def 함수이름 (**매개변수):

예시))

def personal_info(**kwargs):
    for kw, arg in kwargs.items():
        print(kw, arg)

#personal_info(abc='a', key='dddd')
json_ff = [{'name': 'kyt', 'age': 30}, {'name': 'keet', 'age': 60}, {'name': 'kjjt', 'age': 55}]
for elem in json_ff:
    personal_info(**elem)
def custom_print(*args, **kwargs):
    print(args, kwargs)
    print(*args, **kwargs)

custom_print(1, 2, 3, sep=': ', end='')

매개변수에 초깃값 넣기 ))

문법) def 함수이름(매개변수=값):

def ini (name, age, address='비공개'):

용도)))) 보통 주로 사용하는 값이 있지만 가끔 다른 값을 사용해야 할 때 활용한다.

초기값을 넣은 매개변수는 뒤쪽에 몰아서 써줘야 한다. 

 

 

람다함수)) : 간단한 함수, 그래서 다른 함수의 인수로 넣을 때 주로 사용.
labmda 매개변수 : 리턴값

이대로 출력하면 함수 객체가 나오기 때문에 변수에 할당해주고 변수를 함수처럼 사용하면 된다.

pow_2 = lambda x : x ** 2
print(pow_2)
print(pow_2(5))


# map(function, iterable)
용도 ) iterable한 자료형의 값에 어떤 처리(함수, 형변환 등등)를 하고 싶을때
반환값은 map 객체
정의 : 두번째 인자로 들어온 자료형을 첫번째 인자로 들어온 함수에
하나씩 집어넣어서 함수를 수행한다.

 

# filter (function, iterable)

용도))) 반복 가능한 객체에서 특정 조건에 맞는 요소만 가져오고 싶을때

a = [44, 55, 66, 77, 23, 43, 1234, 57]
print(list(filter(lambda x : x % 11 == 0, a)))

lambda와 자주 같이 쓰인다.

 

# f-string
용도 )))) 문자열을 작성할 때 사용한다.

문자열 맨 앞에 f를 붙여주고, 중괄호 안에 직접 변수 이름이나 출력하고 싶은 것을 넣으면 된다.

month = [1, 2, 3, 4]
day = ['2일', '3일', '25일']

for i in month:
    for j in day:
        print(f"{i}월과 {j}은 내 친구들 생일이다.")


join()
용도 )))) 문자열을 연결할 때

my_list = ['apple', 'banana', 'orange']
separator = ', '
result = separator.join(my_list)
print(result)

>>> apple, banana, orange


with문
용도 )))) 자원을 획득하고 사용 후 반납해야 하는 경우에 사용한다.
문법 )))) with EXPRESSION as VARIABLE:
    BLOCK
객체의 라이프사이클을 설계할 수 있다.
def __enter__(self), def __exit__(self) ---> 핸들러 이름

try, except, finally, else문
용도 )))) 예외처리를 하기 위해서
try문에 코딩을 하다가 오류가 발생하면 except 블록이 수행된다.
오류가 발생하지 않았다면 except 블록은 수행되지 않는다.
except는 특정 오류를 콕 집어서 할수도 있고 모든 오류에대해 처리할 수도있다
# finally는 예외 발생 여부에 상관없이 항상 수행된다.
보통 사용한 리소스를 close해야 할 때에 많이 사용한다.
ex))) f.close() 이러면 중간에 오류가 발생해도 무조건 실행된다.
# else는 오류가 발생하지 않았을때에 분기로 실행될 수 있다.
# pass는 특정 오류가 발생할때 그냥 통과시켜야 할 경우 사용.
# raise는 오류를 일부러 발생시킬 때 사용.

 

isinstance (인스턴스, 클래스) 함수

용도 ))  현재 인스턴스가 특정 클래스의 인스턴스인지 확인할 때 사용한다. 맞으면 True 틀리면 False를 반환.

 

언더스코어 _ , __

1 )))) _ 는 첫번째로 변수 값을 굳이 사용할 필요가 없을 때 사용한다.

values = [1, 2, 3, 4]
a, b, _, _ = values

2 )))) __이름__ 

내장된 특수한 함수와 변수를 나타낸다.

예를 들어 생성자인 __init__이나 연산자 오버로드로 쓰이는 __add__

 

3 ))) _함수

def _privateFunc():

함수 이름 왼쪽에 _를 붙이면 다른 파일을 임포트 할 때 _를 붙인 함수는 가져오지 않는다.

private의미로 사용한다. 파이썬은 진정한 private를 지원하지 않아서 임포트문에서는 누락이 되지만

직접 가져다쓰거나 호출을 할 때는 사용이 가능하다.

 

'Language > Python' 카테고리의 다른 글

numpy 배열 연산, 접근법  (0) 2023.04.04
(numpy)배열 생성, Shape  (0) 2023.04.04
파이썬 자리수 조절(소수점, 올림, 반올림)  (0) 2022.05.15
파이썬 print로 디버깅을 쉽게 하는 법  (0) 2022.03.14
파이썬 Counter  (0) 2022.03.14