목차
9.1.1 수업 만들기
9.1.2 클래스를 기반으로 인스턴스 만들기
9.2 클래스 및 인스턴스 사용하기
9.2.1 클래스의 초기 값 설정
9.2.2 속성 값 수정
9.2.3 접근 제한
9.3 상속
9.3.1 하위 클래스 메서드 __init__()
9.3.2 하위 클래스의 메서드 및 속성 정의
9.3.3 상위 클래스 재작성
9.3.4 다형성
9.3.5 __slots__ 사용
9.3.6 다중 상속
9.3.7 사용자 정의 클래스
__str__
self.a, self .b = 0, 1 # 두 개의 카운터 초기화 a, b
__getitem__
__Getattr__
__call__
9.3.8 열거형 클래스
9.3.9 Metaclass
type()
metaclass
9.3.10 인스턴스를 속성으로 사용
9.3.11 물리적 객체 시뮬레이션
9.4 클래스 가져오기
9.5 Python 표준 라이브러리(모듈)
random module
datetime은 모듈입니다
일반적으로 사용되는 타사 라이브러리
9.6 클래스 코딩 스타일
백엔드 개발 파이썬 튜토리얼 Python의 기본 학습 소개

Python의 기본 학습 소개

Jul 19, 2017 pm 11:47 PM
python 베이스 요약

 파이썬에서 첫 글자가 대문자인 이름은 클래스를 의미합니다. 이 클래스 정의의 대괄호는 공백에서 이 클래스를 생성하기 때문에 비어 있습니다. 우리는 이 클래스의 기능을 설명하는 독스트링을 작성했습니다. 클래스의 함수를 메서드라고 합니다.

Student 클래스를 예로 들어 보겠습니다. Python에서 클래스 정의는 class 키워드를 통해 이루어집니다.

class Student(객체):

pass

클래스 뒤에는 즉, Student의 경우 클래스 이름은 일반적으로 대문자로 시작하고 그 뒤에 (object)가 오는 단어로 구성되며 일반적으로 적합한 상속 클래스가 없는 경우 객체 클래스를 사용합니다. 이것이 결국 상속된 클래스가 수행하는 작업입니다.

9.1.1 수업 만들기

class 학생(객체):

def __init__(self, name, Score):

self.name = name

self.score = 점수

 1. __init__() 메서드는 특별한 메서드입니다. Python은 새 인스턴스가 생성될 때 자동으로 실행합니다. 시작과 끝에 두 개의 밑줄이 있습니다. 이는 Python 기본 메서드와 일반 메서드 간의 이름 충돌을 피하기 위해 고안된 규칙입니다. 이 방법의 정의에서 형식 매개변수 self는 필수이며 다른 형식 매개변수 앞에 위치해야 합니다.

  2. 클래스와 연결된 각 메서드 호출은 인스턴스 자체에 대한 참조인 실제 매개변수 self를 자동으로 전달하여 인스턴스가 클래스의 속성과 메서드에 액세스할 수 있도록 합니다. self는 자동으로 전달되므로 전달할 필요가 없습니다.

 3. self 접두사가 붙은 변수는 클래스의 모든 메서드에서 사용할 수 있으며 클래스의 모든 인스턴스를 통해 이러한 변수에 액세스할 수도 있습니다.

 4.self.name= name 이와 같이 인스턴스를 통해 접근할 수 있는 변수를 속성이라고 합니다

  5. 객체지향 프로그래밍의 중요한 특징은 데이터 캡슐화입니다. 클래스 내부의 데이터에 액세스하기 위한 함수를 직접 정의하여 "데이터"를 캡슐화할 수 있습니다. 이러한 데이터를 캡슐화하는 함수는 Student 클래스 자체와 연결되어 있으며, 이를 클래스의 메서드라고 합니다.

9.1.2 클래스를 기반으로 인스턴스 만들기

