python magic 函数使用教程

本文介绍了Python中的魔法函数,包括如何使用zip函数将多个序列的元素打包成元组,list函数如何将序列转换为列表,以及shutil模块中移动文件的方法。通过实际案例展示了这些函数的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python magic 函数使用教程

持续更新

zip: 将参数元素打包成元组

for item in zip([1,2,3], [4,5,6]):
    print(item)

# (1, 4)
# (2, 5)
# (3, 6)

list: 将一个序列转换为列表

这里主要是对他的转换功能来说。

s = "hello 小明, where are you from!"
print " ".join(list(s.decode("utf-8")))

# u'h e l l o   \u5c0f \u660e ,   w h e r e   a r e   y o u   f r o m !'

这里可以看出list 对于一个字符序列来说,将其中的一个字符最为一个元素来对待,对于汉语,解码为unicode是将一个汉字作为一个字符。否则会将汉字的半个字符作为一个列表元素。

shutil: 移动文件

将文件或目录进行移动

import shutil 

shutil.move(old_path, new_path)

 

### 使用Python中的Magic方法 Magic方法提供了让对象行为类似于内置类型的简单方式[^1]。通过实现特定的魔法方法,可以定义类的行为,使其能够响应特殊操作符或函数调用。 #### 基本运算符重载 对于基本算术和比较操作符的支持可以通过覆盖相应的魔术方法来完成: | 操作 | Magic Method | | --- | --------------- | | `+` | `__add__(self, other)` | | `-` | `__sub__(self, other)` | | `<` | `__lt__(self, other)` | 例如,为了使自定义类支持加法操作,可如下定义: ```python class Point: def __init__(self, x=0, y=0): self.x = x self.y = y def __add__(self, other): return Point(self.x + other.x, self.y + other.y) p1 = Point(1, 2) p2 = Point(3, 4) result = p1 + p2 # Calls p1.__add__(p2) print(f"Result point at ({result.x}, {result.y})") ``` #### 字符串表示形式 为了让实例拥有更友好的字符串表达,通常会覆写`__str__()` 和 `__repr__()` 方法: ```python def __str__(self): """Return readable string representation.""" return f'Point({self.x},{self.y})' def __repr__(self): """Return detailed string representation used in debugging.""" return 'Point(x=%s,y=%s)' % (self.x, self.y) ``` #### 容器协议 如果希望创建的对象像列表一样工作,则需实现一系列容器相关的magic方法,比如`__len__()`, `__getitem__()`, `__setitem__()`等。 ```python class CustomList(list): def __getitem__(self, index): print("Accessing element:", index) return super().__getitem__(index) cl = CustomList([1, 2, 3]) element = cl[1] # Prints "Accessing element: 1" ``` 这些例子展示了如何利用Pythonmagic方法简化编程并提高代码的一致性和直观性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值