# 删除函数
删除LakeFormation中的函数记录，并清理其在OBS上的UDF包。删除流程如下：
1. 获取函数元数据（用于定位resource_uris）。
2. 删除对应的OBS包（函数已部分删除时按前缀清理以避免泄漏）。
3. 从LakeFormation删除函数记录。
4. 若OBS清理失败但LakeFormation删除成功，抛出异常以提示存在孤儿包。
#### 前提条件
- 已完成SDK安装。具体操作，请参见[Catalog SDK获取与安装](https://support.huaweicloud.com/sdkreference-aidatalake/aidatalake_09_0010.html)。
- 目标数据库与函数名已知（若函数元数据不可用，SDK将按{database}/{name}/前缀清理OBS）。
 
#### 函数签名
```
client.delete_function(*, database=None, name) -> None
```
#### 参数说明
| 参数       | 是否必选 | 类型          | 默认值              | 说明                  |
|:---|:---|:---|:---|:---|
| database | 否    | str \| None | default_database | 数据库名；为None时使用默认数据库。 |
| name     | 是    | str         | -                | 函数名。                |
   
#### 返回值
无返回值（None）。
#### 异常说明
| 异常                    | 触发条件                                                 |
|:---|:---|
| FunctionNotFoundError | 函数不存在（此异常在删除流程中被安全忽略，SDK改用前缀清理OBS）。                  |
| LakeFormationAPIError | LakeFormation API调用失败（网络、鉴权、5xx 等），需向上传播以告知调用方清理未完成。 |
| OBSOperationError     | OBS清理失败，但LakeFormation删除已成功时抛出，提示存在孤儿OBS包。           |
   
#### 示例代码
```
client.delete_function(name="to_celsius")
print("Function deleted and OBS package cleaned")
```
![](https://support.huaweicloud.com/sdkreference-aidatalake/public_sys-resources/note_3.0-zh-cn.png)
- 当函数元数据不可用时，SDK会按数据库/函数名/前缀清理OBS对象，避免遗留孤儿包。
- 若OBS删除失败但LakeFormation记录已删除，SDK会抛出OBSOperationError，调用方需据此排查孤儿包。
 
