728x90
반응형

프로그래밍 언어/Python 318

로컬에 설치된 Python 모듈 리스트를 얻는 방법

질문 : 로컬에 설치된 Python 모듈 목록을 얻으려면 어떻게해야합니까? 내 Python 설치 (UNIX 서버)에있는 Python 모듈 목록을 얻고 싶습니다. 컴퓨터에 설치된 Python 모듈 목록을 어떻게 얻을 수 있습니까? 답변 솔루션 pip > 10.0과 함께 사용하지 마십시오! Python 스크립트에서 pip freeze 와 유사한 목록을 얻는 데 50 센트 : import pip installed_packages = pip.get_installed_distributions() installed_packages_list = sorted(["%s==%s" % (i.key, i.version) for i in installed_packages]) print(installed_packages_list..

파이썬 스레드에서 반환 값을 얻는 방법

질문 : 파이썬 스레드에서 반환 값을 얻는 방법은 무엇입니까? foo 함수 'foo' 문자열을 반환합니다. 스레드의 대상에서 반환되는 'foo' 값을 어떻게 얻을 수 있습니까? from threading import Thread def foo(bar): print('hello {}'.format(bar)) return 'foo' thread = Thread(target=foo, args=('world!',)) thread.start() return_value = thread.join() 위에 표시된 "한 가지 분명한 방법"은 작동하지 않습니다. thread.join() None 반환했습니다. 답변 Python 3.2 이상에서 stdlib concurrent.futures 모듈은 반환 값 또는 예외를 작업..

Python을 사용하여 시스템 호스트 이름을 얻는 방법

질문 : Python을 사용하여 시스템 호스트 이름을 얻으려면 어떻게해야합니까? 로컬 네트워크를위한 채팅 프로그램을 작성 중입니다. 컴퓨터를 식별하고 Python으로 사용자가 설정 한 컴퓨터 이름을 얻고 싶습니다. 답변 socket 및 해당 gethostname() 기능을 사용하십시오. 이것은 Python 인터프리터가 실행되는 컴퓨터 hostname 을 가져옵니다. import socket print(socket.gethostname()) 출처 : https://stackoverflow.com/questions/4271740/how-can-i-use-python-to-get-the-system-hostname

Python에서 수동으로 예외 발생 (throwing)

질문 : Python에서 수동으로 예외 발생 (던지기) except 블록을 통해 잡을 수 있도록 파이썬에서 예외를 어떻게 발생시킬 수 있습니까? 답변 Python에서 예외를 수동으로 생성/제기하는 방법은 무엇입니까? 의미 상 문제에 맞는 가장 구체적인 예외 생성자를 사용합니다 . 메시지를 구체적으로 작성하십시오. 예 : raise ValueError('A very specific bad thing happened.') 일반 예외를 제기하지 않음 Exception 발생시키지 마십시오. 이를 포착하려면 하위 클래스를 구성하는 다른 모든 특정 예외를 포착해야합니다.0 문제 1: 버그 숨기기 raise Exception('I know Python!') # Don't! If you catch, likely to ..

pip로 특정 패키지 버전 설치

질문 : pip로 특정 패키지 버전 설치 --no-site-packages 옵션으로 만든 새로운 virtualenv를 사용하여 MySQL_python 어댑터 버전 1.2.2를 설치하려고합니다. PyPi에 표시된 현재 버전은 1.2.3 입니다. 이전 버전을 설치하는 방법이 있습니까? 이 작업을 수행해야한다는 기사를 찾았습니다. pip install MySQL_python==1.2.2 그러나 설치되면 사이트 패키지에 MySQL_python-1.2.3-py2.6.egg-info 이 패키지에 특정한 문제입니까, 아니면 제가 잘못하고 있습니까? 답변 TL, DR : pip install -Iv (예 : pip install -Iv MySQL_python==1.2.2 ) 첫째, 당신이하려는 일에 두 가지 문제가 있..

Python 클래스에서 동등성 ( "equality")을 지원하는 방법

질문 : Python 클래스에서 동등성 ( "equality")을 지원하는 우아한 방법 == 및 != 연산자를 사용하여 동등성을 허용하는 것이 종종 중요합니다. __eq__ 및 __ne__ 특수 메서드를 각각 구현하여 가능합니다. 이 작업을 수행하는 가장 쉬운 방법은 다음 방법입니다. class Foo: def __init__(self, item): self.item = item def __eq__(self, other): if isinstance(other, self.__class__): return self.__dict__ == other.__dict__ else: return False def __ne__(self, other): return not self.__eq__(other) 이 작업을 수행..

Python unittest-assert Raises의 반대?

질문 : Python unittest-assertRaises의 반대 주어진 상황에서 예외가 발생하지 않는지 확인하는 테스트를 작성하고 싶습니다. 예외가 발생했는지 테스트하는 것은 간단합니다. sInvalidPath=AlwaysSuppliesAnInvalidPath() self.assertRaises(PathIsNotAValidOne, MyObject, sInvalidPath) ...하지만 어떻게 그 반대 를 할 수 있습니까. 이런 것 내가 쫓는 것 ... sValidPath=AlwaysSuppliesAValidPath() self.assertNotRaises(PathIsNotAValidOne, MyObject, sValidPath) 답변 def run_test(self): try: myFunc() exc..

마이크로 초 구성 요소없이 문자열에 대한 Python 날짜 시간

질문 : 마이크로 초 구성 요소없이 문자열에 대한 Python 날짜 시간 현재 암스테르담 (!) 시간 문자열 만 포함하는 Bitbucket API 응답에 UTC 시간 문자열을 추가하고 있습니다. 다른 곳에서 반환 된 UTC 시간 문자열과 일관성을 유지하기 위해 원하는 형식은 2011-11-03 11:07:04 ( +00:00 뒤 따르지만 관련이 없음). A로부터 (마이크로 초 구성 요소없이)와 같은 문자열을 만들 수있는 가장 좋은 방법은 무엇입니까 datetime 마이크로 초 구성 요소 인스턴스는? >>> import datetime >>> print unicode(datetime.datetime.now()) 2011-11-03 11:13:39.278026 가능한 대답으로 나에게 발생한 최상의 옵션을 추..

Python에서 None 판별법

질문 : Python에서 테스트 없음 이 중 None 테스트가 아닙니다. if val != None: if not (val is None): if val is not None: 어느 것이 더 바람직하며 그 이유는 무엇입니까? 답변 if val is not None: # ... None 설정되지 않았는지 테스트하기위한 파이썬 관용구입니다. 이 관용구는 기본 매개 변수로 키워드 함수를 선언 하는 경우에 특히 사용됩니다. is 파이썬에서 테스트 정체성. 하나 하나의 인스턴스 만이 있기 때문에 None 실행 파이썬 스크립트 / 프로그램의 존재 is 이를위한 최적의 테스트입니다. Johnsyweb이 지적했듯이 이것은 "프로그래밍 권장 사항"의 PEP 8 에서 논의됩니다. 이것이 선호되는 이유는 if not (va..

python setup.py 제거

질문 : python setup.py 제거 python setup.py install 과 함께 python 패키지를 설치했습니다. 어떻게 제거합니까? 답변 참고 : python setup.py install use pip install . 모든 파일을 수동으로 제거하고 설치에서 수동으로 수행 한 다른 작업도 실행 취소해야합니다. 모든 파일 목록을 모르는 경우 --record 옵션을 사용하여 다시 설치하고 생성 된 목록을 살펴볼 수 있습니다. 설치된 파일 목록을 기록하려면 다음을 사용할 수 있습니다. python setup.py install --record files.txt 제거하려면 xargs를 사용하여 제거 할 수 있습니다. xargs rm -rf < files.txt 또는 Windows를 실행중인 ..

Python 3.6 이상에서 딕셔너리 정렬

질문 : 사전은 Python 3.6 이상에서 정렬됩니까? 사전은 이전 버전과 달리 Python 3.6 (적어도 CPython 구현 아래)에서 주문됩니다. 이것은 상당한 변화처럼 보이지만 문서 의 짧은 단락 일뿐입니다. 이는 언어 기능이 아니라 CPython 구현 세부 사항으로 설명되지만 향후 표준이 될 수도 있음을 의미합니다. 새 사전 구현은 요소 순서를 유지하면서 이전 구현보다 어떻게 더 잘 수행됩니까? 다음은 문서의 텍스트입니다. dict() 이제 PyPy가 개척 한 "콤팩트"표현을 사용합니다. 새로운 dict ()의 메모리 사용량은 Python 3.5에 비해 20 %에서 25 % 작습니다. PEP 468 (함수에서 ** kwargs의 순서 유지)는 이것에 의해 구현됩니다. 이 새로운 구현의 순서 유..

파이썬 함수의 소스 코드를 얻는 방법

질문 : 파이썬 함수의 소스 코드를 어떻게 얻을 수 있습니까? 아래에 정의 된 Python 함수가 있다고 가정합니다. def foo(arg1,arg2): #do something with args a = arg1 + arg2 return a foo.func_name 사용하여 함수의 이름을 얻을 수 있습니다. 위에서 입력 한대로 프로그래밍 방식으로 소스 코드를 얻으려면 어떻게해야합니까? 답변 함수가 파일 시스템에서 사용 가능한 소스 파일에있는 경우 inspect.getsource(foo) 가 도움이 될 수 있습니다. foo 가 다음과 같이 정의 된 경우 : def foo(arg1,arg2): #do something with args a = arg1 + arg2 return a 그때: import insp..

Python에서 GUID / UUID를 만드는 방법

질문 : Python에서 GUID / UUID를 만드는 방법 플랫폼 독립적 인 Python에서 GUID를 어떻게 생성합니까? Windows에서 ActivePython을 사용하는 방법이 있다고 들었지만 COM을 사용하기 때문에 Windows입니다. 일반 Python을 사용하는 방법이 있습니까? 답변 uuid 모듈 은 RFC 4122에 지정된대로 버전 1, 3, 4 및 5 UUID를 생성하기 위해 변경 불가능한 UUID 객체 (UUID 클래스) 및 함수 uuid1 (), uuid3 (), uuid4 (), uuid5 ()를 제공합니다. 고유 한 ID 만 있으면 uuid1 () 또는 uuid4 ()를 호출해야합니다. uuid1 ()은 컴퓨터의 네트워크 주소를 포함하는 UUID를 생성하므로 개인 정보를 손상시킬..

Python 애플리케이션에 가장 적합한 프로젝트 구조를 구성하는 좋은 방법

질문 : Python 애플리케이션에 가장 적합한 프로젝트 구조는 무엇입니까? Python으로 사소하지 않은 최종 사용자 데스크톱 (웹이 아님) 애플리케이션을 개발하고 싶다고 상상해보십시오. 프로젝트의 폴더 계층 구조를 구성하는 가장 좋은 방법은 무엇입니까? 바람직한 기능은 유지 관리의 용이성, IDE 친 화성, 소스 제어 분기 / 병합에 대한 적합성 및 설치 패키지의 쉬운 생성입니다. 특히: 답변 그다지 중요하지 않습니다. 당신을 행복하게 만드는 것은 무엇이든지 효과가있을 것입니다. Python 프로젝트는 간단 할 수 있기 때문에 어리석은 규칙은 많지 않습니다. /scripts 또는 /bin 그런 종류의 명령 줄 인터페이스 항목 /tests 위한 테스트 C 언어 라이브러리 용 /lib /doc 대부분의 ..

Python의 C와 유사한 구조

질문 : Python의 C와 유사한 구조 Python에서 C와 유사한 구조를 편리하게 정의하는 방법이 있습니까? 나는 다음과 같은 것을 쓰는 것에 지쳤다. class MyStruct(): def __init__(self, field1, field2, field3): self.field1 = field1 self.field2 = field2 self.field3 = field3 답변 Python 2.6의 표준 라이브러리에있는 collections 모듈 에 추가 된 명명 된 tuple을 사용하십시오. Python 2.4를 지원해야하는 경우 Raymond Hettinger의 명명 된 튜플 레시피를 사용할 수도 있습니다. 기본 예제에는 좋지만 나중에 발생할 수있는 여러 가지 주요 사례도 다룹니다. 위의 조각은 ..

Python에서 싱글 톤 만들기

질문 : Python에서 싱글 톤 만들기 이 질문은 싱글 톤 디자인 패턴 이 바람직한 지, 반 패턴인지 또는 종교 전쟁인지에 대한 논의가 아니라이 패턴이 가장 비단뱀적인 방식으로 파이썬에서 어떻게 가장 잘 구현되는지 논의하기위한 것입니다. 이 경우 '가장 비단뱀 적'이라는 것은 '최소 경악의 원칙'을 따른다는 의미로 정의 합니다. 싱글 톤이되는 여러 클래스가 있습니다 (내 사용 사례는 로거 용이지만 중요하지 않습니다). 단순히 상속하거나 장식 할 수있을 때 고무줄을 추가하여 여러 클래스를 어지럽히고 싶지 않습니다. 최선의 방법 : 방법 1: A decorator def singleton(class_): instances = {} def getinstance(*args, **kwargs): if class..

Python에서 switch 문을 사용하는 방법

질문 : Python에서 switch 문을 대체합니까? 입력 인덱스의 값에 따라 다른 고정 값을 반환하는 함수를 Python으로 작성하고 싶습니다. 다른 언어에서는 switch 또는 case 문을 사용하지만 Python에는 switch 문이없는 것 같습니다. 이 시나리오에서 권장되는 Python 솔루션은 무엇입니까? 답변 아래의 원래 답변은 2008 년에 작성되었습니다. 그 이후로 Python 3.10 (2021)은 Python 용 "스위치"의 일급 구현을 제공하는 match - case 예를 들면 : def f(x): match x: case 'a': return 1 case 'b': return 2 match - case 문은이 간단한 예제보다 훨씬 더 강력합니다. 사전을 사용할 수 있습니다. def..

파이썬에서 "at"(@) 기호의 역할

질문 : 파이썬에서 "at"(@) 기호는 무엇을합니까? @ 기호를 사용하는 일부 Python 코드를보고 있지만 그것이 무엇을하는지 모르겠습니다. 또한 Python 문서를 검색 할 때 무엇을 검색해야할지 모르겠거나 @ 기호가 포함 된 경우 Google이 관련 결과를 반환하지 않습니다. 답변 줄의 시작 부분에있는 @ 기호는 클래스, 함수 및 메서드 데코레이터에 사용 됩니다. 여기에서 더 많은 것을 읽으십시오 : PEP 318 : 데코레이터 파이썬 데코레이터 가장 일반적인 Python 데코레이터는 다음과 같습니다. @특성 @classmethod 안녕하세요. @ 가 보이면 그것은 다른 것, 즉 행렬 곱셈입니다. 이진 연산자로 @ 사용을 보여주는이 답변을 참조하십시오. 출처 : https://stackoverfl..

DataFrame 행 순서를 섞는 방법

질문 : DataFrame 행 셔플 다음 DataFrame이 있습니다. Col1 Col2 Col3 Type 0 1 2 3 1 1 4 5 6 1 ... 20 7 8 9 2 21 10 11 12 2 ... 45 13 14 15 3 46 16 17 18 3 ... DataFrame은 csv 파일에서 읽습니다. Type 1이있는 모든 행이 맨 위에 있고 Type 2가있는 행, Type 3이있는 행 등이 뒤 따릅니다. Type 이 혼합되도록 DataFrame의 행 순서를 섞고 싶습니다. 가능한 결과는 다음과 같습니다. Col1 Col2 Col3 Type 0 7 8 9 2 1 13 14 15 3 ... 20 1 2 3 1 21 10 11 12 2 ... 45 4 5 6 1 46 16 17 18 3 ... 이것을 어..

Python 3에서 raw_input을 사용하는 방법

질문 : Python 3에서 raw_input을 어떻게 사용합니까? import sys print(sys.platform) print(2**100) raw_input() 저는 Python 3.1을 사용하고 있으며 raw_input 이 dos 팝업을 "고정"하도록 할 수 없습니다. 내가 읽고있는 책은 Python 2.5 용이며 Python 3.1을 사용하고 있습니다. 이 문제를 해결하려면 어떻게해야합니까? 답변 Python 3부터 raw_input() input() 으로 변경되었습니다. 파이썬 3.0의 새로운 기능에서 빌트인 섹션 두 번째 항목. 출처 : https://stackoverflow.com/questions/954834/how-do-i-use-raw-input-in-python-3

Python에서 현재 사용자 이름을 가져 오는 방법

질문 : Python에서 현재 사용자 이름을 가져 오는 이식 가능한 방법이 있습니까? Python에서 현재 사용자의 사용자 이름을 가져 오는 이식 가능한 방법이 있습니까 (예 : 적어도 Linux와 Windows에서 모두 작동하는 사용자 이름). os.getuid와 같이 os.getuid . >>> os.getuid() 42 >>> os.getusername() 'slartibartfast' 나는 주위를 훑어 보았고 확실한 대답을 찾지 못한 것에 놀랐습니다 (아마도 인터넷 검색이 좋지 않았지만). pwd 모듈은 예를 들어 Linux에서이를 수행하는 비교적 쉬운 방법을 제공하지만 Windows에는 없습니다. 일부 검색 결과는 Windows에서 사용자 이름을 얻는 것이 특정 상황 (예 : Windows 서비..

함수 호출에서 별표 및 이중 별표 연산자가 의미하는 것

질문 : 함수 호출에서 별표 및 이중 별표 연산자는 무엇을 의미합니까? * zip(*x) 또는 f(**k) 와 같은 코드에서와 같이 Python에서 무엇을 의미합니까? 답변 단일 별표 * 는 시퀀스 / 컬렉션을 위치 인수로 압축 해제하므로 다음과 같이 할 수 있습니다. def sum(a, b): return a + b values = (1, 2) s = sum(*values) 이것은 실제로 다음과 같이 실행되도록 튜플을 압축 해제합니다. s = sum(1, 2) 이중 별표 ** 는 딕셔너리와 명명 된 인수 만 사용하여 동일합니다. values = { 'a': 1, 'b': 2 } s = sum(**values) 다음을 결합 할 수도 있습니다. def sum(a, b, c, d): return a + b ..

Python의 easy_install로 설치된 패키지를 제거하는 방법

질문 : Python의 easy_install로 설치된 패키지를 제거하려면 어떻게해야합니까? Python의 easy_install 사용하면 새 패키지를 매우 편리하게 설치할 수 있습니다. 그러나 내가 말할 수있는 한, 설치된 패키지를 나열하고 제거하는 종속성 관리자의 다른 공통 기능을 구현하지 않습니다. 설치된 항목을 찾는 가장 좋은 방법은 무엇이며 설치된 패키지를 제거하는 가장 좋은 방법은 무엇입니까? 패키지를 수동으로 제거 할 경우 업데이트해야하는 파일이 있습니까 (예 : rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.egg 또는 유사)? 답변 setuptools / easy_install의 대안 인 pip 는 "uninstall"명령을 제공..

[Python] 다중 처리 vs 스레딩

질문 : 다중 처리 대 스레딩 Python 스레딩에 비해 다중 처리 의 장점을 이해하려고합니다. 다중 처리 가 Global Interpreter Lock을 우회한다는 것을 알고 있지만 다른 이점이 있으며 스레딩 이 똑같은 일을 할 수 없습니까? 답변 threading 모듈은 스레드를 사용하고 multiprocessing 모듈은 프로세스를 사용합니다. 차이점은 스레드는 동일한 메모리 공간에서 실행되는 반면 프로세스에는 별도의 메모리가 있다는 것입니다. 이로 인해 다중 처리를 사용하여 프로세스간에 개체를 공유하기가 조금 더 어려워집니다. 스레드는 동일한 메모리를 사용하기 때문에 예방 조치를 취해야합니다. 그렇지 않으면 두 개의 스레드가 동시에 동일한 메모리에 기록됩니다. 이것이 글로벌 인터프리터 잠금의 목적..

728x90
반응형