20180116_python - denlyou/AIL GitHub Wiki

python ์Šคํ„ฐ๋””

abcd => https://github.com/misolab/abcd-python-basic

์ฃผ์„

  • ํ•œ์ค„ : #
  • ๋ฒ”์œ„ : ''' ~ '''

๋ณ€์ˆ˜์˜ ํƒ€์ž…

  • ์ •์ˆ˜(int) : 0xff, 0o81, 0b1010
  • ๋ถ€๋™์†Œ์ˆ˜์ (float) :
  • ๋ฌธ์ž์—ด(string) :
  • ๋ฆฌ์ŠคํŠธ : (๋ฐฐ์—ด๋Œ€์ฒด) ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ๋‚˜์—ด [1,2,4]
  • ๋ฆฌ์ŠคํŠธ ์ธ๋ฑ์‹ฑ
    • ๋’ค์—์„œ๋ถ€ํ„ฐ : -๋ฅผ ๋ถ™์ด๋ฉด ๋’ค์—์„œ ๋ถ€ํ„ฐ n๋ฒˆ์งธ
    • ๋ฒ”์œ„๊ฐ€๋Šฅ [start:stop:step]
    • +์—ฐ์‚ฐ์ž : ์—ฐ๊ฒฐ (concat)
    • *์—ฐ์‚ฐ์ž : ์š”์†Œn๋ฐฐ๋กœ ๋ฐ˜๋ณต
  • ๋”•์…”๋„ˆ๋ฆฌ : key-value ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š”
    • ์ค‘๊ด„ํ˜ธ๋กœ ํ‘œ์‹œ {1: "a", 2: "b", 3: "c"}
  • ์ง‘ํ•ฉ(Set) : ์ค‘๋ณต์š”์†Œ๊ฐ€ ์—†๋Š”..
    • set()ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ •์˜
    • ex> s1 = set([1,2,3])
  • ํŠœํ”Œ : ๋ถˆ๋ณ€ ๋ฆฌ์ŠคํŠธ
    • ๊ด„ํ˜ธ๋กœ ํ‘œ์‹œ (1,2,4)
    • ๋ฆฌ์ŠคํŠธ์™€ ์œ ์‚ฌํ•˜์—ฌ ์—ฐ์‚ฐ๋„ ๋™์ผํ•˜๋‚˜ ๊ฐ’์ด ๋ถˆ๋ณ€ (์ƒ์ˆ˜ ๋ฆฌ์ŠคํŠธ?)
    • ๋ฆฌ์ŠคํŠธ์˜ ๋ฒ”์œ„์™€ ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์ฐธ๊ณ  : https://wikidocs.net/11

ํ๋ฆ„์ œ์–ด

์กฐ๊ฑด๋ฌธ if

if `์กฐ๊ฑด์‹` :
  # ๋‚ด์šฉ
elif `์กฐ๊ฑด์‹` :
  # ๋‚ด์šฉ
else:
  # ๋‚ด์šฉ
  • switch๋ฌธ์ด ์—†์Œ
  • in ์—ฐ์‚ฐ์ž : ํฌํ•จ ์—ฌ๋ถ€์— ๋”ฐ๋ผ T/F (contains ๋А๋‚Œ)

๋ฐ˜๋ณต๋ฌธ for

for [์ˆœํ™˜๋ณ€์ˆ˜] in ์ปจํ…Œ์ด๋„ˆ(๋ฆฌ์ŠคํŠธ,ํŠœํ”Œ,๋ฌธ์ž์—ด)
  # ๋‚ด์šฉ

for idx in range(10):
  # ๋‚ด์šฉ

for idx, value in enumerate([1,2,3,4)) :
  # ๋‚ด์šฉ
  • break, continue๋Š” ๋™์ผ
  • else: ์กฐ๊ฑด์— ๋”ฐ๋ฅธ break์ฒ˜๋ฆฌ

ํ•จ์ˆ˜

