๐Ÿงญ SyntaxError: non-default argument follows default argument

minhoยท2020๋…„ 6์›” 25์ผ
4

Learn Python

๋ชฉ๋ก ๋ณด๊ธฐ
12/22

Thursday_June_25
.
.
.
์ด๋ฒˆ ๋ฌธ๋ฒ• ์—๋Ÿฌ๋„ ์—ญ์‹œ ๋จผ์ € ์•Œ์•„์•ผ ํ•  ๊ฐœ๋…์ด ์žˆ๋‹ค.

โ“ Parameter ์ข…๋ฅ˜

1๏ธโƒฃ Non-Default Value Parameter

๋ง ๊ทธ๋Œ€๋กœ ๊ธฐ๋ณธ๊ฐ’์ด ์—†๋Š” Parameter๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

def test(num1, num2):
    print(num1, num2)

์œ„์˜ ์˜ˆ์ œ์—์„œ๋Š” num1๊ณผ num2๊ฐ€ ๊ฐ’์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—,
ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ์— ๊ผญ Argument๋กœ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.
๋„ฃ์–ด์ฃผ์ง€ ์•Š์œผ๋ฉด ํ•จ์ˆ˜๊ฐ€ ์ž‘๋™์„ ์•ˆํ•œ๋‹ค.

์•ž์„œ Function ์ด๋ผ๋Š” ๊ธ€์„ ์ผ์—ˆ๋Š”๋ฐ, Input๊ณผ Output์€
์˜ต์…˜์ด๋ผ๊ณ  ๋ง์„ ํ–ˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„  Input์ด ํ•„์ˆ˜์ธ ๊ฒƒ์ด๋‹ค.

2๏ธโƒฃ Default Value Parameter

๊ธฐ๋ณธ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Parameter๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

def test2(num1 = 1, num2 = 2):
    print(num1, num2)

์ผ๋‹จ ์—ฌ๊ธฐ์„œ๋Š” Input์ด ํ•„์ˆ˜๋Š” ์•„๋‹Œ ๊ฒƒ์ด๋‹ค.
์™œ๋ƒํ•˜๋ฉด Default ๊ฐ’์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜๋กœ ์ฃผ์ง€ ์•Š์•„๋„
num1์€ 1๋กœ, num2๋Š” 2๋กœ ๊ฐ’์ด ์ ์šฉ๋ผ ์ถœ๋ ฅ๊ฐ’์œผ๋กœ

1 2

์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

3๏ธโƒฃ ํ•จ์ˆ˜๋ฅผ ์ •์˜ ํ• ๋•Œ default value parameter๋ฅผ non-default value parameter ์•ž์— ์ •์˜ ํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ 


๋จผ์ € ์ด ์‚ฌ์ง„์„ ๋ณด๋ฉด์„œ ๊ฐ Parameter์˜ ์œ„์น˜์™€ ๋ฌด์Šจ ๊ฐ’๋“ค์„ ์ค˜์•ผํ•˜๋Š”์ง€ ์™„๋ฒฝํžˆ ์ดํ•ดํ•˜๋Š”๋ฐ 10์‹œ๊ฐ„์„ ์‚ฝ์งˆํ–ˆ๋‹ค.

์–ด๋–ค ๋ฌธ์ œ๋ฅผ ์ค˜๋„ ๋ฌด์Šจ ๊ฐ’์ด ๋‚˜์˜ฌ์ง€, ์–ด๋–ค ์—๋Ÿฌ ๋•Œ๋ฌธ์— ์‹คํ–‰์ด ์•ˆ ๋ ์ง€ ๊ฐœ๋…์„ ๋น ์‹น ์ตํ˜”๋‹ค

์ผ๋‹จ ๋ถ€์ œ์—์„œ ๋ง ํ–ˆ๋“ฏ, default(value parameter๋Š” ์ƒ๋žต)๋Š” non-default ์•ž์— ์˜ค๋ฉด ์•ˆ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž.

def test(a = 1, b = 2, c, d):
  print(a)
  print(b)
  print(c)
  print(d)

test2(5, 9)

๋งŒ์•ฝ ์ด๋ ‡๊ฒŒ test๋ž€ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ ,
a์™€ b๋ผ๋Š” Parameter๋Š” default,
c์™€ d๋ผ๋Š” Parameter๋Š” non-default ์ƒํƒœ์ด๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ์—ฌ๊ธฐ์„œ ์•ž์„œ ๋ฐฐ์šด Positional Arguments ๋ฐฉ์‹์œผ๋กœ
5์™€ 9๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

โ—๏ธ SyntaxError: non-default argument follows default argument