일반적으로 대문자(예: Dog)가 포함된 이름을 다음과 같이 생각할 수 있습니다. 참조하는 것은 클래스를 참조하는 반면 소문자 이름(예: my_dog)은 클래스에서 생성된 인스턴스를 참조합니다.

 1. 인스턴스의 속성에 액세스하려면 마침표 표기를 사용할 수 있습니다. my_dog의 속성 이름 값에 액세스하기 위해 다음 코드를 작성했습니다.

 my_dog.name

 기간 표기법은 Python에서 매우 일반적으로 사용됩니다. 이 구문은 Python이 속성 값을 학습하는 방법을 보여줍니다.

 2. Dog 클래스를 기반으로 인스턴스를 생성한 후 마침표 표기법을 사용하여 Dog 클래스에 정의된 모든 메서드를 호출할 수 있습니다.

 3. 필요에 따라 클래스를 기반으로 인스턴스를 얼마든지 생성할 수 있습니다.

9.2 클래스 및 인스턴스 사용하기

  1. 수행해야 할 중요한 작업은 인스턴스의 속성을 수정하는 것입니다. 인스턴스의 속성을 직접 수정하거나 메서드를 작성하여 특정 방식으로 수정할 수 있습니다.

  2. 클래스는 인스턴스를 생성하기 위한 템플릿이며, 인스턴스는 특정 객체입니다. 각 인스턴스가 소유하는 데이터는 서로 독립적이며 서로 영향을 미치지 않습니다. 인스턴스에서 메소드를 호출하여 인스턴스의 데이터에 직접 액세스하고 객체 내부의 데이터를 직접 조작하지만 메소드 내부의 구현 세부 사항을 알 필요는 없습니다. 정적 언어와 달리 Python에서는 모든 데이터를 인스턴스 변수에 바인딩할 수 있습니다. 즉, 두 인스턴스 변수의 경우 동일한 클래스의 다른 인스턴스이더라도 변수 이름이 다를 수 있습니다.

9.2.1 클래스의 초기 값 설정

클래스의 모든 속성은 값이 0이거나 빈 문자열인 경우에도 초기 값을 가져야 합니다. 기본값을 설정할 때와 같은 일부 경우에는 __init__() 메서드 내에서 이러한 초기 값을 지정할 수 있습니다. 속성에 대해 이 작업을 수행하면 초기 값을 제공하는 형식 매개변수를 포함할 필요가 없습니다. 값.

클래스 속성인 속성을 클래스에서 직접 정의합니다.

class Student(객체):

name = 'Student'

프로그램을 작성할 때 인스턴스 속성과 클래스 속성에 동일한 이름을 사용하지 마십시오. 동일한 이름을 가진 인스턴스 속성은 클래스 속성을 차단하기 때문입니다. 그러나 인스턴스 속성을 삭제하고 동일한 이름을 다시 사용하면 다음과 같은 문제가 발생할 수 있습니다. 액세스는 클래스 속성이 됩니다.

9.2.2 속성 값 수정

 속성 값은 세 가지 방법으로 수정할 수 있습니다:

 1. 인스턴스를 통해 직접 수정

 2. 메소드를 통해 설정

 3. 증분 (특정 값을 증가시키는) 방법을 통해.

9.2.3 접근 제한

 1. 클래스 내부에는 속성과 메소드가 있을 수 있으며, 외부 코드는 인스턴스 변수 메소드를 직접 호출하여 데이터를 조작할 수 있어 복잡한 내부 로직을 숨길 수 있습니다.

  2. 내부 속성이 외부에서 접근되는 것을 방지하려면 속성 이름 앞에 밑줄 __ 두 개를 추가하면 됩니다. Python에서는 인스턴스의 변수 이름이 __로 시작하면 프라이빗 변수(private)가 됩니다. ) 내부에서만 액세스할 수 있으며 외부에서는 액세스할 수 없습니다.

class 학생(객체):

def __init__(self, name, Score):

self.__name = name

self.__score = Score

def print_s core(self):

print('%s: %s' % (self.__name, self.__score))

  3. 수정 후 외부 코드에는 변경 사항이 없지만 인스턴스 변수는 더 이상 사용할 수 없습니다. __name 및 인스턴스 변수 .__score:

   4 속성이 없습니다. 이렇게 하면 외부 코드는 임의로 사용할 수 없습니다. 접근 제한 보호를 통해 코드가 더욱 견고해지도록 개체의 내부 상태를 수정합니다. 그러나 외부 코드가 이름과 점수를 얻으려는 경우 get_name 및 get_score와 같은 메소드를 Student 클래스에 추가할 수 있습니다:

>>> bart = Student('Bart Simpson', 98)

>>> 가장 최근의 마지막 호출 ):

파일 "", 1행,