def [ํ•จ์ˆ˜์ด๋ฆ„](ํŒŒ๋ผ๋ฏธํ„ฐ1, ํŒŒ๋ผ๋ฏธํ„ฐ2, ...) :
  # ์ˆ˜ํ–‰๋‚ด์šฉ
  • ํ•จ์ˆ˜ ์•ˆ์—์„œ ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค ์„ ์–ธ ๊ฐ€๋Šฅ

    • ํด๋กœ์ €, ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„ ์ฃผ์˜ (global ํ‚ค์›Œ๋“œ)
  • ํƒ€์ž… ํžŒํŒ…

    • ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…, ๋ฆฌํ„ด ํƒ€์ž…
  • ํ•จ์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ (java์˜ ๋žŒ๋‹ค)

  • ํŠœํ”Œ์„ ์‚ฌ์šฉํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐ’์„ ๋ฆฌํ„ด

def multi_return():
    return 'a', 'b', 'c'
A, B, C = multi_return()
print("%c %c %c" % (A, B, C))
  • ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ธฐ๋ณธ๊ฐ’ + ํ•จ์ˆ˜ ์•ˆ์— ํ•จ์ˆ˜
def abcd(a='๊ฐ€', b='๋‚˜', c='๋‹ค', d='๋ผ'):
    def merge():
        return a + b + c + d
    print("merge - " + str(merge()))

์ž๋ฐ”์˜ ๋žŒ๋‹ค ์ฐธ๊ณ  ์ž๋ฃŒ : https://www.slideshare.net/gyumee/java-8-lambda-35352385

ํด๋ž˜์Šค (OOP)

  • ์„ ์–ธ : calss ํด๋ž˜์Šค๋ช… :
  • ์ƒ์„ฑ์ž : def init
  • ์†Œ๋ฉธ์ž : def del
  • ์ธ์Šคํ„ด์Šค ์ž๊ธฐ ์ž์‹  ํ‚ค์›Œ๋“œ : self
  • ์ƒ์†ก : ๋‹ค์ค‘ ์ƒ์† ์ง€์›ํ•ด์คŒ
    • `class ์ž์‹ํด๋ž˜์Šค๋ช… (๋ถ€๋ชจํด๋ž˜์Šค1, ๋ถ€๋ชจํด๋ž˜์Šค2):
    • ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” super()
      • ๋‹ค์ค‘์ƒ์‹๋•Œ๋Š”??
  • ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„/ ํด๋ž˜์Šค ๋ฉค๋ฒ„
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ž˜์Šค ๋ฉค๋ฒ„(java์˜ static)
    • ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋Š” init ํ•จ์ˆ˜ ์•ˆ์—์„œ self.๋ฉค๋ฒ„๋ช… ์œผ๋กœ ์„ ์–ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ / ์ธ์Šคํ„ด์Šค ๋ฉ”์†Œ๋“œ
    • @classmethod : annotaiton ์‚ฌ์šฉ

๋‹ค์Œ ๋‚ด์šฉ ๋ฉ”๋ชจ

๋ชจ๋“ˆ

  • import ํ‚ค์›Œ๋“œ
    • from ๋ถˆ๋Ÿฌ์˜ฌ๋ชจ๋“ˆํŒŒ์ผ๋ช… import
  • ํŒจํ‚ค์ง€ ๊ตฌ์„ฑ

ํŒŒ์ผ ์ž…์ถœ๋ ฅ

  • open() ํ•จ์ˆ˜

  • ์ฝ๊ธฐ : read(), readline(), readlines()

    • for ๋ฌธ์œผ๋กœ ํ•œ์ค„์”ฉ ์ˆœํšŒ ๊ฐ€๋Šฅ
  • ์“ฐ๊ธฐ : write()

  • ๋‹ซ๊ธฐ : close()

  • `with open(...) as ff:

with open('README.md', 'r') as ff:
    for l in ff:
        print(l)