파이썬에서 타입, 값을 확인할 수 있는 예제이다. 



type()을 이용해 타입 확인할 수 있다. 


print("aaaaaaa : " + str(type(result)))


str()을 이용해 값을 확인할 수 있다.


print("aaaaaaa : " + str(result))



string 인스턴스라면..


if isinstance(result, str):


string 인스턴스가 아니라면.



if not isinstance(result, str):



None을 확인하는 코드이다.


a = None

if not a:

    print("1")

else:

    print("2")



결과는 다음과 같다.


1



None을 체크하는 코드이다. 


a = "1"

if not a:

    print("1")

else:

    print("2")



결과는 다음과 같다.

2



'python' 카테고리의 다른 글

[python3] ++ 연산자  (0) 2017.09.28
python2와 python3의 차이점 - string.decode()  (0) 2017.09.28
flask 환경 구성하기  (0) 2017.09.19
pyenv 설치 방법  (0) 2017.09.19
[python3] sorted 함수 예제  (0) 2017.07.20
Posted by '김용환'
,

flask 환경 구성하기

python 2017. 9. 19. 21:55



flask 설정하기 


$ virtualenv flaskapp

Using base prefix '/Users/samuel.kim/.pyenv/versions/3.6.0'

New python executable in /Users/samuel.kim/dev/my/test-flask/flaskapp/bin/python3

Also creating executable in /Users/samuel.kim/dev/my/test-flask/flaskapp/bin/python

Installing setuptools, pip, wheel...done.




활설화하려면 다음 커맨드를 사용한다.


$ . bin/activate

(flaskapp)



이제 flaskapp virtualenv가 추가되었다. 


shell에 변경되어 있다. 

(flaskapp) [~] 

(flaskapp) [~] 



Flask를 설치한다. 


$ pip install Flask




main.py을 다음처럼 수정한다. 


from flask import Flask


app = Flask(__name__)



@app.route('/')

def hello_world():

    return 'Hello World!'



if __name__ == '__main__':

    app.run()




그리고 쉘에서 다음처럼 실행하고 localhost:5000에 접속한다.


$ export FLASK_APP=main.py

$ flask run

 * Serving Flask app "main"

 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

127.0.0.1 - - [19/Sep/2017 20:50:50] "GET / HTTP/1.1" 200 -





Posted by '김용환'
,

pyenv 설치 방법

python 2017. 9. 19. 16:10



pyenv 설치 방법이다. 




$ python --version

Python 2.7.12


$ pyenv install 3.6.0


$ pyenv versions

  system

  2.7.12

* 3.6.0 (set by /Users/samuel.kim/.pyenv/version)






virtualenv를 설치한다.


$ python3 -m pip install virtualenv virtualenvwrapper


$ virtualenv

You must provide a DEST_DIR

Usage: virtualenv [OPTIONS] DEST_DIR



$ pip -V

pip 9.0.1 from /Users/samuel.kim/.pyenv/versions/3.6.0/lib/python3.6/site-packages (python 3.6)

 


$ pip install virtualenv virtualenvwrapper



$ brew install pyenv-virtualenv




~/.bash_profile에 다음을 추가한다. (설정)



export PATH="$HOME/.pyenv/bin:$PATH"

export PYENV_VERSION=3.6.0

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"




~/.bash_profile을 읽는다. 


$ source ~/.bash_profile



.pyenv 밑에 python이 위치한다면 성공한 것이다.



$ which python

/Users/samuel.kim/.pyenv/shims/python

  

  


이제 정상적으로 동작하는 지 확인한다. pyenv에서 파이썬을 설치하려면 install 커맨드를 실행하며 다음과 같다. 



bash_profile에서 설정된 대로 동작되었다. 


$ python --version

Python 3.6.0(set by PYENV_VERSION environment variable)


$ pyenv install 3.6.1


$ pyenv shell 3.6.1

 

$ pyenv versions

  system

* 3.6.0 

* 3.6.1 (set by PYENV_VERSION environment variable)

  