AttributeError: 'Student' 객체에 '__name'

class Student(object): 5. 외부 코드에서 점수를 수정하도록 허용하려면 Student에 set_score 메서드를 추가하면 됩니다. class:

...

def get_name(self):

return self.__name

def get_score(self):

return self.__score

class Student(object): 6. 원래 직접 호출과 비교 매개변수에서 잘못된 매개변수 전달을 피하기 위해 매개변수를 확인할 수 있습니다.

...

def set_score(self, Score):

self.__score = Score

class Student(object):

...

def set_score(self, Score):

if 0 < ;= 점수 <= 100: el SELF .__ SCORE = Score

Else:

값 올리기 오류('나쁜 점수')

  7. Python에서 __xxx__와 유사한 변수 이름, 즉 이중 밑줄로 시작하고 이중 밑줄로 끝나는 변수 이름은 특수 변수에 직접 액세스할 수 있으므로 전용 변수가 아니라는 점에 유의해야 합니다. __name__, __score__ 등의 변수 이름은 사용할 수 없습니다. 때로는 _name과 같이 밑줄로 시작하는 인스턴스 변수를 볼 수도 있습니다. 그러나 이러한 인스턴스 변수는 외부에서 액세스할 수 있습니다. 그러나 관례에 따르면 이러한 변수는 "접근할 수 있지만 나를 개인 변수로 취급하고 마음대로 접근하지 마세요."

 8. 이중 밑줄로 시작하는 인스턴스 변수가 반드시 외부에서 접근할 수 없는 것은 아닙니다. __name에 직접 액세스할 수 없는 이유는 Python 인터프리터가 외부에서 __name 변수를 _Student__name으로 변경하므로 __name 변수는 여전히 _Student__name을 통해 액세스할 수 있기 때문입니다.

9.3 상속

  1. 클래스가 다른 클래스의 특수 버전과 유사한 경우 상속을 사용할 수 있습니다. 클래스가 다른 클래스를 상속하면 자동으로 다른 클래스의 모든 속성과 메서드를 가져옵니다. 원래 클래스는 상위 클래스이고 새 클래스는 하위 클래스입니다.

  2. 하위 클래스는 상위 클래스의 모든 속성과 메서드를 상속하며, 자체 속성과 메서드를 정의할 수도 있습니다. OOP 프로그래밍에서는 클래스를 정의할 때 기존 클래스에서 상속할 수 있습니다. 새 클래스를 하위 클래스(Subclass)라고 하며 상속된 클래스를 기본 클래스, 상위 클래스 또는 슈퍼 클래스라고 합니다. 수업).

class Dog(동물): #Inherit Animal

Pass

9.3.1 하위 클래스 메서드 __init__()

1. 상속을 위해서는 상위 클래스의 모든 속성에 값을 할당해야 합니다. 클래스의 __init__()에는 상위 클래스의 도움이 필요합니다.

 2. 그리고 상속 파일에서 상위 클래스는 하위 클래스 앞에 있어야 합니다.

 3. 하위 클래스 정의 시 상위 클래스 이름을 괄호 안에 명시해야 합니다.

  4.super() 특수 함수는 Python이 상위 클래스와 하위 클래스를 병렬로 연결하는 데 도움이 됩니다. 부모 클래스는 슈퍼 클래스라고도 불리며, 슈퍼의 기원이다.

9.3.2 하위 클래스의 메서드 및 속성 정의

 클래스가 클래스에서 상속되도록 합니다. 하위 클래스를 상위 클래스와 구별하는 속성 및 메서드를 추가할 수 있습니다.

9.3.3 상위 클래스 재작성

  상위 클래스에 해당하는 메소드는 하위 클래스의 요구 사항을 충족하지 않는 경우에만 하위 클래스에 새로운 메소드를 추가하여 하위 클래스의 특성을 설명할 수 있습니다. 상위 카테고리 중 최악의 카테고리를 제거하고 최선의 카테고리를 선택하세요.

