라벨이 파이썬인 게시물 표시

(Python) DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. (해결법)

이미지
파이썬에서 특정 패키지 설치시 위와 같은 에러를 발생시키고 있었다. (when I tried to install a package which is pytest, some error is caused) 그래서 다음과 같은 명령어를 이용해 위 에러를 제거하려 하였다 (So I tried to remove this error with next command in macOS) $ pip install --ignore-installed six 그후 원래 설치하려던 pytest를 다시 설치하려 시도하니 (I tried to install again what I want to install prior package) 다음과 같은 에러가 발생하였다. (However error caused again) 위와 같은 에러가 발생하는 이유는 해당 파이썬이 설치된 Os가 Apple에서 제공하는 Homebrew로 설치되어 있기 떄문이다. 즉 파이썬에서 제공하는 pip 시스템과 다르기 때문에 에러가 발생한 것이다. ( The system python is managed by the OS vendor (Apple, Canonical, etc), and is meant to be used by other OS built-in tools. Having pip mess things up in the vendored python is dangerous. ) 그래서 --user옵션을 이용하여 설치하니 정상적으로 설치되었다. (The --user options wors well for my case) $ sudo -H pip install pytest

(Python) pytest 설치하기 (pytest installation in Mac OS)

The Java has a Junit Test Framework.(TDD) It is more generally used in Many Java Programmer. Python has a Pytest Test Tool. It will show you how to install the Pytest Framework. this python version is 3.6 and in Mac OS Before to install the package, you need to install pip Install pytest 1. run the following commnad in your command line: $ pip install -U pytest 2. check that you install the correct version : $pytest --version

(Python) 파이썬 모듈 만들기 (Kr)

Thrid Party 모듈을 공급하고 지원하는 기능은 파이썬 코드 재사용의 핵심 기술입니다. 그래서 파이썬은 개발자가 파이썬 설정에 모듈을 추가할 수 있도록 내장 기능을 제공합니다. 파이썬 표준 라이브러리에 포함된 커다란 모듈 컬렉션은 파이썬 핵심 개발자가 관리하며 많은 사람이 사용하고 원본이 훼손되지 않도록 유지됩니다. 그러므로 개발자가 표준라이브러리에 모듈을 추가하거나 제거하는 작업은 하지 말아야합니다. 그러나 모듈을 사이트패키지에 추가하거나 제거하는 작업은 가능합니다. 파이썬에서는 이와같은 작업을 위해 setup 모듈을 제공합니다. * setup.py이란 무엇인가??(What is setup.py?) ->setup.py is a python file which is usually tells you that module/package you are beneficial about to install has been packaged and distributed with Disutils, which is statndard for Python Modules. This allows you to easily to install Python packages. $ python setup.py install http://docs.python.org/install/index.html 즉, setup.py를 이용해 특정 모듈을 설치하거나, 모듈이나 패키지가 어디에 분포하고있는지 알려주는 표준라이브러리에 있는 파일이다. <setup.py를 이용하는법> 먼저 핵심 단어를 정의할 필요가 있다. package : 폴더/디렉토리가 __init__.py파일을 포함하고 있는것 module : .py확장자를 가지고 있는 파일 Distribution : 하나의 패키지가 다른 파일들과 어떠한 관계를 갖고 있는가 예를들어,  galaxy라는 패키지를 설치한다고 예를들어보자. $ git clo...

(Python) bool형

이미지
파이썬의 모든 객체는 참이나 거짓으로 평가될 수 있습니다. 0, 빈 내장자료구조, 빈 문자열, None등은 모두 거짓으로 평가됩니다. 그 밖의 모든 객체는 참으로 평가됩니다.

(Python) 함수