pyenv의 특정 버전을 삭제하려면 uninstall을 사용하며 다음과 같다.


$ pyenv uninstall 3.6.0

  



pyven 버전 이동은 shell을 사용한다.


$ pyenv shell 2.7.12

$ pyenv version

2.7.12




'python' 카테고리의 다른 글

[python3] 파이썬 값/타입 확인 예제  (0) 2017.09.28
flask 환경 구성하기  (0) 2017.09.19
[python3] sorted 함수 예제  (0) 2017.07.20
[python3] python3에서 자주 실수하는 부분  (0) 2017.07.18
[python3] dict()의 in의 의미  (0) 2017.07.11
Posted by '김용환'
,



파이썬의 sorted 함수는 콜렉션(List, Tuple, 등) 및 배열을 정렬할 수 있다. 


정렬 키를 lambda를 사용해서 깔끔히 정렬되는 것을 보니 깔끔해 보인다. 



print("List")
lst = ['cc', 'aa', 'ba', 'md']
print(list)
print("origin-", lst)
print("sort-", sorted(lst))
print("sort(reverse)-", sorted(lst, reverse=True))
print("\n")

print("\n")
print("Tuple")
tup = [('cc', 3), ('aa', 2), ('ba', 5), ('md', 4)]
print("origin-", tup)
print("sort-", sorted(tup, key=lambda tup: tup[1]))
print("sort(reverse)-",sorted(tup, key=lambda tup: tup[1], reverse=True))
print("\n")

print("\n")
print("Class")
class Member:
def __init__(self, id):
self.id = id
def __repr__(self):
return repr(self.id)

members = [Member(1), Member(10), Member(5), Member(4)]
print("origin-", members)
print("sort-", sorted(members, key=lambda member: member.id))
print("sort(reverse)-", sorted(members, key=lambda member: member.id, reverse=True))


예제 결과는 다음과 같다. 


List

<class 'list'>

origin- ['cc', 'aa', 'ba', 'md']

sort- ['aa', 'ba', 'cc', 'md']

sort with reverse- ['md', 'cc', 'ba', 'aa']





Tuple

origin- [('cc', 3), ('aa', 2), ('ba', 5), ('md', 4)]

sort- [('aa', 2), ('cc', 3), ('md', 4), ('ba', 5)]

sort with reverse- [('ba', 5), ('md', 4), ('cc', 3), ('aa', 2)]





Class

origin- [1, 10, 5, 4]

sort- [1, 4, 5, 10]

sort(reverse)- [10, 5, 4, 1]

Process finished with exit code 0

Empty test suite.




'python' 카테고리의 다른 글

flask 환경 구성하기  (0) 2017.09.19
pyenv 설치 방법  (0) 2017.09.19
[python3] python3에서 자주 실수하는 부분  (0) 2017.07.18
[python3] dict()의 in의 의미  (0) 2017.07.11
[python3] 맥에서 spyder 설치/실행  (0) 2017.04.28
Posted by '김용환'
,


python3 코드를 개발하다가 자주 실수하는 부분을 적어본다.


1. raw_input은 사라졌다.


raw_input  대신 input 함수로 바꿔 그대로 사용한다.




2. print "" 이 아닌 print("")이다.


print "log : ..."



3. sqlite



python2에서는 sqlite import하고 난 뒤 쿼리를 날리면 buffer()를 사용했었는데, python3에서는 ()만 사용한다.


cur.execute('SELECT count FROM Ages WHERE org = ? ', (org, ))

row = cur.fetchone()


()를 사용하지 않으면, 다음 에러가 발생한다.


sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 40 supplied.





두 개의 매개 변수를 쿼리에 전달할 때는 다음처럼 2개의 변수를 ()에 넣어서 전달한다. 


cur.execute('''INSERT INTO Ages (id, age) VALUES ( ?, ? )''', (i,a), )




4. urllib api의 모듈 이름


파이썬 2              => 파이썬 3

urllib.urlencode() =>  urllib.parse.urlencode()