9.3.4 다형성

  1. 하위 클래스와 상위 클래스 모두에 동일한 메서드가 있는 경우 하위 클래스가 상위 클래스의 메서드를 재정의한다고 합니다. 코드가 실행될 때 하위 클래스의 메서드는 항상 적용됩니다. . 이런 식으로 상속의 또 다른 이점인 다형성

  2을 얻습니다. 따라서 상속 관계에서 인스턴스의 데이터 유형이 하위 클래스인 경우 해당 데이터 유형도 상위 클래스로 간주될 수 있습니다. 그러나 그 반대는 사실이 아닙니다.

  3. 다형성의 장점은 Dog, Cat, Tortoise...를 전달해야 할 때 Animal 유형만 수신하면 된다는 것입니다. 왜냐하면 Dog, Cat, Tortoise...는 모두 Animal 유형이기 때문입니다. , 동물의 종류에 따라 조작이 가능합니다. Animal 유형에는 run() 메소드가 있으므로 전달된 모든 유형이 Animal 클래스이거나 하위 클래스인 한 자동으로 실제 유형의 run() 메소드를 호출합니다. 이것이 바로 다형성을 의미합니다.

  4. 변수의 경우 동물 유형이라는 것만 알면 됩니다. 해당 하위 유형을 정확히 알 필요는 없으므로 안심하고 run() 메소드를 호출할 수 있습니다. Animal, Dog , Cat 또는 Tortoise 객체의 경우 런타임 시 객체의 정확한 유형에 따라 결정됩니다. 이것이 다형성의 진정한 힘입니다. 호출자는 세부 사항에 관계없이 호출에만 관심을 갖고 새 항목을 추가합니다. Animal의 하위 클래스인 경우 원본 코드 호출 방법에 관계없이 run() 메서드가 올바르게 작성되었는지 확인하세요. 이것은 유명한 "개방 및 폐쇄" 원칙입니다.

  • 확장을 위해 개방: 새로운 Animal 하위 클래스를 허용합니다.

  • 수정을 위해 폐쇄: Animal 유형에 의존하는 run_twice()와 같은 함수를 수정할 필요가 없습니다.

9.3.5 __slots__ 사용

제한을 달성하기 위해 Python에서는 클래스를 정의할 때 특수 __slots__ 변수를 정의하여 클래스 인스턴스에 추가할 수 있는 속성을 제한할 수 있습니다.

class Student(object):

__slots__ = ('name', 'age') # 튜플을 사용하여 바인딩을 허용하는 속성 이름을 정의합니다

__slots__를 사용할 때 __slots__에 의해 정의된 속성은 현재 클래스 인스턴스에만 영향을 미치고 상속된 하위 클래스에는 영향을 미치지 않습니다.

9.3.6 다중 상속

  1. 다중 상속을 통해 하위 클래스는 여러 상위 클래스의 모든 기능을 동시에 얻을 수 있습니다.

  2. 클래스의 상속 관계를 설계할 때 일반적으로 메인 라인은 단일 소스에서 상속됩니다. 예를 들어 Ostrich는 Bird에서 상속됩니다. 그러나 추가 기능을 "혼합"해야 하는 경우 다중 상속을 통해 이를 달성할 수 있습니다. 예를 들어 Ostrich가 Bird에서 상속하는 것 외에도 Runnable을 상속하도록 할 수 있습니다. 이 디자인은 종종 MixIn이라고 불립니다. MixIn의 목적은 클래스에 여러 함수를 추가하는 것입니다. 이처럼 클래스를 설계할 때 우리는 다단계 복잡한 상속 관계를 설계하는 대신 다중 상속을 통해 여러 MixIn 함수를 결합하는 것을 우선시합니다.

  3. 이렇게 하면 복잡하고 거대한 상속 체인이 필요하지 않습니다. 서로 다른 클래스의 기능을 결합하기만 하면 필요한 하위 클래스를 빠르게 구성할 수 있습니다. Python은 다중 상속을 허용하므로 MixIn이 일반적인 디자인입니다. 단일 상속만 허용하는 언어(예: Java)는 MixIn의 디자인을 사용할 수 없습니다.

9.3.7 사용자 정의 클래스

  1. Python 클래스에는 클래스를 사용자 정의하는 데 도움이 되는 특수 목적 함수가 많이 있습니다.

__str__

__str__() 메소드를 정의하면 보기 좋은 문자열을 반환할 수 있습니다:

>>> class Student(object):

... def __init__(self, name ):

...

>>> print(Student('Michael'))

