ํŒŒ์ด์ฌ์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ-4

2020. 8. 22. 15:54ใ†ํŒŒ์ด์ฌ ๊ธฐ์ดˆ

ํŒŒ์ด์ฌ ํ•จ์ˆ˜

 

ํŒŒ์ด์ฌ์˜ ํ•จ์ˆ˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.

 

ํ•จ์ˆ˜์˜ ๊ตฌ์กฐ๋Š” ์ด๋ ‡๋‹ค.

def ํ•จ์ˆ˜๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜):
    <์ˆ˜ํ–‰ํ•  ๋ฌธ์ž1>

    <์ˆ˜ํ–‰ํ•  ๋ฌธ์ž2>

     return ๋ฆฌํ„ด ๊ฐ’

 

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฌด์–ธ๊ฐ€ ๊ฐ’์„ ์ฃผ๋ฉด ๊ฐ€๊ณต์‹œ์ผœ return๊ฐ’์„ ์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ผญ ํ•จ์ˆ˜๋ผ๊ณ  return๊ฐ’์ด ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜๋„ ์žˆ๋‹ค.

def sum(a,b):
    print("%d, %d์˜ ํ•ฉ์€ %d์ž…๋‹ˆ๋‹ค." (a,b,(a+b))

sum(1,2)

 

์œ„์™€ ๊ฐ™์€ ํ•จ์ˆ˜๋Š” ์ถœ๋ ฅ๊ฐ’๋งŒ ์ฃผ๊ณ  return ๊ฐ’์€ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

 

๊ทธ๋ฆฌ๊ณ , ์ž…๋ ฅ๊ฐ’๋„ ๊ฒฐ๊ณผ๊ฐ’๋„ ์—†๋Š”ํ•จ์ˆ˜๋„ ์žˆ๋‹ค.

def say():

    print('Hi')

say()

--> ์ถœ๋ ฅ๊ฐ’๋งŒ ์žˆ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ํ•จ์ˆ˜์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์„ ๋•Œ์—๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ *args๋ฅผ ์ฃผ๋ฉด๋œ๋‹ค.

 

def sum_many(*args):
    sum=0
    for i in args:
        sum = sum + i
    return sum

์ •๋ง ๊ฐ„๋‹จํ•˜๋‹ค.

 

์กฐ๊ธˆ ์‹ฌํ™”๋œ ๊ฐœ๋…์œผ๋กœ ํ‚ค์›Œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋‹ค๋Š” ๊ฒƒ์€ ๋”•์…”๋„ˆ๋ฆฌ์—์„œ์˜ key๋ฅผ ์ด์šฉํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

def print_kwargs(**kwargs):
    for k in kwargs.keys():
        if(k == "name"):
            print("๋‹น์‹ ์˜ ์ด๋ฆ„์€ :"+k)

ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์€ ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜๋งŒ ์ถœ๋ ฅ๋œ๋‹ค. (๋ฌผ๋ก  ํŠœํ”Œ๋กœ ์ˆซ์ž ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜๋Š” ์žˆ๋‹ค.)

 

๋‹ค์Œ์€ ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด๋ณด์ž.

 

def say_mysef(name, old, man=True):
    print("๋‚˜์˜ ์ด๋ฆ„์€ %s ์ž…๋‹ˆ๋‹ค." % name)
    print("๋‚˜์ด๋Š” %d์‚ด์ž…๋‹ˆ๋‹ค." % old)
    if man:
        print("๋‚จ์ž์ž…๋‹ˆ๋‹ค.")
    else:
        print("์—ฌ์ž์ž…๋‹ˆ๋‹ค.")
        
say_mysef("๊ณต์ธ์ค‘",23)
say_mysef("๊ณต์ธ์ค‘",27,True)

say_mysef("๊ณต์ธ์ค‘",23)์€ ์„ธ๋ฒˆ์งธ ์นธ์— True, False๊ฐ€ ์—†์–ด๋„ ๋Œ์•„๊ฐ„๋‹ค. ๊ธฐ๋ณธ์€ True๋กœ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  name๊ณผ old์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊ฟ”๋„ name = "๊ณต์ธ์ค‘" ์ด๋ ‡๊ฒŒ ๋ช…์‹œํ•ด์ค€๋‹ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

 

ํ•จ์ˆ˜์˜ ๋ฒ”์œ„

 

ํ•จ์ˆ˜์˜ ๋ฒ”์œ„๋ผ๋Š” ๊ฒƒ์€ ์ •ํ™•ํžˆ๋Š” 'ํ•จ์ˆ˜ ์•ˆ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜'์˜ ๋ฒ”์œ„์ด๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

a = 1
def vartest(a)
    a = a+1
    
vartest(a)
print(a)

a=2๊ฐ€ ์ถœ๋ ฅ์ด ๋ ๊นŒ?  ์•„๋‹ˆ๋‹ค.

a๊ฐ€ ํ•จ์ˆ˜์•ˆ์— ๋“ค์–ด๊ฐ€๋ฉด์„œ a=2๊ฐ€ ๋œ ๊ฒƒ์ด ๋งž์ง€๋งŒ ํ•จ์ˆ˜๊ฐ€๋๋‚˜๊ณ  ๋ฐ–์œผ๋กœ ๋‚˜์˜ฌ ๋•Œ ๋‹ค์‹œ a=1์ด ๋œ๋‹ค.

 

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” global a๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

a=1
def vartest():
    global a
    a = a+1
vartest()
print(a)

์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค๋ฉด a=2๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

๋‹ค์Œ์€ ํ•จ์ˆ˜๋ฅผ ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ณด๋Š” 'ํ•จ์ˆ˜'๋ฅผ ์•Œ์•„๋ณด์ž.

Lambda()

 

happy = [lambda a,b:a+b, lambda a,b :a*b]

print(happy[0](1,2))

 

์ด์™€ ๊ฐ™์ด lambda๋ฅผ ์ด์šฉํ•˜๋ฉด def์™€ ํ•จ์ˆ˜์˜ ์ด๋ฆ„๋„ ์ ์ง€์•Š๊ณ  ์œ ๋™์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

 

์ž…๋ ฅ์€ ๋ง ๊ทธ๋ž˜๋„ ์šฐ๋ฆฌ๊ฐ€ ํ‚ค๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์ถœ๋ ฅ์€ ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ•ด์˜จ print์™€ ๊ฐ™๋‹ค.

 

์ž…๋ ฅ์˜ ๊ธฐ๋ณธ์€ input์ด๋‹ค. 

์˜ˆ๋ฅผ๋“ค์–ด

number = input("์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ")

์ฝ˜์†”์ฐฝ : ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”:
์œ„์™€๊ฐ™์ด ๋‚˜์˜ค๊ณ  ๋งจ ๋’ค์—๋Š” ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฆฌ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋•Œ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•œ ํ›„
print(number)๋ฅผ ํ•ด๋ณธ๋‹ค๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด number๋ผ๋Š” ๋ณ€์ˆ˜์— ์ €์žฅ๋˜๊ณ  ๊ทธ๊ฒƒ์ด ์ถœ๋ ฅ๊ฐ’์œผ๋กœ ๋‚˜์˜จ๋‹ค.

 

ํŒŒ์ผ ์ฝ๊ณ  ์“ฐ๊ธฐ

ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ
์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ช…๋ น์–ด opne๋งŒ ๊ธฐ์–ตํ•˜๋ฉด ๋œ๋‹ค.
๋งŒ์•ฝ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š”

f = open("์ƒˆํŒŒ์ผ.txt", 'w')
f.close()

์—ฌ๊ธฐ์„œ open์€ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜์ด๊ณ , ์ƒˆํŒŒ์ผ์€ ์ƒ์„ฑํ•˜๋Š” ํŒŒ์ผ์˜ ์ด๋ฆ„, w๋Š” ํŒŒ์ผ์— ๋‚ด์šฉ์„ ์“ธ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํŒŒ์ผ์„ ์ฝ๋Š” ๊ฒƒ์€ realline() ๊ณผ read()๊ฐ€ ์žˆ๋‹ค.
๋จผ์ € readline()์€ "ํ•œ์ค„์”ฉ ์ฝ๋Š”๋‹ค."์ด๋‹ค.

f = opne("์ƒˆํŒŒ์ผ.txt",'r')
line = f.readline()
print(line)
f.close()

์œ„ ์ฝ”๋“œ๋Š” ํŒŒ์ผ์„ ์—ด์–ด ํ•œ์ค„์„ ์ฝ์–ด์„œ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์žฅ์ด๋‹ค. ์•„๊นŒ๋Š” open๋’ค์— 'w'๋ฅผ ์ ์—ˆ์ง€๋งŒ ์ด๋ฒˆ์—๋Š” ์ฝ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— 'r'์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

readline์€ ํ•œ์ค„๋งŒ ์ฝ๋Š” ๊ฒƒ์ด์ง€๋งŒ readlines๋ผ๊ณ  ๋ฆฌ์ŠคํŠธ๋กœ ์ฝ๋Š” ๊ฒƒ์ด ์žˆ๋‹ค.
๋ฆฌ์ŠคํŠธ๋กœ ์ฝ๊ฒŒ ๋œ๋‹ค๋ฉด for๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž„์˜๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. 

f = open("์ƒˆํŒŒ์ผ.txt", 'r')
lines = f.readlines()
for line in lines:
    print(line)
f.close

์ด์ฒ˜๋Ÿผ ๋ง์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ณ„์† ๋’ค์— f.close๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ, ์ด๋ฅผ ์•ˆํ•˜๊ฒŒ๋˜๋ฉด ํŒŒ์ผ์ด ๋‹ซํžŒ ๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ฐ‘์— ์ž‘์„ฑํ•  ์ฝ”๋“œ์™€ ๊ฒน์น  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊นŒ๋จน์ง€๋ง๊ณ  ํ•ด์ฃผ๋„๋ก ํ•˜์ž.

 

๊ทธ๋ฆฌ๊ณ  read()๋Š” ๋ฉ”๋ชจ์žฅ์— ์žˆ๋Š” ๊ธ€ ์ „์ฒด๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด๋‹ค.

 

w๋Š” ์ƒˆ๋กœ์šด ํŒŒ์ผ์— ๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๊ณ , r์€ ์ฝ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ธฐ์กด์˜ ๋‚ด์šฉ์— ๋” ๊ธ€์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๋ฌด์—‡์„ ์ž…๋ ฅํ•˜๋ฉด ๋ ๊นŒ? ์ด๋Š” ๋ช…๋ น์–ด a๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  with๋ฌธ์„ ์“ฐ๊ฒŒ๋œ๋‹ค๋ฉด f.close๋ฅผ ์•ˆํ•ด๋„ ๋œ๋‹ค. ๊ทธ ๋•Œ๋งŒ ์“ฐ๊ณ  ๊ทธ ๋•Œ ๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
ํ˜•ํƒœ๋Š” with open(ํŒŒ์ผ์œ„์น˜, '๋ช…๋ น์–ด') as ๋ณ€์ˆ˜: ์ด๋‹ค.

 

๋.