์‚ฌ์‹ค testํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ๋ถ€๋ถ„์—๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ,
์ฒซ ๋ฒˆ์งธ ์ค„์ธ ์ •์˜ ๋ถ€๋ถ„์—์„œ ๋ถ€ํ„ฐ ๋ฌธ๋ฒ• ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์ด๋‹ค.

default๊ฐ€ non-default ์•ž์— ์™€์„œ ๋œจ๋Š” ์—๋Ÿฌ์ธ๋ฐ,
์œ„ ์‚ฌ์ง„์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•จ์ˆ˜์˜ Parameter ๋ฌธ๋ฒ•์ƒ non-default๊ฐ€
์•ž์— ์™€์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌด์กฐ๊ฑด ์•ˆ๋˜๋Š”๊ฑด ์•„๋‹ˆ๋‹ค. ์œ„์˜ ์‚ฌ์ง„์— ๋‚˜์™€์žˆ๋Š” ๊ฐ Parameter์˜ ์ข…๋ฅ˜์™€ ์œ„์น˜๋ฅผ ์ž˜ ์ตํžˆ๋ฉด ๋ฌด์กฐ๊ฑด default๊ฐ€ non-default ์•ž์— ์˜ค๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

10์‹œ๊ฐ„์˜ ์‚ฝ์งˆ ๋์— ์–ป์–ด๋‚ธ ๊ฟ€ ๐Ÿฏ ํŒ์„ ์•Œ๋ ค์ฃผ๊ฒ ๋‹ค.

def test2(a = 1, b = 2, *args, c, d):
    print(a)
    print(b)
    print(tuple)
    print(c)
    print(d)

์ด๋ ‡๊ฒŒ ์‚ฌ์ด์— Variable Length Positional Arguments๋ฅผ ์ฃผ๋ฉด ๋œ๋‹ค.

๋ง๋กœ ์„ค๋ช…ํ•˜๊ธฐ ํž˜๋“ค์ง€๋งŒ, ์‚ฌ์ง„์„ ํ† ๋Œ€๋กœ ์„ค๋ช…์„ ํ•˜์ž๋ฉด,
์ด ์†Œ์Šค ์ฝ”๋“œ์—์„œ์˜ a์™€ b๋Š” default์ง€๋งŒ, Positionalํ•œ
Parameter์˜ ๋ถ€๋ถ„์— ์žˆ๋Š” ๊ฒƒ์ด๊ณ , c์™€ d๋Š” Keyword Argument ๋ฐฉ์‹์œผ๋กœ
์ค˜์•ผํ•˜๋Š” Parameter ๋ถ€๋ถ„์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์•„์ง ์„ค๋ช…์€ ์•ˆํ–ˆ์ง€๋งŒ, args๋ผ๋Š” Parameter๋Š” ๊ฐ’์„ ์ค˜๋„, ์•ˆ ์ค˜๋„
๋œ๋‹ค.

์•„๋ฌดํŠผ ์œ„์˜ ํ•จ์ˆ˜๋Š” ์ •์˜ํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ๋Š” ์—๋Ÿฌ๊ฐ€ ์—†๊ณ ,
ํ˜ธ์ถœ ์‹œ์— ์—๋Ÿฌ๊ฐ€ ์—†๊ฒŒ ํ•˜๋ ค๋ฉด, c์™€ d์—๋งŒ Keyword Argument ๋ฐฉ์‹์œผ๋กœ
์ฃผ๋ฉด ์—๋Ÿฌ๊ฐ€ ์—†๋‹ค.

์•ž์— a์™€ b๋Š” Positionalํ•˜๊ฒŒ ๊ฐ’์„ ์ฃผ์–ด๋„ ๋˜๊ณ , Keyword ๋ฐฉ์‹์œผ๋กœ ์ฃผ์–ด๋„ ๋œ๋‹ค.

โญ๏ธ ๊ฒฐ๋ก 

๐Ÿคฌ 10์‹œ๊ฐ„ ์‚ฝ์งˆ ์ „์˜ ๋‚ด ๋งˆ์Œ

๐Ÿ˜‡ 10์‹œ๊ฐ„ ์‚ฝ์งˆ ํ›„์˜ ๋‚ด ๋งˆ์Œ


.
.
.
๊ณต๋ถ€ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ ์‚ฌ์ดํŠธ

profile
๐Ÿ‡ Rabbit can take a rest, but ๐Ÿข turtle can't

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2021๋…„ 12์›” 26์ผ

ใ…‹ใ…‹ ๊ฟ€ํŒ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

1๊ฐœ์˜ ๋‹ต๊ธ€