[인공지능 소개] Python 표준 라이브러리 - 타이핑(유형 주석), 어설션 어설션, @property 데코레이터 및 setter 데코레이터, *args 및 **kwargs, Python 클래스에 내장된 메서드 __str_

[인공지능 소개] 파이썬 표준 라이브러리 - 타이핑(타입 주석), 어설션 어설션, @property 데코레이터 및 세터 데코레이터, *args 및 **kwargs, Python 클래스에 내장된 메서드 __str__


1. 타이핑 소개

  • 우리 모두 알고 있듯이 Python은 약한 유형의 언어입니다. 대부분의 경우 함수 매개변수 유형이나 반환 값 유형을 알기가 어렵습니다. 이로 인해 함수가 전달해야 하는 매개변수가 무엇인지, 이후에 어떤 유형의 결과가 반환되는지를 잊어버릴 수 있습니다. 일정 시간 동안 불필요한 문제가 발생하는 경우 타이핑 모듈은 이 문제를 매우 잘 해결할 수 있습니다.
  • 타이핑의 주요 기능은 다음과 같습니다.
  1. 개발 문서에 추가 설명으로, 사용 시 전달되고 반환되는 매개변수의 유형을 사용자가 이해하면 편리합니다.
  2. 유형 검사는 런타임 중 매개변수 및 반환 값 유형의 불일치를 방지합니다. 모듈을 추가해도 프로그램 실행에 영향을 미치지 않으며 공식적인 오류가 보고되지 않습니다. Pycharm은 입력을 지원하며 오류를 확인할 때 노란색 경고가 나타납니다.
  • 문법:
def 函数名(参数名: 数据类型) -> 返回值类型:
    pass

变量名: 数据类型 = 变量值
  • 일반적인 라벨 유형:
  • Union: Union[X, Y]는 변수(매개변수)가 X 유형이거나 Y 유형임을 의미합니다.
  • 선택사항: Optional[X]는 Union[X, None]과 동일합니다. 즉, 기본적으로 변수(매개변수)가 None이 되도록 허용합니다.
  • 튜플: 예: person: Tuple[str, int, float] = ('Mike', 22, 1.75), 이는 person이 튜플이고 내부 요소 유형이 각각 str, int, float임을 나타냅니다.
  • List: 예: var: List[int or float] = [2, 3.5], 이는 var가 리스트이고 내부 요소가 int 또는 float 유형일 수 있음을 나타냅니다. var: List[List[int]] = [[ 1, 2] , [2, 3]], 분명히 조합해서 사용된 것입니다.
  • Dict: 예: dic: Dict[str, int], dic이 str 유형의 키와 int 유형의 값을 가진 사전임을 나타냅니다.
  • Sequence: 변수나 매개변수가 리스트 타입인지 튜플 타입인지 엄밀히 구분할 필요가 없는 경우에는 List와 사용법이 유사한 Sequence라는 좀 더 일반적인 타입을 사용할 수 있습니다.

2. 주장 주장

  • Assert는 일반적으로 다음 코드의 정확성을 확인하기 위해 코드 디버깅에 사용됩니다. 조건이 충족되면(올바른) 프로그램은 자동으로 역방향으로 실행되고, 조건이 충족되지 않으면(오류) 현재 프로그램이 중단되고 AssertionError를 생성합니다.
  • 예:
a = -1
assert a < 0
assert a > 0

여기에 이미지 설명을 삽입하세요.

3. @property 데코레이터 및 setter 데코레이터

  • 예시 및 소개:
  • Python은 @property装饰器、setter装饰器속성으로 사용할 수 있는 장식된 메서드를 제공합니다.
  • 예를 들어 , 내부 속성을 Exam직접 조작하는 것을 방지하기 위해 클래스를 정의하여 캡슐화 역할을 하는 제공된 메서드를 통해 속성을 간접적으로 제어하고 외부 세계에 노출되기를 원하지 않는 일부 속성을 숨깁니다. , 그러나 사용자가 조작할 수 있는 방법만 제공하며, 해당 방법에서 매개변수의 합리성 등을 확인할 수 있습니다._scoreproperty装饰器、setter装饰器
class Exam(object):
    def __init__(self, score):
        self._score = score
 
    @property
    def score(self): # 属性访问
        return self._score

    @score.setter
    def score(self, val): # 属性赋值
        if val < 0:
            self._score = 0
        elif val > 100:
            self._score = 100
        else:
            self._score = val
 
if __name__ == '__main__':
	e = Exam(60)
	print(e.score)
 
	e.score = 90
	print(e.score)
 
	e.score = 200
	print(e.score)

4. *args 및 **kwargs

  • 둘 다 Python의 가변 매개변수입니다.
  • args합계는 kwargs마음대로 수정할 수 있으며 초점은 *합계 에 맞춰져 있다는 점은 주목할 가치가 있습니다 **.
  • *args : 在传入的参数个数未知,且不需要知道参数名称时使用,它将参数保存成一个元组,元组名为args 。
  • **kwargs : 在传入参数个数未知,但需要知道参数的名称时使用,它将数据保存成一个字典,字典名为kwargs 。
  • 예:
def args_test(data1, *args, **kwargs):
    print('data1: ',data1)
    print('args:', args)
    print('type_of_args: ', type(args))
    print('kwargs: ' , kwargs)
    print('type_of_kwargs:' ,type(kwargs))
    
args_test(1,2,3,4,5,k1=6,k2=7,k3=8)

여기에 이미지 설명을 삽입하세요.

5. Python 클래스의 내장 메소드 __str__

  • 기능 : 인쇄 기능 출력시 사용되는 객체의 설명 정보를 반환합니다.
  • 호출 타이밍 : print(对象) 인쇄 객체 사용시 자동으로 호출됩니다.
  • 알아채다:
  1. __str__() 메서드가 정의되지 않은 경우 기본적으로 객체의 참조 주소가 인쇄되는데, 이는 메모리 내 객체 변수의 저장 공간 주소입니다.
  2. __str__() 메서드가 정의된 경우 인쇄되는 내용은 메서드의 반환 값입니다.
  3. __str__ 메서드는 문자열 데이터를 반환해야 합니다.
  • 예:
class str_test():
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return 'name:%s'%self.name

name = str_test('Tom')
print(name)

여기에 이미지 설명을 삽입하세요.

추천

출처blog.csdn.net/qq_44928822/article/details/131290633