Python Language 튜토리얼
Python 언어 시작하기
수색…
비고
파이썬 은 널리 사용되는 프로그래밍 언어입니다. 그것은:
높은 수준 : 파이썬은 메모리 관리와 같은 낮은 수준의 작업을 자동화합니다. 프로그래머의 통제력은 약간 떨어지지 만 코드 가독성과 최소한의 코드 표현 등 많은 이점이 있습니다.
범용 : Python은 모든 컨텍스트와 환경에서 사용되도록 제작되었습니다. 비 범용 언어의 예는 PHP입니다.이 언어는 특별히 서버 측 웹 개발 스크립팅 언어로 설계되었습니다. 반대로 Python 은 서버 측 웹 개발뿐만 아니라 데스크탑 응용 프로그램 구축에도 사용할 수 있습니다.
동적 유형 지정 : Python의 모든 변수는 모든 유형의 데이터를 참조 할 수 있습니다. 단일 표현식은 다른 시간에 다른 유형의 데이터로 평가 될 수 있습니다. 이로 인해 다음 코드가 가능합니다.
if something: x = 1 else: x = 'this is a string' print(x)
강력한 형식 : 프로그램 실행 중에는 작업중인 데이터 유형과 호환되지 않는 작업을 수행 할 수 없습니다. 예를 들어, 문자열에서 숫자로의 숨겨진 변환은 없습니다. 숫자로 만들어진 문자열은 명시 적으로 변환하지 않으면 숫자로 처리되지 않습니다.
1 + '1' # raises an error 1 + int('1') # results with 2
Beginner friendly :) : 파이썬의 구문과 구조는 매우 직관적입니다. 높은 수준이며 크고 작은 규모의 명확한 프로그램을 작성할 수있는 구조를 제공합니다. Python은 객체 지향, 명령형 및 함수형 프로그래밍 또는 절차 스타일을 비롯한 여러 프로그래밍 패러다임을 지원합니다. 그것은 크고 포괄적 인 표준 라이브러리와 많은 설치하기 쉬운 타사 라이브러리를 가지고 있습니다.
디자인 원칙은 The Zen of Python에 요약되어 있습니다.
현재, Python의 두 가지 주요 릴리스 분기가 있는데 여기에는 몇 가지 중요한 차이점이 있습니다. Python 2.x는 여전히 널리 사용되고 있지만 레거시 버전입니다. Python 3.x는 기능 중복을 줄이기 위해 일련의 하위 호환되지 않는 변경을합니다. 어떤 버전이 가장 적합한 지 결정하는 데 도움이 필요하면 이 문서를 참조 하십시오 .
공식 Python 문서 는 포괄적이고 유용한 리소스로, Python의 모든 버전에 대한 문서뿐만 아니라 시작하는 데 도움이되는 자습서가 포함되어 있습니다.
일반적으로 CPython이라고하는 Python.org에서 제공되는 언어의 공식 구현과 다른 런타임 플랫폼에서의 언어의 몇 가지 대체 구현이 있습니다. 여기에는 IronPython (.NET 플랫폼에서 Python 실행), Jython (Java 런타임) 및 PyPy (Python을 자체 하위 집합으로 구현)가 포함됩니다.
버전
Python 3.x
번역 | 출시일 |
---|---|
[3.7] | 2017-05-08 |
3.6 | 2016-12-23 |
3.5 | 2015-09-13 |
3.4 | 2014-03-17 |
3.3 | 2012-09-29 |
3.2 | 2011-02-20 |
3.1 | 2009-06-26 |
3.0 | 2008-12-03 |
Python 2.x
번역 | 출시일 |
---|---|
2.7 | 2010-07-03 |
2.6 | 2008-10-02 |
2.5 | 2006-09-19 |
2.4 | 2004-11-30 |
2.3 | 2003-07-29 |
2.2 | 2001-12-21 |
2.1 | 2001-04-15 |
2.0 | 2000-10-16 |
시작하기
Python은 Guido van Rossum이 1991 년에 처음으로 발표 한 범용 프로그래밍을위한 널리 사용되는 고수준 프로그래밍 언어입니다. Python은 동적 유형 시스템과 자동 메모리 관리 기능을 제공하며 객체 지향, 필수, 함수형 프로그래밍 및 절차 스타일을 제공합니다. 크고 포괄적 인 표준 라이브러리가 있습니다.
두 가지 주요 버전의 Python이 현재 사용 중입니다.
- Python 3.x는 현재 버전이며 현재 개발 중에 있습니다.
- Python 2.x는 레거시 버전이며 2020 년까지 보안 업데이트 만 제공됩니다. 새 기능은 구현되지 않습니다. 파이썬 3으로의 마이그레이션이 점점 쉬워지고 있지만, 많은 프로젝트들이 여전히 파이썬 2를 사용하고 있습니다.
당신은 다운로드하여 파이썬의 두 버전을 설치할 수 있습니다 여기에 . Python 3과 Python 2 를 비교해보십시오. 또한 일부 타사는 일반적으로 사용되는 라이브러리 및 기타 기능을 추가하는 Python의 재 패키징 버전을 제공하여 수학, 데이터 분석 또는 과학적 사용과 같은 일반적인 사용 사례에 대한 설정을 용이하게합니다. 공식 사이트 목록을 참조하십시오.
파이썬이 설치되어 있는지 확인하십시오.
파이썬이 올바르게 설치되었는지 확인하려면, 원하는 터미널에서 다음 명령을 실행하여 확인할 수 있습니다 (Windows OS를 사용하는 경우 명령 프롬프트에서 사용하기 전에 환경 변수에 파이썬 경로를 추가해야합니다).
$ python --version
파이썬 3을 설치했고 기본 버전 인 경우 (자세한 내용은 문제 해결 참조) 다음과 같은 내용이 표시됩니다.
$ python --version
Python 3.6.0
파이썬 2가 설치되어 있고 기본 버전 인 경우 (자세한 내용은 문제 해결 참조) 다음과 같은 내용이 표시됩니다.
$ python --version
Python 2.7.13
파이썬 3을 설치했지만 $ python --version
이 파이썬 2 버전을 출력하면 파이썬 2도 설치됩니다. 이것은 MacOS 및 많은 Linux 배포판에서 종종 발생합니다. 대신 $ python3
사용하여 명시 적으로 Python 3 인터프리터를 사용하십시오.
안녕하세요, IDLE을 사용하는 Python의 세계
IDLE 은 파이썬과 함께 번들로 제공되는 파이썬을위한 간단한 편집기입니다.
IDLE에서 Hello, World 프로그램을 만드는 법
- 선택한 시스템에서 IDLE을 엽니 다.
- 이전 버전의 Windows에서는 Windows 메뉴의
All Programs
에서 찾을 수 있습니다. - Windows 8 이상에서
IDLE
검색하거나 시스템에있는 응용 프로그램에서IDLE
찾으십시오. - Unix 기반 (Mac 포함) 시스템에서는
$ idle python_file.py
를 입력하여 쉘에서 열 수 있습니다.
- 이전 버전의 Windows에서는 Windows 메뉴의
- 상단에 옵션이있는 쉘이 열립니다.
셸에는 세 개의 오른쪽 꺾쇠 괄호가 있습니다.
>>>
이제 프롬프트에 다음 코드를 작성하십시오.
>>> print("Hello, World")
Enter를 누르 십시오 .
>>> print("Hello, World")
Hello, World
Hello World Python 파일
다음 줄이 포함 된 hello.py
파일을 새로 만듭니다.
print('Hello, World')
다음 import
문을 사용하여 Python 2의 Python 3 print
함수를 사용할 수 있습니다.
from __future__ import print_function
파이썬 2는 여기서 논의 된 것처럼 __future__
모듈을 사용하여 파이썬 3에서 선택적으로 가져올 수있는 많은 기능들을 가지고 있습니다.
파이썬 2를 사용하는 경우 아래 줄을 입력 할 수도 있습니다. 이것은 Python 3에서 유효하지 않으므로 교차 버전 코드 호환성을 줄이므로 권장하지 않습니다.
print 'Hello, World'
터미널에서 hello.py
파일이있는 디렉토리로 이동합니다.
python hello.py
입력 한 다음 Enter 키를 누릅니다.
$ python hello.py
Hello, World
Hello, World
가 콘솔에 인쇄되어 있어야합니다.
hello.py
를 파일의 경로로 대체 할 수도 있습니다. 예를 들어, 홈 디렉토리에 파일이 있고 Linux에서 사용자가 "user"이면 python /home/user/hello.py
입력 할 수 있습니다.
대화 형 Python 셸 시작
터미널에서 python
명령을 실행 (실행)하면 대화 형 Python 셸이 표시됩니다. 이것은 Python 인터프리터 또는 REPL ( 'Read Evaluate Print Loop'용)으로 알려져 있습니다.
$ python
Python 2.7.12 (default, Jun 28 2016, 08:46:01)
[GCC 6.1.1 20160602] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Hello, World'
Hello, World
>>>
터미널에서 Python 3을 실행하려면 python3
명령을 실행하십시오.
$ python3
Python 3.6.0 (default, Jan 13 2017, 00:00:00)
[GCC 6.1.1 20160602] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('Hello, World')
Hello, World
>>>
또는 대화식 프롬프트를 시작하고 python -i <file.py>
하여 파일을로드하십시오.
명령 줄에서 다음을 실행합니다.
$ python -i hello.py
"Hello World"
>>>
파이썬 셸을 닫는 방법에는 여러 가지가 있습니다.
>>> exit()
또는
>>> quit()
또는 Ctrl + D 키 를 눌러 쉘을 닫고 터미널의 명령 줄에 다시 넣습니다.
인터프리터 셸에있는 동안 입력중인 명령을 취소하고 정리 명령 프롬프트로 돌아가 려면 CTRL + C를 사용하십시오 .
상호 작용하는 파이썬 셸을 온라인으로 사용해보십시오 .
기타 온라인 셸
다양한 웹 사이트가 파이썬 셸에 대한 온라인 액세스를 제공합니다.
온라인 셸은 다음과 같은 목적에 유용 할 수 있습니다.
- Python 설치가없는 컴퓨터 (스마트 폰, 태블릿 등)에서 작은 코드 스 니펫을 실행하십시오.
- 기본 파이썬을 배우거나 가르칩니다.
- 온라인 판사 문제를 해결하십시오.
예 :
면책 조항 : 문서 작성자는 아래 나열된 리소스와 관련이 없습니다.
- https://www.python.org/shell/ - 공식 파이썬 웹 사이트에서 호스팅하는 온라인 파이썬 셸.
- https://ideone.com/ - 코드 스 니펫 동작을 설명하기 위해 인터넷에서 널리 사용됩니다.
- https://repl.it/languages/python3 - 강력하고 간단한 온라인 컴파일러, IDE 및 인터프리터. 파이썬에서 코드를 작성, 컴파일 및 실행합니다.
- https://www.tutorialspoint.com/execute_python_online.php - 모든 기능을 갖춘 UNIX 셸 및 사용자 친화적 인 프로젝트 탐색기.
- http://rextester.com/l/python3_online_compiler - 실행 시간을 보여주는 간단하고 사용하기 쉬운 IDE
명령을 문자열로 실행
파이썬은 임의의 코드를 셸의 문자열로 전달할 수 있습니다.
$ python -c 'print("Hello, World")'
Hello, World
이것은 셸에서 스크립트의 결과를 함께 연결할 때 유용 할 수 있습니다.
껍질과 그 너머
패키지 관리 - Python 패키지를 설치하기위한 PyPA 권장 도구는 PIP 입니다. 설치하려면 명령 줄에 pip install <the package name>
. 예를 들어, pip install numpy
. (참고 : 윈도우에서는 PATH 환경 변수에 pip를 추가해야합니다.이를 방지하려면 python -m pip install <the package name>
).
셸 - 지금까지 파이썬의 네이티브 대화 형 셸을 사용하여 코드를 실행하는 여러 가지 방법에 대해 살펴 보았습니다. 쉘은 코드를 실시간으로 실험하기 위해 파이썬의 해석력을 사용합니다. 대체 쉘은 IDLE - 사전 번들 GUI, IPython - 대화식 경험을 확장시키는 것으로 알려져 있습니다.
프로그램 - 장기 저장을 위해 콘텐츠를 .py 파일로 저장하고 쉘, IDE (예 : PyCharm ), 주피터 (Jupyter) 노트북 등의 외부 도구로 스크립트 또는 프로그램으로 편집 / 실행 할 수 있습니다. 그러나 여기서 설명한 방법은 시작하기에 충분합니다.
Python 교사 는 Python 코드를 단계별로 실행할 수 있으므로 프로그램이 어떻게 진행되는지 시각화 할 수 있고 프로그램이 잘못 된 부분을 이해하는 데 도움이됩니다.
PEP8 은 파이썬 코드 포맷에 대한 지침을 정의합니다. 코드의 형식을 잘 지정하면 코드의 내용을 빠르게 읽을 수 있으므로 중요합니다.
변수 생성 및 값 지정
파이썬에서 변수를 만들려면 변수 이름을 지정한 다음 값을 할당하면됩니다.
<variable name> = <value>
파이썬은 변수에 값을 할당하기 위해 =
를 사용합니다. 미리 변수를 선언하거나 (데이터 유형을 할당 할 필요가 없음), 변수 자체에 값을 할당하면 그 값으로 변수가 선언되고 초기화됩니다. 변수에 초기 값을 지정하지 않고 변수를 선언 할 방법이 없습니다.
# Integer
a = 2
print(a)
# Output: 2
# Integer
b = 9223372036854775807
print(b)
# Output: 9223372036854775807
# Floating point
pi = 3.14
print(pi)
# Output: 3.14
# String
c = 'A'
print(c)
# Output: A
# String
name = 'John Doe'
print(name)
# Output: John Doe
# Boolean
q = True
print(q)
# Output: True
# Empty value or null data type
x = None
print(x)
# Output: None
변수 할당은 왼쪽에서 오른쪽으로 작동합니다. 그래서 다음은 당신에게 구문 오류를 줄 것이다.
0 = x
=> Output: SyntaxError: can't assign to literal
파이썬의 키워드를 유효한 변수 이름으로 사용할 수 없습니다. 다음과 같은 방법으로 키워드 목록을 볼 수 있습니다.
import keyword
print(keyword.kwlist)
변수 명명 규칙 :
- 변수 이름은 문자 또는 밑줄로 시작해야합니다.
x = True # valid
_y = True # valid
9x = False # starts with numeral
=> SyntaxError: invalid syntax
$y = False # starts with symbol
=> SyntaxError: invalid syntax
- 변수 이름의 나머지 부분은 문자, 숫자 및 밑줄로 구성 될 수 있습니다.
has_0_in_it = "Still Valid"
- 이름은 대소 문자를 구분합니다.
x = 9
y = X*5
=>NameError: name 'X' is not defined
파이썬에서 변수를 선언 할 때 데이터 유형을 지정할 필요가 없지만 메모리에 필요한 영역을 변수에 할당하면 파이썬 인터프리터는 자동으로 가장 적합한 내장 유형 을 선택합니다.
a = 2
print(type(a))
# Output: <type 'int'>
b = 9223372036854775807
print(type(b))
# Output: <type 'int'>
pi = 3.14
print(type(pi))
# Output: <type 'float'>
c = 'A'
print(type(c))
# Output: <type 'str'>
name = 'John Doe'
print(type(name))
# Output: <type 'str'>
q = True
print(type(q))
# Output: <type 'bool'>
x = None
print(type(x))
# Output: <type 'NoneType'>
이제 배정의 기본 사항을 알았으므로 파이썬에서 배정에 대해이 미묘한 부분을 알아 보도록하겠습니다.
당신이 사용하는 경우 =
할당 작업을 수행하는, 무엇 왼쪽의 =
오른쪽에있는 개체의 이름입니다. 마지막으로, 무엇을 =
수행하면 왼쪽에 이름 오른쪽에있는 객체의 참조를 지정합니다.
그건:
a_name = an_object # "a_name" is now a name for the reference to the object "an_object"
우리가 선택한다면, 위의 여러 과제의 예에서, pi = 3.14
, 다음 pi
개체에 대한 (객체가 여러 이름을 가질 수 있기 때문에, 이름이 아닌)의 이름입니다 3.14
. 아래 내용을 이해하지 못하면이 지점으로 돌아와서 다시 읽으십시오! 또한 더 나은 이해를 위해이 부분 을 살펴볼 수 있습니다.
하나의 행에서 여러 변수에 여러 값을 지정할 수 있습니다. =
연산자의 오른쪽과 왼쪽에 같은 수의 인수가 있어야합니다.
a, b, c = 1, 2, 3
print(a, b, c)
# Output: 1 2 3
a, b, c = 1, 2
=> Traceback (most recent call last):
=> File "name.py", line N, in <module>
=> a, b, c = 1, 2
=> ValueError: need more than 2 values to unpack
a, b = 1, 2, 3
=> Traceback (most recent call last):
=> File "name.py", line N, in <module>
=> a, b = 1, 2, 3
=> ValueError: too many values to unpack
마지막 예제의 오류는 남은 값을 동일한 수의 임의 변수에 할당하여 제거 할 수 있습니다. 이 더미 변수는 임의의 이름을 가질 수 있지만 원하지 않는 값을 할당 할 때는 밑줄 ( _
)을 사용하는 것이 일반적입니다.
a, b, _ = 1, 2, 3
print(a, b)
# Output: 1, 2
나머지 값의 수와 수는 동일해야합니다. 그렇지 않으면 위와 같이 '너무 많은 값을 압축 해제하는 값'이 발생합니다.
a, b, _ = 1,2,3,4
=>Traceback (most recent call last):
=>File "name.py", line N, in <module>
=>a, b, _ = 1,2,3,4
=>ValueError: too many values to unpack (expected 3)
하나의 값을 여러 변수에 동시에 할당 할 수도 있습니다.
a = b = c = 1
print(a, b, c)
# Output: 1 1 1
이러한 계단식 할당을 사용할 때는 세 변수 a
, b
및 c
가 모두 메모리에있는 동일한 객체 ( 값 1 인 int
객체)를 참조한다는 점에 유의해야합니다. 즉, a
, b
및 c
는 세 가지 다른 이름입니다 같은 int 오브젝트에 지정됩니다. 나중에 다른 개체를 할당해도 예상대로 다른 개체는 변경되지 않습니다.
a = b = c = 1 # all three names a, b and c refer to same int object with value 1
print(a, b, c)
# Output: 1 1 1
b = 2 # b now refers to another int object, one with a value of 2
print(a, b, c)
# Output: 1 2 1 # so output is as expected.
위의 내용은 int
, string
, tuple
등과 같이 변경할 수없는 유형의 경우와 마찬가지로 변경 가능한 유형 ( list
, dict
등)에도 적용됩니다.
x = y = [7, 8, 9] # x and y refer to the same list object just created, [7, 8, 9]
x = [13, 8, 9] # x now refers to a different list object just created, [13, 8, 9]
print(y) # y still refers to the list it was first assigned
# Output: [7, 8, 9]
여태까지는 그런대로 잘됐다. 계단식 할당이 변경 가능한 유형에 사용되는 경우 객체를 수정 하는 경우 (위에서 설명한 다른 객체에 이름을 할당 하는 것과는 대조적으로) 상황이 조금 다릅니다. 아래를 보시면 직접 볼 수 있습니다.
x = y = [7, 8, 9] # x and y are two different names for the same list object just created, [7, 8, 9]
x[0] = 13 # we are updating the value of the list [7, 8, 9] through one of its names, x in this case
print(y) # printing the value of the list using its other name
# Output: [13, 8, 9] # hence, naturally the change is reflected
중첩 목록은 파이썬에서도 유효합니다. 즉, 목록에 다른 목록을 요소로 포함 할 수 있습니다.
x = [1, 2, [3, 4, 5], 6, 7] # this is nested list
print x[2]
# Output: [3, 4, 5]
print x[2][1]
# Output: 4
마지막으로, Python의 변수는 처음 정의 된 것과 동일한 유형을 유지할 필요가 없습니다. 변수에 새로운 값을 할당하려면 값을 다른 유형으로 지정해도 간단히 =
를 사용할 수 있습니다.
a = 2
print(a)
# Output: 2
a = "New value"
print(a)
# Output: New value
이것이 당신을 괴롭히는 경우, =
의 왼쪽에있는 것은 사실 객체에 대한 이름 일 뿐이라는 사실을 생각해보십시오. 먼저 당신이 전화 int
값 2와 객체 a
, 당신은 당신의 마음을 변경하고 이름을 부여하기로 결정 a
A와 string
값 '새로운 가치'를 가진 객체. 간단 하죠?
사용자 입력
대화 형 입력
사용자로부터 입력을 얻으려면 input
함수를 사용하십시오 ( 참고 : Python 2.x에서는 함수 대신 raw_input
함수가 사용됩니다. Python 2.x에는 완전히 다른 input
이 있습니다).
name = raw_input("What is your name? ")
# Out: What is your name? _
보안 참고 사항 Python2에서
input()
을 사용하지 마십시오 - 입력 된 텍스트는 Python 표현식 (Python3의eval(input())
과 동일하게eval(input())
됩니다. 이는 쉽게 취약점이 될 수 있습니다. 이 기능을 사용할 때의 위험에 대한 자세한 내용은 이 기사 를 참조하십시오.
name = input("What is your name? ")
# Out: What is your name? _
이 예제의 나머지 부분에서는 Python 3 구문을 사용합니다.
이 함수는 문자열 인수를 사용하여이를 프롬프트로 표시하고 문자열을 반환합니다. 위 코드는 사용자가 입력을 기다리는 프롬프트를 제공합니다.
name = input("What is your name? ")
# Out: What is your name?
사용자가 "Bob"을 입력하고 Enter 키를 누르면 변수 name
이 문자열 "Bob"
할당됩니다.
name = input("What is your name? ")
# Out: What is your name? Bob
print(name)
# Out: Bob
input
은 항상 유형 str
이며 사용자가 숫자를 입력하게하려는 경우 중요합니다. 따라서 숫자로 사용하기 전에 str
을 변환해야합니다.
x = input("Write a number:")
# Out: Write a number: 10
x / 2
# Out: TypeError: unsupported operand type(s) for /: 'str' and 'int'
float(x) / 2
# Out: 5.0
주의 : try
/ except
블록 을 사용 하여 사용자 입력을 처리 할 때 예외 를 잡는 것이 좋습니다. 예를 들어, 코드가 raw_input
을 int
로 변환하려고하고 사용자가 작성한 내용이 캐스팅되지 않으면 ValueError
합니다.
IDLE - Python GUI
IDLE은 Python의 통합 개발 및 학습 환경이며 명령 행의 대안입니다. 이름에서 알 수 있듯이 IDLE은 새로운 코드를 개발하거나 파이썬을 배우는 데 매우 유용합니다. Windows에서는 파이썬 인터프리터가 제공되지만 다른 운영 체제에서는 패키지 관리자를 통해 설치해야 할 수도 있습니다.
IDLE의 주요 목적은 다음과 같습니다.
- 구문 강조, 자동 완성 및 스마트 들여 쓰기 기능이있는 다중 창 텍스트 편집기
- 구문 강조가있는 파이썬 셸
- 스테핑, 영구 중단 점 및 호출 스택 가시성이있는 통합 디버거
- 자동 들여 쓰기 (초보자가 파이썬의 들여 쓰기에 대해 배우는 데 유용함)
- Python 프로그램을 .py 파일로 저장하고 실행 한 다음 나중에 IDLE을 사용하여 편집합니다.
유휴 상태에서 F5
누르거나 run Python Shell
을 실행하여 인터프리터를 시작하십시오. IDLE을 사용하면 사용자가 작성하는대로 코드가 해석되므로 새로운 사용자에게 더 나은 학습 경험이 될 수 있습니다.
많은 대안이 있음을 유의하십시오. 예를 들어이 토론이나이 목록을보십시오 .
문제 해결
Windows
Windows 사용자 인 경우 기본 명령은
python
입니다. 당신이받는 경우"'python' is not recognized"
오류가 가장 큰 원인은 파이썬의 위치는 시스템의에되지 않는 것입니다PATH
환경 변수. '내 컴퓨터'를 마우스 오른쪽 버튼으로 클릭하고 '속성'을 선택하거나 '제어판'을 통해 '시스템'으로 이동하여 액세스 할 수 있습니다. '고급 시스템 설정'을 클릭 한 다음 '환경 변수 ...'를 클릭하십시오.PATH
변수를 편집하여 Python 설치 디렉토리와 스크립트 폴더 (일반적으로C:\Python27;C:\Python27\Scripts
)를 포함C:\Python27;C:\Python27\Scripts
. 이렇게하려면 관리자 권한이 필요하며 다시 시작해야 할 수 있습니다.동일한 컴퓨터에서 여러 버전의 Python을 사용할 때 가능한 해결책은
python.exe
파일 중 하나의 이름을 바꾸는 것입니다. 예를 들어, 한 버전의python27.exe
지정하면python27
이 해당 버전의 Python 명령이됩니다.Windows 용 Python Launcher를 사용할 수도 있습니다.이 런처는 설치 프로그램을 통해 사용할 수 있으며 기본적으로 제공됩니다.
python[xy]
대신py -[xy]
를 사용하여 실행할 Python 버전을 선택할 수 있습니다.py -2
스크립트를 실행하고py -3
스크립트를 실행하여 최신 버전의 Python 3을 사용하여 최신 버전의 Python 2를 사용할 수 있습니다.
데비안 / 우분투 / MacOS
이 절에서는
python
실행 파일의 위치가PATH
환경 변수에 추가되었다고 가정합니다.데비안 / 우분투 / 맥 OS에 있다면, 터미널 및 유형의 열
python
파이썬 2.x 또는에 대한python3
파이썬 3.x에 대한을which python
이 어느 파이썬 인터프리터가 사용될 것인지which python
는 타입which python
입력하십시오.
아치 리눅스
Arch Linux (및 자손)의 기본 Python은 Python 3이므로 Python 3.x에서는
python
또는python3
을, Python 2.x에서는python2
를 사용하십시오.
기타 시스템
파이썬 3 때때로 수밖에 없다
python
대신python3
. Python 2가 설치된 시스템에서 Python 2를 사용하려면python2
를 사용할 수있다.
데이터 유형
내장형
부울
bool
: True
또는 False
의 부울 값입니다. 논리 연산 좋아 and
, or
, not
부울 수행 할 수 있습니다.
x or y # if x is False then y otherwise x
x and y # if x is False then x otherwise y
not x # if x is True then False, otherwise True
파이썬 2.x와 파이썬 3.x에서 부울은 또한 int
입니다. bool
유형은 int
유형의 서브 클래스이고 True
와 False
만이 유일한 인스턴스입니다.
issubclass(bool, int) # True
isinstance(True, bool) # True
isinstance(False, bool) # True
부울 값이 산술 연산에 사용되면 정수 값 ( True
및 False
1
과 0
)이 정수 결과를 반환하는 데 사용됩니다.
True + False == 1 # 1 + 0 == 1
True * True == 1 # 1 * 1 == 1
번호
int
: 정수a = 2 b = 100 c = 123456789 d = 38563846326424324
파이썬의 정수는 임의의 크기입니다.
참고 : 이전 버전의 Python에서는
long
형식을 사용할 수 있었고 이는int
와 다릅니다. 이 둘은 통합되었습니다.float
: 부동 소수점 숫자. 정밀도는 구현 및 시스템 아키텍처에 따라 다르며 CPython의 경우float
데이터 유형이 C double에 해당합니다.a = 2.0 b = 100.e0 c = 123456789.e1
complex
: 복소수a = 2 + 1j b = 100 + 10j
<
, <=
, >
및 >=
연산자는 피연산자가 복소수 일 때 TypeError
예외를 발생시킵니다.
문자열
-
str
: 유니 코드 문자열 .'hello'
유형 -
bytes
: 바이트 문자열 .b'hello'
의 유형
-
str
: 바이트 문자열 .'hello'
유형 -
bytes
:str
동의어 -
unicode
: 유니 코드 문자열 입니다.u'hello'
의 유형
시퀀스 및 컬렉션
파이썬은 정렬 된 시퀀스와 정렬되지 않은 컬렉션 (예 : set
및 dict
)을 구별합니다.
문자열 (
str
,bytes
,unicode
)은 시퀀스입니다.reversed
: 역순으로 된str
reversed
a = reversed('hello')
tuple
: 임의의 타입의n
값을 순서대로 모아 놓은 것 (n >= 0
).a = (1, 2, 3) b = ('a', 1, 'python', (1, 2)) b[2] = 'something else' # returns a TypeError
색인 생성을 지원합니다. 불변; 모든 멤버가 해시 가능의 경우 해시 가능
list
:n
값의 정렬 된 콜렉션 (n >= 0
)a = [1, 2, 3] b = ['a', 1, 'python', (1, 2), [1, 2]] b[2] = 'something else' # allowed
해시 가능하지 않음. 변하기 쉬운.
set
: 고유 한 값의 정렬되지 않은 컬렉션. 항목은 해시 가능 해야합니다.a = {1, 2, 'a'}
dict
: 고유 한 키 - 값 쌍의 정렬되지 않은 콜렉션. 키는 해시 가능 해야합니다.a = {1: 'one', 2: 'two'} b = {'a': [1, 2, 3], 'b': 'a string'}
객체가 수명 동안 변경되지 않는 해시 값 (
__hash__()
메서드가__hash__()
)이 있고 다른 객체 (__eq__()
메서드가__eq__()
와 비교할 수있는__eq__()
객체입니다. 평등을 비교하는 해시 가능 객체는 동일한 해시 값을 가져야합니다.
내장 상수
내장 데이터 유형과 함께 내장 된 이름 공간에는 소수의 내장 상수가 있습니다.
-
True
: 내장 유형bool
의 참 값 -
False
: 내장 유형bool
의 거짓 값 -
None
: 값이 없음을 알리는 데 사용되는 싱글 톤 객체입니다. -
Ellipsis
또는...
: 코어 표기법 Python3 + 어디서나 사용되며 Python2.7에서는 배열 표기법의 일부로 제한적으로 사용됩니다.numpy
및 관련 패키지는 이것을 배열의 '모두 포함'참조로 사용합니다. -
NotImplemented
: 특수 메소드가 특정 인수를 지원하지 않는다는 것을 파이썬에 알려주는 데 사용되는 싱글 톤이며, 파이썬은 가능한 경우 대안을 시도합니다.
a = None # No value will be assigned. Any valid datatype can be assigned later
None
자연 순서가 없습니다. 순서 비교 연산자 ( <
, <=
, >=
, >
)는 더 이상 지원되지 않으며 TypeError
시킵니다.
None
은 항상 임의의 숫자보다 작습니다 ( None < -32
는 True
평가됩니다).
변수 유형 테스트
파이썬에서는 내장 함수 type
사용하여 객체의 데이터 유형을 확인할 수 있습니다.
a = '123'
print(type(a))
# Out: <class 'str'>
b = 123
print(type(b))
# Out: <class 'int'>
조건문에서는 isinstance
데이터 유형을 테스트 할 수 있습니다. 그러나 일반적으로 변수 유형에 의존하지 않는 것이 좋습니다.
i = 7
if isinstance(i, int):
i += 1
elif isinstance(i, str):
i = int(i)
i += 1
type()
과 isinstance()
사이의 차이점에 대한 정보 는 Python의 isinstance와 type의 차이점을 참조하십시오 .
NoneType
인지 테스트하려면 다음을 수행하십시오.
x = None
if x is None:
print('Not a surprise, I just defined x as None.')
데이터 유형 간의 변환
명시 적 데이터 유형 변환을 수행 할 수 있습니다.
예를 들어, '123'은 str
타입이고 int
함수를 사용하여 정수로 변환 될 수 있습니다.
a = '123'
b = int(a)
float
함수를 사용하여 '123.456'과 같은 float 문자열을 변환 할 수 있습니다.
a = '123.456'
b = float(a)
c = int(a) # ValueError: invalid literal for int() with base 10: '123.456'
d = int(b) # 123
시퀀스 또는 컬렉션 유형을 변환 할 수도 있습니다.
a = 'hello'
list(a) # ['h', 'e', 'l', 'l', 'o']
set(a) # {'o', 'e', 'l', 'h'}
tuple(a) # ('h', 'e', 'l', 'l', 'o')
리터럴 정의시 명시 적 문자열 유형
따옴표 바로 앞에 하나의 문자 레이블을 지정하면 정의하려는 문자열의 유형을 알 수 있습니다.
-
b'foo bar'
: 파이썬 3의 결과bytes
, 파이썬 2의str
-
u'foo bar'
: 파이썬 3의 결과str
, 파이썬 2의unicode
-
'foo bar'
: 결과str
-
r'foo bar'
: 특수 문자를 이스케이프 처리 할 필요가없는 원시 문자열이라고하는 결과는 사용자가 입력 한 모든 내용이 그대로 취해진 것입니다.
normal = 'foo\nbar' # foo
# bar
escaped = 'foo\\nbar' # foo\nbar
raw = r'foo\nbar' # foo\nbar
변경 가능하고 변경 불가능한 데이터 유형
객체는 변경할 수 있으면 변경 가능 이라고합니다. 예를 들어, 일부 함수에 목록을 전달하면 목록을 변경할 수 있습니다.
def f(m):
m.append(3) # adds a number to the list. This is a mutation.
x = [1, 2]
f(x)
x == [1, 2] # False now, since an item was added to the list
어떤 방법 으로든 변경할 수없는 경우 개체는 불변 이라고합니다. 예를 들어 정수는 변경할 수 없으므로 변경할 수 없습니다.
def bar():
x = (1, 2)
g(x)
x == (1, 2) # Will always be True, since no function can change the object (1, 2)
변수 자체는 변경 가능하므로 변수 x
재 지정할 수는 있지만 x
가 이전에 지적한 객체는 변경되지 않습니다. 단지 x
가 새로운 객체를 가리키게 만들었습니다.
인스턴스가 변경 가능한 데이터 유형 은 변경 가능한 데이터 유형 이라고하며, 변경 불가능한 오브젝트 및 데이터 유형의 경우도 마찬가지입니다.
불변의 데이터 형의 예 :
-
int
,long
,float
,complex
-
str
-
bytes
-
tuple
-
frozenset
변경 가능한 데이터 유형의 예 :
-
bytearray
-
list
-
set
-
dict
내장 모듈과 함수
모듈은 파이썬 정의와 문장을 담고있는 파일이다. 함수는 어떤 논리를 실행하는 코드 조각입니다.
>>> pow(2,3) #8
파이썬에서 내장 함수를 검사하기 위해 dir().
사용할 수 있습니다 dir().
인수없이 호출 된 경우 현재 범위에서 이름을 반환합니다. 그 이외의 경우, 지정된 객체의 속성과 그 속성으로부터 도달 가능한 속성의 일부를 구성하는 알파벳순의리스트를 돌려줍니다.
>>> dir(__builtins__)
[
'ArithmeticError',
'AssertionError',
'AttributeError',
'BaseException',
'BufferError',
'BytesWarning',
'DeprecationWarning',
'EOFError',
'Ellipsis',
'EnvironmentError',
'Exception',
'False',
'FloatingPointError',
'FutureWarning',
'GeneratorExit',
'IOError',
'ImportError',
'ImportWarning',
'IndentationError',
'IndexError',
'KeyError',
'KeyboardInterrupt',
'LookupError',
'MemoryError',
'NameError',
'None',
'NotImplemented',
'NotImplementedError',
'OSError',
'OverflowError',
'PendingDeprecationWarning',
'ReferenceError',
'RuntimeError',
'RuntimeWarning',
'StandardError',
'StopIteration',
'SyntaxError',
'SyntaxWarning',
'SystemError',
'SystemExit',
'TabError',
'True',
'TypeError',
'UnboundLocalError',
'UnicodeDecodeError',
'UnicodeEncodeError',
'UnicodeError',
'UnicodeTranslateError',
'UnicodeWarning',
'UserWarning',
'ValueError',
'Warning',
'ZeroDivisionError',
'__debug__',
'__doc__',
'__import__',
'__name__',
'__package__',
'abs',
'all',
'any',
'apply',
'basestring',
'bin',
'bool',
'buffer',
'bytearray',
'bytes',
'callable',
'chr',
'classmethod',
'cmp',
'coerce',
'compile',
'complex',
'copyright',
'credits',
'delattr',
'dict',
'dir',
'divmod',
'enumerate',
'eval',
'execfile',
'exit',
'file',
'filter',
'float',
'format',
'frozenset',
'getattr',
'globals',
'hasattr',
'hash',
'help',
'hex',
'id',
'input',
'int',
'intern',
'isinstance',
'issubclass',
'iter',
'len',
'license',
'list',
'locals',
'long',
'map',
'max',
'memoryview',
'min',
'next',
'object',
'oct',
'open',
'ord',
'pow',
'print',
'property',
'quit',
'range',
'raw_input',
'reduce',
'reload',
'repr',
'reversed',
'round',
'set',
'setattr',
'slice',
'sorted',
'staticmethod',
'str',
'sum',
'super',
'tuple',
'type',
'unichr',
'unicode',
'vars',
'xrange',
'zip'
]
함수의 기능을 알기 위해 내장 된 함수 help
사용할 수 있습니다.
>>> help(max)
Help on built-in function max in module __builtin__:
max(...)
max(iterable[, key=func]) -> value
max(a, b, c, ...[, key=func]) -> value
With a single iterable argument, return its largest item.
With two or more arguments, return the largest argument.
내장 모듈에는 추가 기능이 있습니다. 예를 들어 숫자의 제곱근을 얻으려면 math
모듈을 포함해야합니다.
>>> import math
>>> math.sqrt(16) # 4.0
모듈의 모든 함수를 알기 위해 함수 목록을 변수에 할당 한 다음 변수를 인쇄 할 수 있습니다.
>>> import math
>>> dir(math)
['__doc__', '__name__', '__package__', 'acos', 'acosh',
'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign',
'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1',
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma',
'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10',
'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt',
'tan', 'tanh', 'trunc']
__doc__
은 함수에 몇 가지 문서를 제공하는 데 유용합니다.
>>> math.__doc__
'This module is always available. It provides access to the\nmathematical
functions defined by the C standard.'
기능 외에도 설명서가 모듈로 제공 될 수도 있습니다. 그래서 helloWorld.py
라는 파일을 다음과 같이 작성했다면 :
"""This is the module docstring."""
def sayHello():
"""This is the function docstring."""
return 'Hello World'
다음과 같이 docstring에 액세스 할 수 있습니다.
>>> import helloWorld
>>> helloWorld.__doc__
'This is the module docstring.'
>>> helloWorld.sayHello.__doc__
'This is the function docstring.'
- 모든 사용자 정의 유형, 속성, 클래스의 속성 및 재귀 적으로 클래스의 기본 클래스의 속성은 dir ()을 사용하여 검색 할 수 있습니다.
>>> class MyClassObject(object):
... pass
...
>>> dir(MyClassObject)
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
모든 데이터 유형은 str
이라는 내장 함수를 사용하여 단순히 문자열로 변환 될 수 있습니다. 이 함수는 데이터 유형이 print
전달 될 때 기본적으로 호출됩니다.
>>> str(123) # "123"
블록 들여 쓰기
파이썬은 들여 쓰기를 사용하여 컨트롤과 루프 구조를 정의합니다. 이것은 파이썬의 가독성에 영향을 미치지 만, 프로그래머는 공백의 사용에 세심한주의를 기울여야합니다. 따라서 편집기 miscalibration은 예기치 않은 방식으로 작동하는 코드를 생성 할 수 있습니다.
(파이썬은 콜론 기호 사용 :
) 코드 블록 시작과 끝 위치를 표시하기위한 들여 쓰기를 (다른 언어에서 오는 경우, 어떻게 든 관련되는와 혼동하지 삼항 연산자 ). 즉, 함수, 루프, if
절 및 기타 구문과 같은 Python의 블록에는 종료 식별자가 없습니다. 모든 블록은 콜론으로 시작하고 그 아래에 들여 쓴 줄을 포함합니다.
예 :
def my_function(): # This is a function definition. Note the colon (:)
a = 2 # This line belongs to the function because it's indented
return a # This line also belongs to the same function
print(my_function()) # This line is OUTSIDE the function block
또는
if a > b: # If block starts here
print(a) # This is part of the if block
else: # else must be at the same level as if
print(b) # This line is part of the else block
이 양식은 일반적으로 좋은 스타일로 간주되지 않지만 정확히 한 줄짜리 문장이 들어있는 블록은 같은 줄에 넣을 수 있습니다.
if a > b: print(a)
else: print(b)
하나 이상의 명령문으로이 작업을 시도하면 작동 하지 않습니다 .
if x > y: y = x
print(y) # IndentationError: unexpected indent
if x > y: while y != z: y -= 1 # SyntaxError: invalid syntax
빈 블록은 IndentationError
발생시킵니다. 내용이없는 블록이있을 때 pass
(아무 것도하지 않는 명령)를 사용하십시오 :
def will_be_implemented_later():
pass
공백 대 탭
즉, 들여 쓰기에는 항상 4 칸을 사용하십시오.
독점적으로 탭을 사용하는 것이 가능하지만 파이썬 코드의 스타일 가이드 인 PEP 8 에서는 공백을 선호합니다.
파이썬 3에서는 들여 쓰기에 탭과 공백을 섞어서 사용하지 못하게합니다. 이 경우 컴파일 타임 오류가 발생합니다. Inconsistent use of tabs and spaces in indentation
하면 프로그램이 실행되지 않습니다.
많은 편집자는 "탭을 공백으로"구성합니다. 편집기를 구성 할 때 탭 문자 ( '\ t')와 Tab 키를 구별해야합니다.
- 적어도 (우발적 인) 혼합 들여 쓰기가 가능한 경우에는 탭 의미 문자 가 언어 의미에 맞게 8 개의 공백을 표시하도록 구성되어야합니다. 편집자는 탭 문자를 공백으로 자동 변환 할 수도 있습니다.
- 그러나 Tab 키를 누르는 대신 탭 문자를 삽입하는 대신 4 개의 공백을 삽입하도록 편집기를 구성하는 것이 도움이 될 수 있습니다.
탭과 공백이 섞인 파이썬 소스 코드 나 비표준 공백 문자들로 작성된 파이썬 소스 코드는 autopep8을 사용하여 pep8을 준수 할 수 있습니다. (덜 강력한 대안은 대부분의 Python 설치와 함께 제공됩니다 : reindent.py )
컬렉션 유형
파이썬에는 많은 콜렉션 유형이 있습니다. int
및 str
과 같은 유형은 단일 값을 보유하지만 콜렉션 유형은 여러 값을 보유합니다.
기울기
list
유형은 아마도 Python에서 가장 일반적으로 사용되는 콜렉션 유형입니다. 그 이름에도 불구하고, 목록은 다른 언어의 배열, 대부분 자바 스크립트와 같습니다. 파이썬에서리스트는 유효한 파이썬 값의 정렬 된 콜렉션 일뿐입니다. 목록을 쉼표로 구분하여 값을 대괄호로 묶어서 만들 수 있습니다.
int_list = [1, 2, 3]
string_list = ['abc', 'defghi']
목록은 비어있을 수 있습니다.
empty_list = []
목록의 요소는 단일 데이터 유형에만 국한되지 않으며 파이썬이 동적 언어라는 점에서 의미가 있습니다.
mixed_list = [1, 'abc', True, 2.34, None]
목록은 다른 목록을 요소로 포함 할 수 있습니다.
nested_list = [['a', 'b', 'c'], [1, 2, 3]]
목록의 요소는 색인 또는 위치의 숫자 표현을 통해 액세스 할 수 있습니다. 파이썬리스트는리스트의 첫 번째 요소는 인덱스 0임을 제로 인덱스 의미하고, 두 번째 요소는 그래서 1 인덱스에있다 :
names = ['Alice', 'Bob', 'Craig', 'Diana', 'Eric']
print(names[0]) # Alice
print(names[2]) # Craig
인덱스는 음수 일 수도 있는데 이는 목록의 끝에서부터 세는 것을 의미합니다 ( -1
은 마지막 요소의 인덱스 임). 위의 예에서 나온 목록을 사용하면 다음과 같습니다.
print(names[-1]) # Eric
print(names[-4]) # Bob
목록은 변경 가능하므로 목록의 값을 변경할 수 있습니다.
names[0] = 'Ann'
print(names)
# Outputs ['Ann', 'Bob', 'Craig', 'Diana', 'Eric']
게다가 목록에서 요소를 추가 및 / 또는 제거 할 수 있습니다.
L.append(object)
하여 목록의 끝에 객체를 추가하고 None
반환합니다.
names = ['Alice', 'Bob', 'Craig', 'Diana', 'Eric']
names.append("Sia")
print(names)
# Outputs ['Alice', 'Bob', 'Craig', 'Diana', 'Eric', 'Sia']
특정 색인에 나열 할 새 요소를 추가하십시오. L.insert(index, object)
names.insert(1, "Nikki")
print(names)
# Outputs ['Alice', 'Nikki', 'Bob', 'Craig', 'Diana', 'Eric', 'Sia']
L.remove(value)
를 사용하여 값의 첫 번째 항목을 제거하고 None
반환합니다.
names.remove("Bob")
print(names) # Outputs ['Alice', 'Nikki', 'Craig', 'Diana', 'Eric', 'Sia']
값이 x 인 첫 번째 항목 목록에서 색인을 가져옵니다. 해당 항목이 없으면 오류가 표시됩니다.
name.index("Alice")
0
목록의 길이 계산
len(names)
6
목록에있는 항목의 발생을 계산하십시오.
a = [1, 1, 1, 2, 3, 4]
a.count(1)
3
목록 역순으로
a.reverse()
[4, 3, 2, 1, 1, 1]
# or
a[::-1]
[4, 3, 2, 1, 1, 1]
L.pop([index])
을 사용하여 색인에서 항목을 제거하고 반환하고 (기본값은 마지막 항목으로 지정) 항목을 반환합니다.
names.pop() # Outputs 'Sia'
다음과 같은 목록 요소를 반복 할 수 있습니다.
for element in my_list:
print (element)
튜플
tuple
은 고정 길이이고 불변 인 것을 제외하고 목록과 유사합니다. 따라서 튜플의 값을 변경하거나 값을 튜플에 추가하거나 튜플에서 제거 할 수 없습니다. 튜플은 일반적으로 IP 주소 및 포트와 같이 값을 변경할 필요가없는 작은 값 집합에 사용됩니다. 튜플은 대괄호 대신 괄호로 표시됩니다.
ip_address = ('10.20.30.40', 8080)
목록에 대한 동일한 색인화 규칙이 튜플에도 적용됩니다. 튜플은 중첩 될 수 있으며 유효한 파이썬 유효한 모든 값이 될 수 있습니다.
단 하나의 멤버를 갖는 튜플은 다음과 같이 정의되어야한다.
one_member_tuple = ('Only member',)
또는
one_member_tuple = 'Only member', # No brackets
또는 tuple
구문을 사용하는 것
one_member_tuple = tuple(['Only member'])
사전
Python dictionary
은 키 - 값 쌍의 모음입니다. 사전은 중괄호로 묶습니다. 각 쌍은 쉼표로 구분되며 키와 값은 콜론으로 구분됩니다. 다음은 그 예입니다.
state_capitals = {
'Arkansas': 'Little Rock',
'Colorado': 'Denver',
'California': 'Sacramento',
'Georgia': 'Atlanta'
}
값을 얻으려면 해당 키를 참조하십시오.
ca_capital = state_capitals['California']
사전의 모든 키를 가져 와서 반복 할 수도 있습니다.
for k in state_capitals.keys():
print('{} is the capital of {}'.format(state_capitals[k], k))
사전은 JSON 구문과 매우 유사합니다. Python 표준 라이브러리의 기본 json
모듈을 사용하여 JSON과 사전 사이를 변환 할 수 있습니다.
세트
set
은 반복이없고 삽입 순서가 없지만 정렬 된 순서의 요소 모음입니다. 그것들은 어떤 것들이 그룹으로 묶여져있는 것이 중요하고 포함 된 순서가 중요하지 않은 상황에서 사용됩니다. 대용량 데이터 그룹의 경우 요소가 set
에 있는지 여부를 확인하는 것이 list
대해 동일한 작업을 수행하는 것보다 훨씬 빠릅니다.
set
을 정의하는 것은 dictionary
을 정의하는 것과 매우 유사합니다.
first_names = {'Adam', 'Beth', 'Charlie'}
또는 기존 list
사용하여 set
를 만들 수 있습니다.
my_list = [1,2,3]
my_set = set(my_list)
의 회원 확인 set
사용 in
:
if name in first_names:
print(name)
리스트와 똑같은 set
반복 할 수 있지만, 값은 임의의 구현 정의 순서로 저장됩니다.
defaultdict
defaultdict
는 키에 대한 기본값이있는 사전이므로 명시 적으로 값이 정의되지 않은 키에 오류없이 액세스 할 수 있습니다. defaultdict
는 새 키가 사용될 때마다 초기화 될 필요가 없다는 의미에서 사전의 값이 콜렉션 (목록, 사전 등) 일 때 특히 유용합니다.
defaultdict
는 KeyError를 발생시키지 않습니다. 존재하지 않는 키는 리턴 된 기본값을 가져옵니다.
예를 들어 다음 사전을 고려하십시오.
>>> state_capitals = {
'Arkansas': 'Little Rock',
'Colorado': 'Denver',
'California': 'Sacramento',
'Georgia': 'Atlanta'
}
존재하지 않는 키에 접근하려고하면, 파이썬은 다음과 같은 에러를 리턴합니다.
>>> state_capitals['Alabama']
Traceback (most recent call last):
File "<ipython-input-61-236329695e6f>", line 1, in <module>
state_capitals['Alabama']
KeyError: 'Alabama'
우리가 defaultdict
시도하자. collections 모듈에서 찾을 수 있습니다.
>>> from collections import defaultdict
>>> state_capitals = defaultdict(lambda: 'Boston')
여기에서 우리가 한 것은 부여 키가 존재하지 않을 경우를 대비하여 기본값 ( 보스톤 )을 설정하는 것입니다. 이전처럼 dict을 채 웁니다.
>>> state_capitals['Arkansas'] = 'Little Rock'
>>> state_capitals['California'] = 'Sacramento'
>>> state_capitals['Colorado'] = 'Denver'
>>> state_capitals['Georgia'] = 'Atlanta'
존재하지 않는 키를 사용하여 dict에 액세스하려고하면 파이썬은 기본값 인 보스턴을 반환합니다.
>>> state_capitals['Alabama']
'Boston'
일반 dictionary
과 마찬가지로 기존 키에 대해 생성 된 값을 반환합니다.
>>> state_capitals['Arkansas']
'Little Rock'
도움말 유틸리티
파이썬에는 인터프리터에 내장 된 몇 가지 기능이 있습니다. 키워드, 기본 제공 함수, 모듈 또는 주제에 대한 정보를 얻으려면 Python 콘솔을 열고 다음을 입력하십시오.
>>> help()
키워드를 직접 입력하여 정보를 받게됩니다.
>>> help(help)
또는 유틸리티 내에서 :
help> help
설명을 보여줄 것입니다 :
Help on _Helper in module _sitebuiltins object:
class _Helper(builtins.object)
| Define the builtin 'help'.
|
| This is a wrapper around pydoc.help that provides a helpful message
| when 'help' is typed at the Python interactive prompt.
|
| Calling help() at the Python prompt starts an interactive help session.
| Calling help(thing) prints help for the python object 'thing'.
|
| Methods defined here:
|
| __call__(self, *args, **kwds)
|
| __repr__(self)
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
모듈의 하위 클래스를 요청할 수도 있습니다.
help(pymysql.connections)
도움말을 사용하여 가져온 다른 모듈의 docstring에 액세스 할 수 있습니다 (예 : 다음을 시도하십시오).
>>> help(math)
그러면 오류가 발생합니다.
>>> import math
>>> help(math)
이제 모듈에서 사용할 수있는 메서드 목록을 가져 오지만 가져온 후에야 가능합니다.
quit
도우미를 닫으십시오.
모듈 만들기
모듈은 정의 및 명령문을 포함하는 importable 파일입니다.
.py
파일을 작성하여 모듈을 작성할 수 있습니다.
# hello.py
def say_hello():
print("Hello!")
모듈의 함수는 모듈을 가져 와서 사용할 수 있습니다.
작성한 모듈의 경우, 가져 오는 파일과 동일한 디렉토리에 있어야합니다. (그러나 사전에 포함 된 모듈을 사용하여 파이썬 lib 디렉토리에 넣을 수도 있지만 가능하면 피해야합니다.)
$ python
>>> import hello
>>> hello.say_hello()
=> "Hello!"
모듈은 다른 모듈에서 가져올 수 있습니다.
# greet.py
import hello
hello.say_hello()
모듈의 특정 기능을 가져올 수 있습니다.
# greet.py
from hello import say_hello
say_hello()
모듈에는 별명을 지정할 수 있습니다.
# greet.py
import hello as ai
ai.say_hello()
모듈은 독립형 실행 스크립트 일 수 있습니다.
# run_hello.py
if __name__ == '__main__':
from hello import say_hello
say_hello()
그것을 실행하십시오!
$ python run_hello.py
=> "Hello!"
모듈이 디렉토리 안에 있고 파이썬에 의해 감지 될 필요가 있다면, 디렉토리는 __init__.py
라는 파일을 포함해야합니다.
문자열 함수 - str () 및 repr ()
객체의 읽기 가능한 표현을 얻는 데 사용할 수있는 두 가지 함수가 있습니다.
repr(x)
호출 x.__repr__()
: x
표현. eval
은 일반적으로이 함수의 결과를 원래 객체로 다시 변환합니다.
str(x)
호출 x.__str__()
: 객체를 설명하는 사람이 읽을 수있는 문자열입니다. 이것은 약간의 기술적 세부 사항을 생략 할 수 있습니다.
repr ()
많은 함수에서이 함수는 eval()
전달 될 때 동일한 값을 가진 객체를 생성하는 문자열을 반환하려고 시도합니다. 그렇지 않으면 표현은 추가 정보와 함께 오브젝트 유형의 이름을 포함하는 꺾쇠 괄호로 묶인 문자열입니다. 여기에는 종종 객체의 이름과 주소가 포함됩니다.
str ()
문자열의 경우 문자열 자체를 반환합니다. this와 repr(object)
의 차이점은 str(object)
이 항상 eval()
허용되는 문자열을 반환하지는 않는다는 것입니다. 오히려 목표는 인쇄 가능한 또는 '사람이 읽을 수있는'문자열을 반환하는 것입니다. 인수를 지정하지 않으면 빈 문자열 인 ''
이 반환됩니다.
예제 1 :
s = """w'o"w"""
repr(s) # Output: '\'w\\\'o"w\''
str(s) # Output: 'w\'o"w'
eval(str(s)) == s # Gives a SyntaxError
eval(repr(s)) == s # Output: True
예 2 :
import datetime
today = datetime.datetime.now()
str(today) # Output: '2016-09-15 06:58:46.915000'
repr(today) # Output: 'datetime.datetime(2016, 9, 15, 6, 58, 46, 915000)'
클래스를 작성할 때이 메소드를 재정 의하여 원하는대로 할 수 있습니다.
class Represent(object):
def __init__(self, x, y):
self.x, self.y = x, y
def __repr__(self):
return "Represent(x={},y=\"{}\")".format(self.x, self.y)
def __str__(self):
return "Representing x as {} and y as {}".format(self.x, self.y)
위의 클래스를 사용하여 결과를 볼 수 있습니다.
r = Represent(1, "Hopper")
print(r) # prints __str__
print(r.__repr__) # prints __repr__: '<bound method Represent.__repr__ of Represent(x=1,y="Hopper")>'
rep = r.__repr__() # sets the execution of __repr__ to a new variable
print(rep) # prints 'Represent(x=1,y="Hopper")'
r2 = eval(rep) # evaluates rep
print(r2) # prints __str__ from new object
print(r2 == r) # prints 'False' because they are different objects
pip를 사용하여 외부 모듈 설치
pip
는 python 패키지 색인 (PyPI)에서 제공되는 다양한 선택 항목 중 패키지를 설치해야하는 경우 친구입니다. python.org>에서 다운로드 한 Python 2> = 2.7.9 또는 Python 3> = 3.4를 사용하는 경우 pip
가 이미 설치되어 있습니다. Linux 또는 다른 패키지 관리자가있는 * nix를 실행하는 컴퓨터의 경우 pip
를 수동으로 설치 해야합니다 .
Python 2와 Python 3이 모두 설치된 인스턴스에서 pip
는 Python 2를 pip3
는 Python 3을 가리 킵니다. pip
를 사용하면 Python 2 용 패키지 만 설치되고 pip3
은 Python 3 용 패키지 만 설치합니다.
패키지 찾기 / 설치
패키지 검색은 타이핑만큼 간단합니다.
$ pip search <query>
# Searches for packages whose name or summary contains <query>
패키지를 설치하는 것은 입력하는 것만 큼 간단합니다 (터미널 / 명령 프롬프트에서, 파이썬 인터프리터에서는 그렇지 않습니다)
$ pip install [package_name] # latest version of the package
$ pip install [package_name]==x.x.x # specific version of the package
$ pip install '[package_name]>=x.x.x' # minimum version of the package
여기서 xxx
는 설치하려는 패키지의 버전 번호입니다.
서버가 프록시를 사용하지 않을 경우 다음 명령을 사용하여 패키지를 설치할 수 있습니다.
$ pip --proxy http://<server address>:<port> install
설치된 패키지 업그레이드
설치된 패키지의 새 버전이 나타나면 시스템에 자동으로 설치되지 않습니다. 설치된 패키지 중 어떤 패키지가 구식인지에 대한 개요를 보려면 다음을 실행하십시오.
$ pip list --outdated
특정 패키지 사용을 업그레이드하려면
$ pip install [package_name] --upgrade
오래된 패키지를 모두 업데이트하는 것은 pip
의 표준 기능이 아닙니다.
핍 업그레이드
다음 명령을 사용하여 기존 pip 설치를 업그레이드 할 수 있습니다.
Linux 또는 MacOS X :
$ pip install -U pip
일부 Linux 시스템에서는
sudo
와 함께 pip를 사용해야 할 수도 있습니다Windows의 경우 :
py -m pip install -U pip
또는
python -m pip install -U pip
핍에 관한 더 자세한 정보는 여기를 읽으십시오 .
Python 2.7.x 및 3.x 설치
참고 : 다음 지시 사항은 Python 2.7 (명시되지 않은 경우) 용으로 작성되었습니다. Python 3.x에 대한 지침은 유사합니다.
WINDOWS
먼저 공식 웹 사이트 ( https://www.python.org/downloads/) 에서 최신 버전의 Python 2.7을 다운로드하십시오. 버전은 MSI 패키지로 제공됩니다. 수동으로 설치하려면 파일을 두 번 클릭하십시오.
기본적으로 Python은 다음 디렉토리에 설치됩니다.
C:\Python27\
경고 : 설치가 PATH 환경 변수를 자동으로 수정하지 않습니다.
파이썬 설치가 C : \ Python27에 있다고 가정하고, 이것을 PATH에 추가하십시오 :
C:\Python27\;C:\Python27\Scripts\
이제 Python 설치가 cmd에서 유효한지 확인하십시오 :
python --version
파이썬 2.x 및 3.x와 나란히
Windows 컴퓨터에서 Python 2.x와 3.x를 나란히 설치하여 사용하려면 다음을 수행하십시오.
MSI 설치 프로그램을 사용하여 Python 2.x를 설치하십시오.
- 모든 사용자를 위해 Python이 설치되었는지 확인하십시오.
- 선택 사항 : Python을
PATH
에 추가하여 Python 2.x를python
사용하여 명령 행에서 호출 가능하도록 만듭니다.
각각의 설치 프로그램을 사용하여 Python 3.x를 설치하십시오.
- 다시 말하지만, 모든 사용자를 위해 Python이 설치되었는지 확인하십시오.
- 선택 사항 : Python을
PATH
에 추가하여 Python 3.x를python
사용하여 명령 행에서 호출 가능하도록 만듭니다. 이것은 파이썬 2.xPATH
설정을 무시할 수 있으므로PATH
를 다시 확인하고 환경 설정에 맞게 구성되었는지 확인하십시오. - 모든 사용자에 대해
py launcher
를 설치하십시오.
Python 3은 Python 2.x 및 Python 3.x를 명령 줄에서 상호 교환하여 실행할 수있는 Python 실행기를 설치합니다.
P:\>py -3
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
C:\>py -2
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:42:59) [MSC v.1500 32 Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
특정 Python 버전에 해당 pip
버전을 사용하려면 다음을 사용하십시오.
C:\>py -3 -m pip -V
pip 9.0.1 from C:\Python36\lib\site-packages (python 3.6)
C:\>py -2 -m pip -V
pip 9.0.1 from C:\Python27\lib\site-packages (python 2.7)
리눅스
CentOS, Fedora, Redhat Enterprise (RHEL) 및 Ubuntu의 최신 버전은 Python 2.7과 함께 제공됩니다.
파이썬 2.7을 수동으로 리눅스에 설치하려면 터미널에서 다음을 수행하십시오 :
wget --no-check-certificate https://www.python.org/ftp/python/2.7.X/Python-2.7.X.tgz
tar -xzf Python-2.7.X.tgz
cd Python-2.7.X
./configure
make
sudo make install
또한 PATH 환경 변수에 새로운 파이썬 경로를 추가하십시오. 새로운 파이썬이 /root/python-2.7.X
있다면 export PATH = $PATH:/root/python-2.7.X
를 실행하십시오 export PATH = $PATH:/root/python-2.7.X
이제 Python 설치가 터미널에 올바른 쓰기인지 확인하십시오 :
python --version
우분투 (출처에서)
파이썬 3.6이 필요하다면 다음과 같이 소스에서 설치할 수 있습니다 (Ubuntu 16.10 및 17.04는 유니버설 저장소에 3.6 버전이 있습니다). 아래의 단계는 우분투 16.04 이하 버전을 따라야합니다.
sudo apt install build-essential checkinstall
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xvf Python-3.6.1.tar.xz
cd Python-3.6.1/
./configure --enable-optimizations
sudo make altinstall
맥 OS
우리가 말했듯이, macOS는 Python 2.7.10과 함께 설치되지만,이 버전은 구형이며 Python에서 약간 수정되었습니다.
OS X와 함께 제공되는 Python 버전은 학습에 적합하지만 개발에는 적합하지 않습니다. OS X와 함께 제공되는 버전은 안정적인 프로덕션 버전으로 간주되는 공식적인 현재 Python 릴리스와 구식 일 수 있습니다. ( 소스 )
Homebrew 설치 :
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Python 2.7 설치 :
brew install python
Python 3.x의 경우 brew install python3
명령을 대신 사용하십시오.