# call\_function

通过传入函数名称及参数来调用该合约内的函数。

## 方法定义

```python
def call_function(self, function_name: str, *args: Optional[Any]) -> Optional[TransactionReceiptData]
```

## 参数说明

| 参数             | 类型             | 说明   |
| -------------- | -------------- | ---- |
| function\_name | str            | 函数名称 |
| \*args         | Optional\[Any] | 函数参数 |

## 返回值

返回 TransactionReceiptData 对象,包含以下字段:

| 字段                  | 类型                           | 说明               |
| ------------------- | ---------------------------- | ---------------- |
| transaction\_hash   | HexBytes                     | 交易哈希             |
| block\_number       | BlockNumber                  | 区块高度             |
| transaction\_index  | int                          | 交易在区块中的索引        |
| transaction\_status | int                          | 交易状态(1 成功,0 失败)  |
| transaction\_type   | int                          | 交易类型             |
| action              | str                          | 交易动作类型           |
| sender              | ChecksumAddress              | 发送者地址            |
| to                  | ChecksumAddress              | 接收者地址            |
| nonce               | Nonce                        | 交易序号             |
| value               | Wei                          | 转账金额             |
| gas\_used           | int                          | 实际使用的 Gas        |
| gas\_limit          | int                          | Gas 上限           |
| gas\_price          | Optional\[Wei]               | Gas 价格           |
| contract\_address   | Optional\[ChecksumAddress]   | 部署的合约地址(仅合约创建交易) |
| logs                | Optional\[List\[LogReceipt]] | 交易日志             |
| input\_data         | HexBytes                     | 交易输入数据           |
| r                   | HexBytes                     | 签名 r 值           |
| s                   | HexBytes                     | 签名 s 值           |
| v                   | HexBytes                     | 签名 v 值           |

## 示例代码

```python
# 调用合约函数
receipt = contract.call_function(
    "transfer",  # 函数名
    "0x...",    # 接收者地址
    1000        # 转账金额
)

if receipt and receipt.transaction_status:
    print(f"Transaction successful: {receipt.transaction_hash.hex()}")
    print(f"Gas used: {receipt.gas_used}")
```