학생 개체 (이름: Michael)

  이렇게 인쇄된 예제는 보기에도 좋을 뿐만 아니라 을 제공할 뿐만 아니라 인스턴스 내부의 중요한 데이터를 쉽게 볼 수 있도록 해줍니다.

  인쇄하지 않고 변수를 직접 입력하면 인쇄된 예제가 여전히 보기 좋지 않습니다.

>>> s = Student('Michael')

>>> <__main__ .Student object at 0x109afb310>

 이것은 직접 표시 변수 호출이 __str__()이 아니라 __repr__()이기 때문입니다. 둘 사이의 차이점은 __str__()이 문자열을 반환한다는 것입니다. 그리고 __repr__()은 프로그램 개발자가 보는 문자열을 반환합니다. 즉, __repr__()은 디버깅을 위한 것입니다.

 해결책은 또 다른 __repr__()을 정의하는 것입니다. 그러나 일반적으로 __str__() 및 __repr__()의 코드는 동일하므로 이를 작성하는 게으른 방법이 있습니다:

class Student(object):

def __init__(self, name):

self .name = name def __Str __ (Self): class Fib(object): def __init__(self):

Return 'Student Object (name = % s)' % Self.name

__repr______ITER__

리스트나 튜플과 같은 for...in 루프, 그런 다음 Python의 for 루프는 StopIteration 오류가 발생할 때 루프를 종료할 때까지 반복 객체의 __next__() 메서드를 계속 호출합니다.

피보나치 수열을 예로 들어 for 루프에서 사용할 수 있는 Fib 클래스를 작성합니다.

self.a, self .b = 0, 1 # 두 개의 카운터 초기화 a, b

def __iter__(self):

return self # 인스턴스 자체는 반복 객체이므로 자체 반환 11

def __next__(self):

self.a, self.b = self.b, self.a + self.b # 다음 값 계산

                                                                                                                       ’ s ’ s ’ s ‐ ‐ ‐ ‐ 다음 값으로

                                                        A # 반품 다음 값으로

이제 FIB 인스턴스를 for 루프로 시도해 보세요:

& gt; & gt & gt; for n in fib ():

... )

...

2

35

...

46368

75025

__getitem__

Fib 인스턴스는 for 루프에서 사용할 수 있고 약간 목록처럼 보이지만 여전히 목록으로 사용할 수 없습니다. 예를 들어 5번째 요소를 사용합니다.

> >> ; Fib()[5]

추적(가장 최근 호출 마지막):

파일 "", 1행,

TypeError: 'Fib' 개체가 인덱싱을 지원하지 않습니다.

 목록처럼 동작하고 첨자로 요소를 검색하려면 __getitem__() 메서드를 구현해야 합니다.

class Fib(object):

def __getitem__(self, n):

a, b = 1, 1

for x in range (n):

A, B = B, A + B

Return a

__Getattr__

Python 및 다른 메커니즘, 즉, 하나 쓰기 _ _getattr__() 메서드는 속성을 동적으로 반환합니다. 점수와 같이 존재하지 않는 속성을 호출할 때 Python 인터프리터는 속성을 얻기 위해 __getattr__(self, 'score') 호출을 시도하므로 점수 값을 반환할 수 있는 기회를 갖게 됩니다. 이름과 같은 기존 속성은 __getattr__에서 조회되지 않습니다.

__call__

 1. 모든 클래스는 인스턴스를 직접 호출하기 위해 __call__() 메서드만 정의하면 됩니다.

  2. callable() 함수를 통해 객체가 "호출 가능한" 객체인지 여부를 확인할 수 있습니다.

9.3.8 열거형 클래스

  이러한 열거형에 대한 클래스 유형을 정의하면 각 상수는 클래스의 고유한 인스턴스가 됩니다. Python은 이 함수를 구현하기 위해 Enum 클래스를 제공합니다:

from enum import Enum

Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May' , '6월', '7월', '8월', '9월', '10월', '11월', '12월'))

9.3.9 Metaclass

type()

  클래스 객체를 생성하기 위해 type() 함수는 3개의 매개변수를 차례로 전달합니다:

  1. 클래스 이름,

  2. 상속된 상위 클래스 컬렉션, Python에 주의하세요. 다중 상속을 지원합니다. 튜플의 단일 요소 작성 방법을 잊지 마세요.

  3. 클래스의 메서드 이름이 함수에 바인딩됩니다. 안녕하세요.

metaclass

