# This is a comprehensive Python syntax demo
fromtypingimportList,Dict,Optional,Union,CallablefromdataclassesimportdataclassfromenumimportEnumimportasynciofromcontextlibimportcontextmanager# Enums
classColor(Enum):RED=1GREEN=2BLUE=3# Dataclass
@dataclassclassPoint:x:floaty:floatdef__add__(self,other):returnPoint(self.x+other.x,self.y+other.y)# Type hints and function annotations
defcalculate_average(numbers:List[float])->float:""" Docstring: Calculate average of numbers
Args:
numbers: List of numbers
Returns:
Average value
"""returnsum(numbers)/len(numbers)# Lambda functions
square=lambdax:x**2# List comprehension
squares=[x**2forxinrange(10)]# Dictionary comprehension
square_dict={x:x**2forxinrange(5)}# Set comprehension
even_squares={x**2forxinrange(10)ifx%2==0}# Generator expression
gen=(x**2forxinrange(10))# Context manager
@contextmanagerdefmanaged_resource():print("Entering context")try:yield"resource"finally:print("Exiting context")# Decorator
deftimer(func):defwrapper(*args,**kwargs):fromtimeimporttimestart=time()result=func(*args,**kwargs)print(f"Function {func.__name__} took {time()-start:.2f} seconds")returnresultreturnwrapper# Class inheritance and magic methods
classShape:def__init__(self,name:str):self.name=name@propertydefdescription(self)->str:returnf"I am a {self.name}"classCircle(Shape):def__init__(self,radius:float):super().__init__("circle")self.radius=radiusdef__str__(self)->str:returnf"Circle(radius={self.radius})"# Async/await syntax
asyncdefasync_function():awaitasyncio.sleep(1)return"async result"# Error handling
defdivide(a:float,b:float)->float:try:returna/bexceptZeroDivisionError:raiseValueError("Cannot divide by zero")finally:print("Division attempted")# Match statement (Python 3.10+)
defmatch_example(value):matchvalue:casestr():return"It's a string"caseint()|float():return"It's a number"caselist():return"It's a list"case_:return"Unknown type"# Type Union and Optional
defprocess_data(data:Union[str, int],default:Optional[str]=None)->str:ifisinstance(data,int):returnstr(data)returndataordefaultor""# Main execution
if__name__=="__main__":# Dictionary unpacking
dict1={"a":1,"b":2}dict2={"c":3,**dict1}# List unpacking
numbers=[1,2,3]first, *rest=numbers# Using context manager
withmanaged_resource()asresource:print(f"Using {resource}")# Async execution
asyncdefmain():result=awaitasync_function()print(result)asyncio.run(main())# Demonstrating type hints
point1=Point(1.0,2.0)point2=Point(3.0,4.0)point3=point1+point2# Using match statement
print(match_example("test"))print(match_example(42))# Using walrus operator (Python 3.8+)
if(n:=len(numbers))>2:print(f"List has {n} items")