urllib.urlopen() => urllib.request.urlopen()





5. urllib api의 바이너리 


python2의 urllib에서는 urlopen의 결과가 기본 문자열이었다면 python3의 urllib.request.urlopen의 결과는 bytes이다.


에러는 TypeError: a bytes-like object is required, not 'str'와 같다.


    uh = urllib.request.urlopen(url, context=scontext)

    data = uh.read().decode('utf-8')

    


로그로 찍어보면 아래와 같이 byte로 읽는 것을 확인할 수 있다. 

characters b'{\




    

    

    

'python' 카테고리의 다른 글

pyenv 설치 방법  (0) 2017.09.19
[python3] sorted 함수 예제  (0) 2017.07.20
[python3] dict()의 in의 의미  (0) 2017.07.11
[python3] 맥에서 spyder 설치/실행  (0) 2017.04.28
[python] python 2.4 -> python 2.7 업그레이드  (0) 2017.01.16
Posted by '김용환'
,

python의 dict에 키가 존재하는지 여부를 확인하려 하면 in를 사용하면 된다. 


(for문에서의 in만 알고 있었다)

dic = dict()

print('candy' in dic)

dic['candy'] = 1

print('candy' in dic)



결과


False

True




특정 리스트의 키 개수를 구하는 코드이다. 

dic = dict()

names = ['a', 'b', 'c', 'a', 'a', 'c']

for name in names:
if name not in dic:
dic[name] = 1
else:
dic[name] += 1

print(dic)


결과


{'a': 3, 'b': 1, 'c': 2}



dic의 in 없이 개발하려면 dict의 get을 이용한다.


dic = dict()

names = ['a', 'b', 'c', 'a', 'a', 'c']

for name in names:
dic[name] = dic.get(name, 0) + 1

print(dic)


Posted by '김용환'
,


pip 대신 anaconda 중 miniconda 설치를 설치한다.


https://conda.io/miniconda.html 에서 OS체제별 스크립트를 다운로드 한다. 


bash Miniconda3-latest-MacOSX-x86_64.sh


source ~/.bash_profile

  

 

conda install qt pyqt


conda install spyder




이제 아래와 같이 실행하면 spyder가 실행된다.


spyder



Posted by '김용환'
,



centos 5에 python 2.4.3에서 python 2.7.9로 업그레이드 한 내용을 공유한다. 


현재 파이썬 버전을 확인하고 실제 경로를 확인한다. 


$ python -V

Python 2.4.3


$ which python

/usr/bin/python





python 싸이트에서 2.7.9를 다운받는다. proxy 설정을 지정한다. 


$ export https_proxy=

$ export http_proxy=


$ wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz



파이썬을 설치하고, 예전 버전의 python은 2.4 대신 2.7.9로 사용할 수 있도록 수정한다. 


$ tar zxvf Python-2.7.9.tgz

$ cd Python-2.7.9

$ ./configure

$ make

$ sudo make altinstall



$ sudo mv /usr/bin/python /usr/bin/python_2.4.3

$ sudo mv /usr/local/bin/python2.7 /usr/bin/python

 


기본 파이썬을 확인한다. 


$ python -V

Python 2.7.9





Posted by '김용환'
,




python 2.6이 더 이상 유지보수가 안되는 버전이 되고 말았다..ㅠ


$ sudo -i pip install httplib2

DEPRECATION: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of pip will drop support for Python 2.6


구글에 검색해보니. 올해 초부터 발생한 것 같다.. 안녕 2.6~~



Posted by '김용환'
,

python의 pass를 continue처럼 쓰다가 실수해서 정리해봤다.


pass는 그냥 아무것도 하지 않는다의 의미로 쓴다. 즉 수행할 코드가 없음을 명시적으로 표현할 뿐이다. 


#!/bin/python

for i in [1,2,3]:
if i == 2:
pass
print "x"
print i

print ""

for i in [1,2,3]:
if i == 3:
continue
print i



결과

1

x

2

3


1

2



Posted by '김용환'
,