메타클래스는 문자 그대로 메타클래스로 번역되며 간단한 설명은 다음과 같습니다. 클래스를 정의한 후 이 클래스를 기반으로 인스턴스를 생성할 수 있으므로 먼저 클래스를 정의한 다음 인스턴스를 생성합니다. 하지만 클래스를 만들고 싶다면 어떻게 해야 할까요? 그런 다음 메타클래스를 기반으로 클래스를 생성해야 하므로 먼저 메타클래스를 정의한 다음 클래스를 생성합니다. 연결은 다음과 같습니다. 먼저 메타클래스를 정의한 다음 클래스를 생성하고 마지막으로 인스턴스를 생성할 수 있습니다.

__new__() 메소드가 수신하는 매개변수는 다음과 같습니다.

  1. 현재 생성 중인 클래스의 객체

  2. 클래스 이름

  3. 클래스가 상속하는 상위 클래스 컬렉션.

  4. class 메소드 컬렉션.

9.3.10 인스턴스를 속성으로 사용

코드를 사용하여 실제 개체를 시뮬레이션할 때, 점점 더 많은 기능과 세부 정보를 추가하면 속성과 메서드는 물론 코드 파일도 점점 길어지고, 이때 일부를 분리하여 클래스로 재구성할 수 있습니다. 큰 범주는 여러 하위 범주로 나눌 수 있습니다.

9.3.11 물리적 객체 시뮬레이션

  더 복잡한 물리적 객체를 시뮬레이션하려면 더 높은 논리적 수준에서 이를 고려해야 합니다. 보다 효율적이고 간결하며 정확한 코드를 작성하려면 클래스를 지속적으로 재구성해야 할 수도 있습니다.

9.4 클래스 가져오기

  1. 클래스가 계속 추가되면서 상속이 뛰어나도 코드가 매우 길어지므로 Python에서는 클래스를 모듈로 가져올 수 있습니다. 그리고 메인 프로그램에서 사용하기 위해 필요한 모듈을 가져옵니다.

 2. 각 모듈에 대한 문서 문자열을 작성하고, 모듈의 기능을 설명하고, 내용을 간략하게 설명하세요.

 3. 모듈에서 여러 클래스를 가져와서 쉼표로 구분하고 필요에 따라 인스턴스를 만듭니다.

 4. 전체 클래스를 가져와서 인스턴스 앞에 클래스 이름을 추가하고 필요한 클래스에 액세스할 수도 있습니다.

 5. 한 모듈을 다른 모듈로 가져옵니다.

9.5 Python 표준 라이브러리(모듈)

 Python 표준 라이브러리는 import 문만으로 Import 및 사용할 수 있는 모듈 집합입니다.

  사전을 사용하면 정보를 연결할 수 있지만 키-값 쌍을 추가하는 순서를 기록하지 않습니다. 사전을 만들고 키-값 쌍이 추가되는 순서를 기록하려면 컬렉션에서 OrderDict 클래스를 사용할 수 있습니다. 기준 치수. OrderedDict의 인스턴스는 사전과 동일하지만 키-값 쌍이 추가되는 순서를 기록합니다.

 OrderdDict는 매우 훌륭합니다. 때로는 필요한 목록과 사전의 특성을 모두 갖추고 있습니다.

random module

 다양한 방법으로 난수를 생성하는 기능이 포함되어 있습니다. 여기서 randint()는 지정된 범위 내의 정수를 반환합니다.

datetime은 모듈입니다

  datetime 모듈에는 datetime 클래스도 포함되어 있습니다. datetime 클래스는 from datetime import datetime을 통해 가져옵니다. import datetime만 가져오는 경우 전체 이름 datetime.datetime을 인용해야 합니다.

  Datetime.now()는 현재 날짜와 시간을 반환하며 해당 유형은 datetime입니다.

일반적으로 사용되는 타사 라이브러리

