Thursday_June_25
.
.
.
Positional Arguments ํน์! Keyword Arguments๋ฐฉ์์ผ๋ก
Parameter์๊ฒ ๋๊ฒจ์ค ๊ฐ์ด ๋๋ฌด ๋ง๊ฑฐ๋, ๊ฐ์๊ฐ ์ ํด์ง์ง ์์์ ๋
์ฌ์ฉ์ ํ๋ค.๊ทธ๋์ ๊ฐ๋ณ์ธ์์ ์ข ๋ฅ๋ ์ ํํ 2๊ฐ๋ก ๋๋๋ค.
๋ค์ ๋ ๊ฟ๋ง๊ฐ์ ์ค๋ช ์ ์ํด ์ฌ์ง์ ๋์ฐ๊ฒ ๋ค.
์์์ ๊ฐ์์ Positional Arguments ๋ฐฉ์์ผ๋ก, Tuple ํํ์ ๋ณ์๋ก ์ ์ฅํ๋ค.
EX)
def test(a, b, c, *args): print(a) print(b) print(c) print(args) test(1, 2, 3, 4, 5, 6)
ํจ์๋ฅผ ์ ์ํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ํธ์ถ์ ํ๋ฉด
Positional Arguments ๋ฐฉ์์ผ๋ก ๊ฐ์ด ์ ๋ฌ์ด ๋๋ฉด์
๋น์ฐํ a์ b์ c์๋ ๊ฐ๊ฐ 1๊ณผ 2์ 3์ด ์ ๋ฌ์ด ๋ ๊ฒ์ด๊ณ ,
๊ฐ๋ณ์ ๊ธธ์ด์ ๊ฐ์ ๋ฐ๋ args๋ผ๋ Parameter๋ 4์ 5์ 6์
Tuple์ ํํ๋ก ๋ฐ๊ฒ ๋๋ค.
(ํจ์๋ฅผ ์ ์ ํ ๋๋ง *๋ฅผ ๋ถ์ฌ์ค๋ค.)์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1 2 3 (4, 5, 6)
์์์ ๊ฐ์์ Keyword Arguments ๋ฐฉ์์ผ๋ก, Dictionary ํํ์ ๋ณ์๋ก ์ ์ฅํ๋ค.
EX)
def test(a, b, **kwargs): print(a) print(b) print(kwargs) test(1, 2, name = "Lee", age = 23, company = "Wecode")
๋จผ์ ํธ์ถ ๋ถ๋ถ์ 1๊ณผ 2๋ ๋น์ฐํ Positional Argument ๋ฐฉ์์ผ๋ก a์ b์๊ฒ ๊ฐ์ ๋๊ฒจ์คฌ๋ค.
์ฌ๊ธฐ์๋ 1๊ณผ 2๊ฐ a์ b์๊ฒ Positional Argument ๋ฐฉ์์ผ๋ก ๊ฐ์ ์ ๋ฌํด ์ฃผ์๊ณ , ket="value" ์ ํํ๋ก kwargs๋ผ๋ Parameter์๋
name = "Lee", age = 23, company = "Wecode" ๋ผ๋ ๊ฐ์ด Dictionary ํํ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค.(์๊น์ ๊ฐ์ด ์ด ๋ฐฉ์๋ ์ ์ ํ ๋๋ง ๋ฅผ ๋ถ์ฌ์ค๋ค.)**
์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1 2 {'name': 'Lee', 'age': 23, 'company': 'Wecode'}
๋ฌธ์ ๋ค์ ํ๋ฉด์ ๐ Positional Argument, Keyword Argument, Variable Length Positional Argument, Variable Length Keyword Argument์ ๋ํด ์ข ๋ ์ตํ๋ณด๊ฒ ๋ค.
def exam1(name, *args, age): print("name=",end=""), print(name) print("args=",end=""), print(args) print("age=",end=""), print(age) exam1("์ ์ฐ์ฑ", "01012341234", "seoul", 20)
์ด ๋ฌธ์ ์์๋ Positional Argument ๋ฐฉ์์ผ๋ก
name์๋ ์ ์ฐ์ฑ, args์๋ ๋ฒํธ์ ์ฃผ์๋ฅผ, age์๋ 20์ ์ฃผ๋ ค๊ณ ํ ๊ฒ ๊ฐ์๋ฐ, ์ผ๋จ ํจ์๋ฅผ ์ ์ํ๋ ๋ถ๋ถ์์๋ ์๋ฌ๊ฐ ์์ ๊ฒ์ด๋ค.์ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด
name์ non-default positional parameter์ด๊ณ ,
*args๋ Variable Length Positional Parameter์ด๊ณ ,
age๋ non-default keyword parameter ์ฌ์
์ ์๋ฅผ ํ๋ ๋ฐ์๋ ์๋ฌ๊ฐ ์๋ค.ํ์ง๋ง ํธ์ถ ๋ถ๋ถ์์ ์๋ชป ๋์๋ค.
args๋ ๊ฐ๋ณ์ ๊ธธ์ด๋ฅผ ์ ๋ ฅ๋ฐ๋ ๋์ธ๋ฐ,
๋ฒํธ์ ์์ธ, ๊ทธ๋ฆฌ๊ณ 20๊น์ง๋ฅผ ๊ฐ๋ณ์ ๊ฐ์ผ๋ก ์ธ์์ ํด์ 3๊ฐ์ ๊ฐ ๋ชจ๋ ๋ค์ด๊ฒ๊ฐ ๋ ๊ฒ์ธ๋ฐ, ๊ทธ๋ฌ๋ฉด age๋ผ๋ parameter์๊ฒ๋ ๊ฐ์ด ์๋ค.๊ทธ๋ฆฌ๊ณ ๋งํ๋ฏ์ด age๋ Keyword๋ก ๊ฐ์ ์ค์ผํ๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋๋ค.
1. ํธ์ถ ๋ถ๋ถ์์ 20์ age=20 ์ผ๋ก ๋ฐ๊ฟ์ค๋ค.
def exam1(name, *args, age): print("name=",end=""), print(name) print("args=",end=""), print(args) print("age=",end=""), print(age) exam1("์ ์ฐ์ฑ", "01012341234", "seoul", age = 20)
์ถ๋ ฅ ๊ฒฐ๊ณผ
name=์ ์ฐ์ฑ args=('01012341234', 'seoul') age=20
2. age์ 20์ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ์ค๋ค.
def exam1(name, age, *args): print("name=",end=""), print(name) print("args=",end=""), print(args) print("age=",end=""), print(age) exam1("์ ์ฐ์ฑ", 20, "01012341234", "seoul")
์ถ๋ ฅ ๊ฒฐ๊ณผ
name=์ ์ฐ์ฑ args=('01012341234', 'seoul') age=20
Argument์์ ์์๋ฅผ ๋ค๋ฅด๊ฒ ๋๊ฒจ์ฃผ์ด๋ ํจ์์์์ print๋ฌธ ๋ก์ง์ ๋์ผํ๊ธฐ ๋๋ฌธ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
def exam2(name, age, **kwargs, address=0): print("name=",end=""), print(name) print("age=",end=""), print(age) print("kwargs=",end=""), print(kwargs) print("address=",end=""), print(address) exam2("์ ์ฐ์ฑ", "20", mobile="01012341234", address="seoul")
์ผ๋จ ์ด ๊ตฌ์กฐ๋ parameter ์์๋๋ก
non-dafault positional
non-dafault positional
variable Length Keyword
default keyword ์ธ๋ฐ,์ด๊ฑด ํจ์ ์ ์ ์กฐ์ฐจ ์ ๋ ๊ฒ์ด๋ค.
parameter ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ์๋๋ ์ด์ ๋ฅผ ์ ์ ์๋ค.
1 - 1. address parameter๋ฅผ kwargs parameter ์์ผ๋ก ์ฎ๊ฒจ์ค๋ค.
def exam2(name, age, address=0, **kwargs): print("name=",end=""), print(name) print("age=",end=""), print(age) print("kwargs=",end=""), print(kwargs) print("address=",end=""), print(address) exam2("์ ์ฐ์ฑ", "20", mobile="01012341234", address="seoul")
ํจ์ ์ ์ ๋ถ๋ถ์์๋ ๋ฌธ๋ฒ์ ์ผ๋ก ํ๋ฆฐ ๋ถ๋ถ์ด ์์ผ๋ ํจ์ค.
ํธ์ถ ๋ถ๋ถ์์ argument ๋ถ๋ถ์ ๋ณด๋ฉด,
์ ์ฐ์ฑ๊ณผ 20์ positional ๋ฐฉ๋ฒ์ผ๋ก, mobile๊ณผ address๋ keyword๋ก ์ฃผ์๋ค.
keyword ๋ฐฉ์์ ์์๊ฐ ์๊ด ์๊ธฐ๋๋ฌธ์, ์ ์์ ์ผ๋ก ์๋์ด ๋๋ค.์ถ๋ ฅ ๊ฒฐ๊ณผ
name=์ ์ฐ์ฑ age=20 kwargs={'mobile': '01012341234'} address=seoul
1 - 2.
1๋ฒ๊ณผ ๊ฐ์ ์ ์๋ ํจ์์์, ์ถ๋ ฅ ๋ถ๋ถ๋ง ๋ฐ๊ฟ์ ๋ค๋ฅด๊ฒ ์๋ํ ์๋ ์๋ค.parameter๋ address ๊น์ง positional ๋ถ๋ถ ์ด์ด์,
๋ค์๊ณผ ๊ฐ์ด ํธ์ถํ ์๋ ์๋ค.def exam2(name, age, address=0, **kwargs): print("name=",end=""), print(name) print("age=",end=""), print(age) print("kwargs=",end=""), print(kwargs) print("address=",end=""), print(address) exam2("์ ์ฐ์ฑ", "20", "seoul", mobile="01012341234")
์ด๋ ๊ฒ "seoul" argument๋ฅผ positional argument ๋ฐฉ์์ผ๋ก ์ค๋ ๊ฐ๋ฅํ๋ค.
๋ฌผ๋ก ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ๊ฐ๋ค.
์ถ๋ ฅ ๊ฒฐ๊ณผ
name=์ ์ฐ์ฑ age=20 kwargs={'mobile': '01012341234'} address=seoul
def exam3(name="์์ด์ ", *args, age, **kwargs, address): print("name=",end=""), print(name) print("args=",end=""), print(args) print("age=",end=""), print(age) print("kwargs=",end=""), print(kwargs) print("address=",end=""), print(address) exam3(20, "์ ์ฐ์ฑ", "01012341234", "male" ,mobile="01012341234", address="seoul")
ํจ์๋ฅผ ์ ์ํ ๋ ๋ถํฐ ์๋ฌ๊ฐ ๋๋ค.
parameter ์์๋๋ก ๋ณด๋ฉดdefault positional
variable length positional
non-dafault keyword
variable length keyword
non-dafault keyword ์ธ๋ฐ,๋ง์ง๋ง parameter์ธ address๋ง age์ kwargs ์ฌ์ด์ ๋ฃ์ด์ฃผ๋ฉด
์ ์ ๋ถ๋ถ์์๋ ์ค๋ฅ๊ฐ ์๋๋ค.์ถ๋ ฅ ๋ถ๋ถ๋ง positional์ธ์ง keyword ์ธ์ง ์ ์๊ฐํด์ ์ ๋ฌํด์ฃผ๋ฉด ๋๋ค.
def exam3(name="์์ด์ ", *args, age, address, **kwargs): print("name=",end=""), print(name) print("args=",end=""), print(args) print("age=",end=""), print(age) print("kwargs=",end=""), print(kwargs) print("address=",end=""), print(address) exam3(20, "์ ์ฐ์ฑ", "01012341234", "male" ,mobile="01012341234", address="seoul")
์ผ๋จ ์ด๋ ๊ฒ ์ ์ ๋ถ๋ถ์์์ ์๋ฌ๋ง ์์ ํ๊ณ , ์ถ๋ ฅ ๋ถ๋ถ์ผ๋ก ํด๊ฒฐ์ ๋ณด๊ฒ ๋ค.
1. ๐ฉ
๊ณ ์น ๊ฒ ๋๋ฌด ๋ง๋ค.
์ผ๋จ ์์ ์ฒ๋ผ ์๋ชป๋ ์ถ๋ ฅ์ ํ๋ค๊ณ ๊ฐ์ ์ ํ๋ฉด,
20์ name์ผ๋ก, ์ ์ฐ์ฑ์ ๊ฐ๋ณ parameter์ธ args์ ์ฌ๊ธฐ์ ์ปดํจํฐ๋
๋์ ์ง๊ฐ ์จ๋ค. ๋ฒํธ๋ args์ธ์ง ์ด๋ค argument ๊น์ง args์ ๋ฃ์์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.exam3("์ ์ฐ์ฑ", "male", "01012341234", age=20, address="seoul", mobile="01012341234")
๋ต์ด ์ด๊ฑฐ ๋ง๊ณ ๋ ์๋ค. ์ ์ผํ ๋ต์ด๋ค. (๋ฌผ๋ก ๋ด ๋จธ๋ฆฌ์ ๊ธฐ์ค์ด๋ค)
๋ฌผ๋ก ์ฌ๊ธฐ์ age, address, kwargs ์ด 3๊ฐ์ parameter ๋ผ๋ฆฌ๋
keyword argument ๋ฐฉ์์ผ๋ก ๋๊ฒจ์ฃผ๊ธฐ ๋๋ฌธ์ ์์ด๋ ์๊ด์๋ค.์ถ๋ ฅ ๊ฒฐ๊ณผ
name=์ ์ฐ์ฑ args=('male', '01012341234') age=20 kwargs={'mobile': '01012341234'} address=seoul