이미지
파이썬 함수는 다음과 같은 특징을 가진다. 1. def와 return이라는 두 가지 새로운 키워드가 사용된다. 2. 함수는 인자 데이터를 받을 수 있다. 3. 함수 코드와 주석을 붙일 수 있다. (여기서 주석이란 메모를 뜻한다.) 1. 파이썬 함수는 인터프리터가 객체의 유형을 신경쓰지 않는다는 것이다. 즉, 어떤 인자를 받거나 어떠한 객체의 유형을 return해도 신경쓰지 않는다. 파이썬 함수는 def키워드로 시작한다 해당 키워드는 define(정의하다)의 줄임말이라고 보면된다. 다음과 같이 시작한다. 파이썬에서는 문자열을 표현할시 여러 행으로 확장 할 수 없다. 줄바꿈을 할 시 해당 문자열이 종료한다고 생각한다. 문자열을 표현할 때 ' ', ""  "",  """   """" 세가지를 사용하는데 일반적으로 프로그래머는 문자열을 ' ' 이런식으로 사용하며, """ """ 이 의미는 주석으로 사용한다. 1-1. 함수는 인자를 받을 수 있다. 함수 맨 윗부분의 괄호안에 인자를 받을 수 있다. 위 그림처럼 letter이라는 인자를 받아 함수를 처리하고 있다. 함수를 처리하는 곳에 맨 아래부분에 보면 findingvowels라는 함수를 실행시키는데 "EveryBody"라는 인자를 넘긴다. 이 인자는 letter이라는 인자에 대입되어 위 함수가 처리된다. 즉, letter = 'EveryBody'가 된다고 볼 수 있다. 만약 위 함수에 인자를 여러개 넣는다고 가정해보자 즉, findingvowels('EveryBody', 'EveryBody2', 'EveryBody3') 이럴 경우 에러가 발생한다 왜냐하면 함수 선언에 letter이라는 인자 한개만 받고 있...

(Python) 튜플 (tuple)

이미지
튜플(tuple)은 리스트처럼 한 번 만들고 데이터를 저장한 다음에는 바꿀 수 없는 자료구조이다. 그럼 왜 튜플(tuple)을 사용할까? 바꿀 수 없는 자료구조가 유용할 때도 있습니다. 특정데이터가 바뀌지 않음으로 부작용을 줄일 수 있습니다. 1. 튜플 vs 리스트 차이점 : 리스트는 대괄호를 사용하지만, 튜플은 괄호를 사용합니다. type을 이용하면 만들어진 객체의 유형을 확인 할 수 있다. 그렇다면 튜플을 바꿀 수 있을까???? vowels[2] = 'I' 로 바꾸려 시도한다면 TypeError를 발생시키게 된다. 즉, 튜플 안에 있는 자료주는 한번 선언되면 바꿀 수 없다. <주의사항> 튜플을 만들 시 단일객체는 만들 수 없다. 다음예제를 보면 ('tuple')로 선언하게 되면 자료형이 str타입이된다. 그러나 콤마(,)를 붙이게 되면 튜플형 자료가 되는 것을 볼 수 있다.

(파이썬) Numpy라이브러리

*Numpy 라이브러리에서 데이터복사가 되지 않고 뷰에대한 변경만 이루어진다 예를들어, arr갑에 0부터9까지 값이 입력되어있다고 가정하고 arr[5:8]=12로 변경할시 5번쨰부터 7번째값이 12로 변경되는데 이는 실제로 데이터 복사가 이루어진것이아니고 뷰에서만 값이 12로 나오는 것이다 그 이유는 대용량 데이터처리를 위해 설계되었기 때문이다. 복사본을 얻고싶다면 arr[5:8].copy()를 하면 된다 *특정한 순서로 로우를 선택하고 싶은 경우 arr이 8행 4열일 경우 arr[[4,3,0,6]] 4행 3행 0행 6행인 값들을 보여준다. *색인을 음수로 할 경우 arr[[-3,-5,-7]] 음수로 할 경우 끝에서 부터 색인한다 *각 행의 열들의 위치를 바꿔서 출력 arr[[1,5,7,2]][:,[0,3,1,2]] -->1행 5행 7행 2행의 열들의 위치 출력 순서가 0열 3열 1열 2열로 출력 된다 -->np.ix_()를 이용해도 된다 arr[np.ix_([1,5,7,2],[0,3,1,2])] **np.where() np.where(arr>0,2,arr) -->arr의 원소가 0보다 크면 2로 출력, 작으면 arr원래의 원소 값을 출력한다 -->np.where(cond1 & cond2,0,np.where(cond1,1,np.where(cond2,2,3))) -->cond1과 cond2가 0보다 크면 0 cond1만 크면 1 cond2만 크면 2 다 작으면 3이 출력된다 *****배열 집합연산 unique(x) : 배열 x에서 중복된 원소를 제거한 후 정렬하여 반환한다. intersect(x,y): 배열 x와 y에 공통적으로 존재하는 원소를 정렬하여 반환한다. union1d(x,y): 두 배열의 합집합을 반환한다. in1d(x,y): x의 원소 중 y의 원소를 포함하는지를 나타내는 불리언 배열을 반환한다. s...

(파이썬) 데이터 분석

* 필수 라이브러리 1. Numpy 2. pandas -> R의 dataframe과 비슷하다 3. matplotlib -> 그래프나 2차원 데이터 시각화 4. IPython 5. SciPy ->과학계산 컴퓨팅영역 패키지 예)  scipy.integrate: 수치적분 루틴과 미분방정식 해법기 scipy.linalg: numpy.linalg에서 제공하는 것보다 더 확장된 선형대수 루틴과 매트릭스 분해 scipy.optimize: 함수 최적화기와 방정식의 근을 구하는 알고리즘 scipy.weave: 배열계산을 빠르게하기 위해 인라인C++코드를 사용하는 ㄷ구

(파이썬) 빌트인(Built-in)라이브러리

참고: https://opentutorials.org/module/515/4607 빌트인 라이브러리는 파이썬 자체에 내장되어있어 import안해도 사용 할 수 있다. 어떤 내용을 파일로 저장하고 싶을때는 예) f=open('myfile','w')   f.write('hi there \n') 위의 내용을 보니까 파일 작업을 할 때는 함수 open을 이용해서 파일을 열고 그 결과 해당 파일을 수정할 수 있는 객체가 변수 f에 담긴다는 것을 추정할 수 있었다. 그리고 이 객체는 메소드 write가 있어서 이것을 인자와 함께 호출하면 인자로 전달된 내용이 파일에 기록되는 것 같았다. 그래서 일단 위의 코드를 아래와 같이 수정해서 무작정 실행해봤다. 두 번째 인자인 mode 중의 r은 reading, w는 writing, a는 appending의 약자라는 것을 알 수 있다. 즉 연 파일을 어떤 모드로 사용할 것인지를 지정한다는 의미다. 무슨 의미인지 아리송하다. 그럼 mode를 바꿔가면서 실행해보면 어떨까 싶은 생각이 들었다. mode의 값을 r로 변경한 후에 실행한 결과 아래와 같이 에러가 발생했다. 1 2 3 4 Traceback (most recent call last): File "D:\dev\language\fundamental\python\file.py", line 1, in <module> f = open('title.txt', 'r') IOError: [Errno 2] No such file or directory: 'title.txt' reading 모드로 연 파일을 write하려니까 에러가 발생한다는 것을 짐작할 수 있다. 이번에는 mode를 a로 바꾼 후에 여러번 실행을 해봤다. 그 결과 title.txt 파일의 내용이 아래와 같이 되었다. 1...

(파이썬) 모듈

이미지
코드를 여러개의 파일로 분리하는 것 *모듈이란? 파이썬에서는 필요에 따라서 로드 할 수 있도록 만들어진 파일을 모듈(module)이라고 부른다. *모듈의 사용 새로운 파일을 만든다. 이름은 greeting.py #greeting.py def welcome():   return 'Hello world' #main.py import greeting print greeting.welcome() -->import는 모듈을 로드할 때 사용하는 명령어다. <네임스페이스>  네임스페이스란 간단하게 디렉토리라고 보면된다. 하나의 애플리케이션에는 다양한 모듈을 사용하게 된다. 그런데 모듈이 서로 다른 개발자에 의해 만들어지기 때문에 같은 이름을 쓰는 경우가 생길 수 있다. 이런 경우먼저 로드된 모듈은 나중에 로드된 모듈에 의해서 덮어쓰기 되기 때문에 네임스페이스가 필요하다. 만약 환영인사를 얻어별로 다르게 하고 싶다면 어떻게해야할까? 3개의 파일을 만든다. 예) #greeting_en.py def welcome():    return 'Hello world' #greeting_ko.py   def welcome():   return '안녕 세계' #main.py import greeting_en import greeting_ko print greeting_en.welcome(); print greeting_ko.welcome(); -->여기서 greeting_en, greeting_ko가 네임스페이스이다. <from> 만약 welcome앞에 네임스페이스(greeting)를 명시하고 싶지 않다면 어떻게 해야 할까? 모듈을 로드하는 방식을 달리하면 된다. from뒤에 모듈의 이름을 붙이고 import뒤에 함수의 이름을 붙이면 welcome함수는 greetng_ko모듈의 함수로 동작한다...

(파이썬) 문법3( List,Dictionary,Tuple~)

1. 리스트 리스트란 다른 언어에서 배열(array)라고 하는 형태의 데이터타입이다. *리스트의 생성 대괄호([])는 리스트를 만드는 기호다. 대괄호 안에 데이터를 콤마(,)로 구분해서 나열하면 리스트가 된다. 예) member=['egoing','k8805','sorialgi'] print member[0] print member[1] print member[2] *리스트 반환 def get_members():   return ['egoing','k8805','sorialgi'] *리스트의 사용 리스트의 진가는 반복문과 결합했을 떄 나타난다. def get_members():   return ['egoing','k8805','sorialgi'] members=get_members() for member in members:   print member.capitalize() -->>알파벳의 첫글자를 대문자로 만드는 방법은 String.captalize()이다 *리스트의 크기 O=[1,2,3,4,5] print len(O) *리스트의 조작 1. 추가 리스트의 끝에 아이템을 추가한다. li=['a','b','c','d','e'] li.append('f') print li 다음은 복수의 아이템을 추가하는 방법이다. li=['a','b','c','d','e'] li.extend(['f','g']) print li 특정 인덱스에 아이템을 추가하는 방법 li=['a','b','c',...

(파이썬) 문법2 (반복문 부터~)

1. while 형식은 다음과 같다. while 조건    코드    코드 **무한 반복이기 떄문에 콘솔에서 실행할 경우 Ctril+C를 누르면 정지 할 수 있다. 예)  while True:     print 'coding everybody' 예) i=0 while i<10:   print 'coding everybody'    i+=1 2. for 형식은 아래와 같다. for 변수 in 리스트(또는 터플,문자열):     코드 예)    for i in range(0,10):      print 'coding everybody'+str(i) -->range(0,10)은 i값을 0부터9까지 순차적으로 할당한다. str(i)는 변수 i에 담겨진 숫자를 문자로 바꿔주는 역할을 한다. 3. 반복문의 제어  <break> 반복 작업을 중간에 중단시키고싶을 떄 break를 사용한다. for i in range(0,10):   if i==5:     break   print 'coding everybody'+ str(i) <continue> 실행은 중단하면서 반복은 계속 되게 할 때 continue를 사용한다. for i in range(0,10):   if i==5:     continue   print 'coding everybody'+ str(i) 4. 함수 1. 함수의 형식 def 함수명( [인자....[,인자]]):   "function_docstring"     코드    return 반환값 2. 함수의 정의와 호출 함수는 d...

(파이썬) 문법1

파이썬은 문자열을 동적으로 변경할 수 있는 연산자인 %를 가지고 있다. C의 printf와 비슷한 기능이다. print "$%d o'clock in the $s." (2,'afternoon') 출력 결과: 2 o'clock in the afternoon <문자의 연산> print "coding"+"everybody" 결과: coding everybody 문자를 곱할 떄는 *를 사용한다. print "coding everybody"*10; <변수의 선언> #은 주석이다. 세미콜론(;)은 하나의 구문이 끝났음을 명시적으로 나타내는 기호이다. 한줄에 여러 구문을 사용하고 싶을 때 세미콜론이 유용하다. 예)a=1;print a+1; a=1 print a+1  #2 first="coding" print first+" everybody" <비교 연산자> 1. == print 1==2 #False print 1==1 #True print "one"=="Two" #False print "one"=="one" #True 2. !+ (같지 않다)를 의미한다. 3.<> 결과가 서로 같으면 False 다르면 True를 돌려준다.(!=)와 가ㅏㅌ다. print 10<>20 #True print 10<>1 #True print 10<>10 #False <조건문> 1. if 조건문은 if로 시작한다. if와 콜론(:) 사이에 조건이 오고, 조건이 될 수 있는 값은 Boolean이다. Boolean 의 값이 True라면 if문 다음 행의 구문이 실행된다. *elif 는 else if 이다. if Fal...