티스토리 뷰

Java 개발자를 위한 Python 간단 정리

Java 개발자가 손쉽게 Python 언어에 접근하기 위해 기본적으로 알아야 할 내용과 Python만의 특징들을 간략하게 설명하고자 합니다. 아래 내용만 숙지하여도 Python을 이용하여 필요한 script를 개발하는데 필요한 기본적인 지식은 습득할 수 있을 것이라고 생각합니다.

기본 사항

  • 설치
    Linux나 Mac의 경우 2.6 버전이 이미 설치되어 있습니다. 다른 버전 사용을 원할 경우 추가 설치 필요합니다.

  • IDE
    eclipse의 경우 PyDev 플러그인을 사용
    인텔리제이의 경우 Python 프러그인 사용
    Atom editor로 개발하기 : http://reachlab-kr.github.io/python/2016/01/10/Python-Atom-Packages.html

  • 라이브러리 사용
    pip를 이용하여 라이브러리 설치 후 코드상 import하여 사용할 수 있습니다.
    -> pip를 이용해서 설치되는 라이브러리가 어느 버전의 python에 설치되는지 잘 확인해야 함
    pip --version 명령어로 라이브러리가 설치되는 경로를 알 수 있습니다. IDE상에서 해당 경로를 참조하게끔 설정이 되어야 합니다.

  • Python 개발에 대한 기본 사항들
    • 중괄호 대신에 intent, : 사용. 나머지는 javascript와 비슷합니다.
      if x == 1:
        print("x = 1")
      ``''
      
    • == 는 Java의 equals와 같아 두 객체가 가지고 있는 값을 비교하고, is는 Java의 ==와 같아 두 객체가 실제 같은 메모리 주소에 존재하는지를 비교합니다.
    • 조건문에서 &&||! 대신에 andornot 사용합니다.
    • def 키워드로 함수 선언하며 다수의 리턴값을 가질 수 있습니다.
      def aaa():
          return "a",2,3.0
      
      a,b,c = aaa()
      print(a)    # a
      print(b)    # 2
      print(c)    # 3.0
      
    • system argument 가져오기
      sys.argv[0]
      
    • 인텐드 후 아무작업도 필요없다면 pass 사용해야 합니다.
      while True:
        pass  # Busy-wait for keyboard interrupt (Ctrl+C)
      
    • 상위 전역변수에 값을 입력하기 위해서는 global 키워드를 사용해야합니다. global 키워드를 사용하지 않는 지역 변수는 상위 스코프의 동일 변수명의 값을 복사해서 가지고 있기 때문에(동일 메모리를 참조하지 않음), 해당 지역 변수의 값을 변경하더라도 상위 스코프의 동일 변수명의 값은 변경되지 않습니다. (Python의 지역변수는 Javascript의 클로저와 동작 방식이 비슷한듯 합니다.)
      a = 1
      def func():
        global a
        a = 2
      func()
      print(a)    # 2
      # global 키워드 미사용 시 a = 1
      

개발 상세

기존에 사용하던 Java, Javascript와 유사한 부분은 제외하고 특징적인 부분만 언급하고자 합니다.

변수 선언

a, b = 3, 4 #a=3, b=4

연산

3 ** 2                  # 9
"a" * 5                 # aaaaa
[1] * 5                 # [1,1,1,1,1]
[1,2] * 2               # [1,2,1,2]
[1,3,5,7] + [2,4,6,8]   # [1,3,5,7,2,4,6,8]
len("abc")              # 3

String

"%s is %d years old" % ("hoon", 20)   # hoon is 20 years old
"Hello world!".count("l")             # 3
"Hello world!"[3:7]                   # lo w
"Hello world!"[3:7:2]                 # l
"Hello world!"[::-1]                  # !dlrow olleH
"Hello world!"[-1]                    # !
"aaa" "bbb"                           # aaabbb

str = """
여러줄 입력 가능
한줄
두줄
"""

if, else문

if A:
  # do something
elif B:
  # do something
else:
  # do something

List

파이선은 Array 대신에 List를 사용합니다. (Array.Array 요런게 있는데, 잘 안쓰는것 같음)
List로 Array, List, Stack, Queue 모두를 대체합니다.

[1].append(2)                     # [1,2]
"a" in ["a", "b"]                 # true
[1,2,3] == [1,2,3]                # true
[1,2,3] is [1,2,3]                # false
arr = [1,2,3]
arr[:] = []                       # array clear
[x*2 for x in range(5) if x > 0]  # [2,4,6,8]
[(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] # 강력하면서도 무서운 반복문..ㄷㄷㄷ
# [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

loop

# Prints out 3,4,5
for x in range(3, 6):
    print(x)
# 3,5,7
for x in range(3, 8, 2):
    print(x)

loop에서 else 사용이 가능합니다. break문이 실행 안되고, 모든 루프가 다 돌았을 경우 else문 실행됩니다.

count=0
while(count<5):
    print(count)
    count +=1
else:
    print("count는 5임")

Set

basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
fruit = set(basket)               # set(['orange', 'pear', 'apple', 'banana'])

Dictionary

phonebook = {}
phonebook["John"] = 938477566
phonebook["Jack"] = 938377264
phonebook["Jill"] = 947662781
print(phonebook)

phonebook = {
    "John" : 938477566,
    "Jack" : 938377264,
    "Jill" : 947662781
}
for name, number in phonebook.items():
    print("Phone number of %s is %d" % (name, number))
del phonebook["John"]

Command 실행

import subprocess
subprocess.call(["ls", "-al", "./"])

서버에 Python3.6 설치하기

# python 설치
wget http://python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xf Python-3.6.1.tar.xz
cd Python-3.6.1
./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make
sudo make altinstall

# python3로 실행 가능하게
sudo ln -s /usr/local/bin/python3.6 /usr/bin/python3

# pip 설치
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py

참조


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함