MySQL 드라이버도 있습니다: mysql-connector-python, 과학 컴퓨팅을 위한 NumPy 라이브러리: numpy, 텍스트 생성을 위한 템플릿 도구 Jinja2 등

 1.urlparse 모듈, urlpasrse 모듈은 URL 문자열 처리를 위한 몇 가지 기본 기능을 제공합니다. 이러한 함수에는 urlparse(), urlunparse() 및 urljoin()이 포함됩니다.

 2.urlparse()는 urlstr을 6-튜플(prot_sch, net_loc, path, params, query, frag)로 구문 분석합니다. 여기의 각 구성 요소는 이전에 설명되었습니다.

  3. urlunparse()의 기능은 urlpase()의 기능과 완전히 반대입니다. urlparse(), splices에 의해 처리된 URL에서 urltup 6-튜플(prot_sch, net_loc, path, params, query, frag)을 생성합니다. 이를 URL로 변환하고 를 반환합니다.

 4. urllib 모듈은 지정된 URL에서 데이터를 다운로드하는 데 사용할 수 있는 다양한 기능을 제공합니다. 또한 문자열을 URL에서 올바른 형식으로 표시할 수 있도록 인코딩 및 디코딩할 수도 있습니다. 아래에서 소개할 함수로는 urlopen(), urlretrieve(), quote(), unquote(), quote_plus(), unquote_plus(), urlencode() 등이 있습니다.

 5.urlopen()은 주어진 URL 문자열로 표시되는 웹 연결을 열고 파일 유형의 객체를 반환합니다.

  6.urlretrieve()는 파일 형태의 URL에 접근하여 여는 데 사용되는 것이 아니라, 완전한 HTML을 다운로드하여 파일로 저장하는 데 사용됩니다.

9.6 클래스 코딩 스타일

  특히 프로그램이 복잡한 경우 클래스와 관련된 코딩 스타일에 익숙해지세요.

 1. 클래스 이름은 Camel Case 명명 방법을 사용해야 합니다. 즉, 클래스의 첫 글자는 밑줄 없이 대문자로 쓰고, 인스턴스 이름과 모듈 이름의 첫 글자는 소문자로 하고, 밑줄을 사용하여 연결합니다. 단어.

  2. 각 클래스 정의 뒤에 문서 문자열 설명을 추가하여 클래스의 기능을 간략하게 설명하고, 각 모듈 아래에 문서 문자열 설명을 추가하여 해당 모듈 아래 클래스가 수행할 수 있는 작업을 간략하게 설명합니다.

 3. 빈 줄을 사용하여 코드를 정리하되 남용하지 마세요. 빈 줄 하나를 사용하여 클래스의 메서드를 구분할 수 있고, 빈 줄 두 개를 사용하여 클래스를 구분할 수 있습니다.

  4. 표준 라이브러리에 있는 모듈과 직접 작성한 모듈을 동시에 임포트해야 할 경우, 먼저 표준 라이브러리 모듈을 임포트하는 import 문을 빈 줄로 구분하여 작성한 후, 작성한 모듈 import 문을 임포트하세요. 스스로. import 문을 여러 개 포함하면 프로그램 내 각 모듈의 출처를 더 쉽게 이해할 수 있습니다.

위 내용은 Python의 기본 학습 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

XML에서 댓글 내용을 수정하는 방법 XML에서 댓글 내용을 수정하는 방법 Apr 02, 2025 pm 06:15 PM

작은 XML 파일의 경우 주석 내용을 텍스트 편집기로 직접 교체 할 수 있습니다. 큰 파일의 경우 XML 파서를 사용하여 효율성과 정확성을 보장하기 위해 수정하는 것이 좋습니다. XML 주석을 삭제할 때주의를 기울이면 주석을 유지하면 일반적으로 코드 이해 및 유지 관리에 도움이됩니다. 고급 팁은 XML 파서를 사용하여 댓글을 수정하기위한 파이썬 샘플 코드를 제공하지만 사용 된 XML 라이브러리에 따라 특정 구현을 조정해야합니다. XML 파일을 수정할 때 인코딩 문제에주의하십시오. UTF-8 인코딩을 사용하고 인코딩 형식을 지정하는 것이 좋습니다.

XML 수정에 프로그래밍이 필요합니까? XML 수정에 프로그래밍이 필요합니까? Apr 02, 2025 pm 06:51 PM

XML 컨텐츠를 수정하려면 프로그래밍이 필요합니다. 대상 노드를 추가, 삭제, 수정 및 확인하려면 정확한 찾기가 필요하기 때문입니다. 프로그래밍 언어에는 XML을 처리하기위한 해당 라이브러리가 있으며 운영 데이터베이스와 같이 안전하고 효율적이며 제어 가능한 작업을 수행 할 수있는 API를 제공합니다.

