class WebhookClient:
logger = logging.getLogger(__name__)
def __init__(
self,
url: str,
timeout: int = 30,
ssl: Optional[SSLContext] = None,
proxy: Optional[str] = None,
default_headers: Optional[Dict[str, str]] = None,
):
self.url = url
self.timeout = timeout
self.ssl = ssl
self.proxy = proxy
self.default_headers = default_headers if default_headers else {}
from typing import Optional
def greet(name: Optional[str] = None) -> None:
if name is None:
print("Hello, World!")
else:
print(f"Hello, {name}!")
greet() # Output: Hello, World!
greet("Alice") # Output: Hello, Alice!
greet 함수는 name이란 파라미터를 갖고 있으며 Optional[str]
와 같이 표현되고 있다. name이 string이거나 None일 수 있음을 다른 개발자에게 알려준다.
Optional은 python의 타입 힌팅 기능으로써, 명시된 타입이거나 None일 수 있음을 나타낸다. 런타임에 타임체크를 강제하진 못하지만, mypy
와 같은 툴로 정적 타입을 검사할 때 타임 에러에 대한 경고를 받을 수 있다.