Python
- 基础
-
库
- 其他
- argparse命令行参数解析
- asyncio自带异步编程库
- aiofiles异步文件读写库
- beautifulsoup4_HTML_XML解析库
- colorama_在终端输出漂亮的字
- datasets数据集处理
- html2text
- httpx_HTTP请求库
- litellm
- loguru日志库
- numpy科学计算基础库
- pillow图像处理
- pydantic数据验证
- pyyaml
- requests_HTTP请求库
- tenacity重试
- tiktoken计算Token量
- torch机器学习_深度学习框架
- tomli TOML文件解析库
- tomllib 自带TOML文件解析库
- unidiff_文本_文件差异对比
- uvicorn_Web服务器
- langchain
下面Csharp中没有的、相同的语法
---
变量:Pyton不需要定义变量,跟js类似
---
三元表达式(不是三元运算符)
```python
value_if_true if 条件 else value_if_false
```
如果 “条件” 为真(True),则整个表达式的值为 value_if_true;否则,值为 value_if_false。
示例
```
prompt = args.prompt if args.prompt else input("Enter your prompt: ")
```
---
# 字符串
``` python
if not prompt.strip():
logger.warning("Empty prompt provided.")
return
```
strip 相当于Trim, if没有括号,有一个逗号。有一个not,类似sql的not null
字符串格式化
跟c#的 $"" 类似
如下示例
```
logger.warning(
f"🤔 Hmm, {self.name} tried to use tools when they weren't available!"
)
```
---
# 方法
```
def add_tools(self, *tools: BaseTool):
```
跟c#的params类似
```
public add_tools(params BaseTool tools)
```
---
```
@classmethod
async def create(cls, **kwargs) -> "Manus":
"""Factory method to create and properly initialize a Manus instance."""
instance = cls(**kwargs)
await instance.initialize_mcp_servers()
instance._initialized = True
return instance
```
1、cls 是一个约定俗成的参数名,在类方法里代表当前的类本身(类似于 self,但 self 是实例,cls 是类)。
2、**kwargs 表示这个方法可以接收任意数量的关键字参数(比如 name="Alice", age=20),这些参数会被打包成一个字典。
3、-> "Manus" 是一个类型注解,表示这个函数返回的是一个 Manus 类的实例。(这只是提示,Python 不会强制检查)
上面的相当于是c#的静态方法,用于构造对象
```
for server_id, server_config in config.mcp_config.servers.items():
```
for in 循环 + 解构
语法理解:
```
browser_in_use = any(
tc.function.name == BrowserUseTool().name
for msg in recent_messages
if msg.tool_calls
for tc in msg.tool_calls
)
```
或者
```
new_tools = [
tool for tool in self.mcp_clients.tools if tool.server_id == server_id
]
```
又或者
```
prompt = args.prompt if args.prompt else input("Enter your prompt: ")
```
有点倒置的感觉,第一个参数是最终的结果
例如 args.prompt if args.prompt else input("Enter your prompt: ")
c#的写法应该是 if args.prompt args.prompt else input("Enter your prompt: ")
其实这是推导式,有点像是析构的写法,就是从一个列表或者对象中,析构出参数出来
细看“关于推导式”