휴대폰에서 XML을 PDF로 변환 할 때 변환 속도가 빠르나요? 휴대폰에서 XML을 PDF로 변환 할 때 변환 속도가 빠르나요? Apr 02, 2025 pm 10:09 PM

모바일 XML에서 PDF의 속도는 다음 요인에 따라 다릅니다. XML 구조의 복잡성. 모바일 하드웨어 구성 변환 방법 (라이브러리, 알고리즘) 코드 품질 최적화 방법 (효율적인 라이브러리 선택, 알고리즘 최적화, 캐시 데이터 및 다중 스레딩 사용). 전반적으로 절대적인 답변은 없으며 특정 상황에 따라 최적화해야합니다.

XML을 PDF로 변환 할 수있는 모바일 앱이 있습니까? XML을 PDF로 변환 할 수있는 모바일 앱이 있습니까? Apr 02, 2025 pm 08:54 PM

XML을 PDF로 직접 변환하는 응용 프로그램은 근본적으로 다른 두 형식이므로 찾을 수 없습니다. XML은 데이터를 저장하는 데 사용되는 반면 PDF는 문서를 표시하는 데 사용됩니다. 변환을 완료하려면 Python 및 ReportLab과 같은 프로그래밍 언어 및 라이브러리를 사용하여 XML 데이터를 구문 분석하고 PDF 문서를 생성 할 수 있습니다.

XML 형식을 여는 방법 XML 형식을 여는 방법 Apr 02, 2025 pm 09:00 PM

대부분의 텍스트 편집기를 사용하여 XML 파일을여십시오. 보다 직관적 인 트리 디스플레이가 필요한 경우 Oxygen XML 편집기 또는 XMLSPy와 같은 XML 편집기를 사용할 수 있습니다. 프로그램에서 XML 데이터를 처리하는 경우 프로그래밍 언어 (예 : Python) 및 XML 라이브러 (예 : XML.etree.elementtree)를 사용하여 구문 분석해야합니다.

protobuf 및 연결 문자열 상수에서 열거 유형을 정의하는 방법은 무엇입니까? protobuf 및 연결 문자열 상수에서 열거 유형을 정의하는 방법은 무엇입니까? Apr 02, 2025 pm 03:36 PM

protobuf에서 문자열 상수 열거를 정의하는 문제 protobuf를 사용할 때 종종 열거 유형을 문자열 상수와 연관시켜야하는 상황이 발생합니다 ...

XML을 이미지로 변환하는 프로세스는 무엇입니까? XML을 이미지로 변환하는 프로세스는 무엇입니까? Apr 02, 2025 pm 08:24 PM

XML 이미지를 먼저 변환하려면 먼저 XML 데이터 구조를 결정한 다음 Python의 Matplotlib와 같은 적절한 그래픽 라이브러리를 선택하고 데이터 구조를 기반으로 시각화 전략을 선택하고 데이터 볼륨 및 이미지 형식을 고려하고 효율적인 라이브러리를 수행하거나 필요에 따라 PNG, JPEG 또는 SVG로 저장하십시오.

고품질로 휴대 전화에서 XML을 PDF로 변환하는 방법은 무엇입니까? 고품질로 휴대 전화에서 XML을 PDF로 변환하는 방법은 무엇입니까? Apr 02, 2025 pm 09:48 PM

휴대폰에서 고품질로 XML을 PDF로 변환하려면 클라우드에서 XML을 구문 분석하고 서버리스 컴퓨팅 플랫폼을 사용하여 PDF를 생성합니다. 효율적인 XML 파서 및 PDF 생성 라이브러리를 선택하십시오. 오류를 올바르게 처리합니다. 휴대 전화에서 무거운 작업을 피하기 위해 클라우드 컴퓨팅 파워를 최대한 활용하십시오. 복잡한 XML 구조 처리, 다중 페이지 PDF 생성 및 이미지 추가를 포함하여 요구 사항에 따라 복잡성을 조정하십시오. 로그 정보를 인쇄하여 디버그를 돕습니다. 성능을 최적화하고 효율적인 파서 및 PDF 라이브러리를 선택하고 비동기 프로그래밍 또는 XML 데이터를 사용할 수 있습니다. 우수한 코드 품질과 유지 관리를 보장하십시오.

See all articles