일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- javascript
- subquery
- python데이터베이스연동
- 데이터베이스
- 몽고디비
- Join
- cursor()
- python
- PostgreSQL
- sql
- MongoDB
- PreparedStatement
- DB
- sqlite3
- statement
- insert_into
- SubqueryFilter
- DBFilter
- 파이썬
- Collections
- 자바스크립트
- MySQL
- insertOne
- postgres
- DATABASE
- onetoone
- 서브쿼리
- query
- 밴쿠버응급실
- PostgresDB
- Today
- Total
새벽코딩
파이썬 키워드 인자 & 가변 인자 (feat 매개변수와 인자 차이) 본문
프로그래밍에서 매개변수(Parameter)와 인자(Argument)는 자주 사용되는 용어인데, 차이점에 대해서 알아보자
- 매개변수(Parameter)
: 함수의 정의에서 전달받은 인수를 함수 내부로 전달하기 위해 사용하는 변수
- 인수, 인자(Argument)
: 실제로 함수가 호출될 때 함수로 값을 전달해주는 값
- 매개변수와 인수의 차이
- 키워드 인자(keyword parameter)
: 함수를 호출할 때 인자의 값 뿐만 아니라, 그 이름까지 명시적으로 지정해서 전달하는방법
def print_profile(name, age, company):
print(name, age, company)
print_profile(name="호날도", age=40, company="알아인(사우디)")
print("===================================================")
print_profile(age=31, company="전북현대", name="김진수")
print("===================================================")
print_profile("손흥민", 31, "토트넘")
호날도, 김진수 예시의 경우 name=, age=, company= 와 같이 키워드를 이용해서 인자의 값과 이름을 같이 전달하고있다.
키워드가 사용되었을 경우, 인자의 순서는 상관없다.
마지막 손흥민 예시처럼 키워드가 없이 사용도 가능하다.
단, 아래와 같이 한개만 키워드를 붙여서 사용할 수는 없다.
print_profile(name="손흥민", 31, "토트넘")
- 가변 길이 매개변수 ( *args, **kargs)
: *, ** 접두사는 가변길이 매개변수이다.
*args : *arguments 의 줄임말
**kargs : **keyword arguments 의 줄임말 (매개변수 이름 args, kargs는 중요하지 않다)
*arg 예시 코드
: 인자들을 가변 길이 (즉, 개수가 정해져있지 않다)로 입력받은 후 하나의 튜플로 만들어 함수 내에서 사용 가능
국어, 수학, 영어를 입력 받든, 국어~음악까지 6과목을 입력 받든 가변 길이로 잘 동작
지시어 `*`(별문자, asterisk)만 있다면 뒤에 매개변수 명칭은 상관없음 ex) *args, *abcde
def print_input(*args):
type_value_check = "{0} : {1}".format(type(args), args)
print(type_value_check)
for value in args:
print(value, end=" ")
print("")
print_input('국어', '수학', '영어')
print_input('국어', '수학', '영어', '과학', '사회', '음악')
**kagrs 예시코드
: (key = value) 형태의 인자들을 가변 길이로 입력받은 후 Dictionary로 만들어 함수 내에서 사용
`*`args와 마찬가지로 지시어 `**`만 있다면 뒤에 매개변수 이름은 무엇이든 상관없음
def print_subject_score(**kargs):
type_value_check = "{0} : {1}".format(type(kargs), kargs)
print(type_value_check)
for key, value in kargs.items():
subject_score = "{0} is {1}".format(key, value)
print(subject_score)
print_subject_score(korean=97, math=96, english=94)
print("============================================")
print_subject_score(korean=97, math=96, english=94, science=100)
단, 매개변수의 형태를 여러가지를 동시에 사용시 순서를 지켜야한다.
>> 일반매개변수, *arg, **kargs 순서로 사용해야됨
def parameter_order(normal, *args, **kargs):
...
parameter_order('normal_arg', 'arg1', 'arg2', a=10, b=20, c=30)
출처 : https://mentha2.tistory.com/197 '행궁동 데이터 엔지니어'
출처 : https://nadocoding.tistory.com/50 '나도코딩'
'Programming > Python' 카테고리의 다른 글
[Python] OOP-2 . 생성자 (Constructor) (0) | 2023.01.20 |
---|---|
[Python] OOP-1 . 클래스 기본 (0) | 2023.01.20 |
파이썬 문자열 공백제거, 문자열 나누기(strip, lstrip, rstrip, split 함수) (0) | 2022.12.30 |
파이썬 reverse() reversed() 차이 with join() (0) | 2022.12.30 |
섭씨 화씨 변환 (How to convert Celsius to Fahrenheit) (0) | 2022.12.30 |