新乡市网站建设电脑培训班做促销的网站

当前位置: 首页 > news >正文

新乡市网站建设电脑培训班,做促销的网站,用于公司网站建设的费用记帐分录,报送举报网站建设情况​ Python 是胶水语言这一说法是指它很擅长将不同的程序或代码库连接在一起#xff0c;能够让来自不同编程语言或框架的组件无缝协作。Python 具有丰富的库和简单的语法#xff0c;使得它可以轻松调用其他语言编写的程序或使用不同技术栈的模块。 ​ 以下是几个…​ Python 是胶水语言这一说法是指它很擅长将不同的程序或代码库连接在一起能够让来自不同编程语言或框架的组件无缝协作。Python 具有丰富的库和简单的语法使得它可以轻松调用其他语言编写的程序或使用不同技术栈的模块。 ​ 以下是几个具体的实例展示了Python 作为胶水语言的特性 实例 1调用 C/C 代码 ​ 使用ctypes 库可以方便地调用 C 函数。 假设有一个简单的 C 函数 // example.c #include stdio.hint add(int a, int b) {return a b; }void say_hello() {printf(Hello, World!\n); }采用编译它为共享库 gcc -shared -o libexample.so -fPIC example.c然后用 Python 调用这个库

example.py

import ctypes# 加载共享库 lib ctypes.CDLL(./libexample.so)# 定义函数原型 lib.add.argtypes (ctypes.c_int, ctypes.c_int) # 表示该函数接收两个整数参数 lib.add.restype ctypes.c_int # 设置 add 函数的返回类型# 调用 C 函数 result lib.add(3, 5) print(fResult of add(3, 5): {result})# 调用无参数 C 函数 lib.say_hello()运行这个 Python 脚本你会看到 实例 2集成数据库和 Web 服务 ​ Python 强大的库生态使得它在集成不同技术栈方面非常有优势。例如连接一个数据库并通过 Flask 框架提供一个简单的 Web API。

Install required packages:

pip install flask sqlalchemyfrom flask import Flask, jsonify, request

from sqlalchemy import create_engine, Column, Integer, String, Sequence from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmakerapp Flask(name) Base declarative_base()# 创建数据库表 User(id, name, age) class User(Base):tablename usersid Column(Integer, Sequence(user_id_seq), primary_keyTrue)name Column(String(50))age Column(Integer)# 使用的是 SQLite 文件数据库,数据存储到本地文件中程序结束后数据也会被保留engine create_engine(sqlite:///mydatabase.db) # 使用文件存储的 SQLite 数据库 Base.metadata.create_all(engine) # 创建所有的表Session sessionmaker(bindengine) # 这个Session对象实际上是一个数据库会话或连接它用于执行数据库操作如查询、插入、更新、删除等。 session Session()# 添加一些数据 new_user User(nameBobo, age52) session.add(new_user) session.commit()app.route(/users, methods[GET]) def get_users():users session.query(User).all()return jsonify([{id: user.id, name: user.name, age: user.age} for user in users])app.route(/user, methods[POST]) def add_user():data request.jsonnew_user User(namedata[name], agedata[age])session.add(new_user)session.commit()return jsonify({id: new_user.id})if name main:app.run(debugTrue)​ 这个脚本使用 SQLAlchemy连接 SQLite 数据库并且通过 Flask 框架提供了一个 Web 接口。运行这个脚本并访问 http://127.0.0.1:5000/users 获取表中记录信息。 ​ ​ 使用 http://127.0.0.1:5000/user访问在本程序中会出现如下错误出现如下 Method Not Allowed。 错误的原因是因为 HTTP 方法错误。访问 URL http://127.0.0.1:5000/user 时浏览器默认使用 GET 方法请求而代码中/user 端点只允许 POST 方法。
我们可以使用cURL来发送POST请求 结合之前的 Flask 示例我们可以使用 cURL 向我们的 Flask 应用发送一个 POST 请求来添加用户在 Git Bash curl -X POST -H Content-Type: application/json -d {name: Bo, age: 30} http://127.0.0.1:5000/user在 Windows 命令提示符CMD或 PowerShell curl -X POST -H Content-Type: application/json -d {\name: \Bobo\, \age: 30} http://127.0.0.1:5000/user注意

  1. 双引号问题在 Windows CMD 中双引号会被用来包裹整个字符串内部的双引号需要进行转义。

  2. 单引号和双引号的区别在 Unix 风格的 Shell如 Git Bash中你可以使用单引号包裹整个字符串JSON 字符串内部的引号不需要转义。建议用Git Bash来测试​ 第二个实例展示了如何利用Python作为胶水语言将不同的技术和组件集成在一起进行协作。具体来说它通过几个方面体现了Python的胶水作用

  3. 数据库连接与操作 ​ 在该实例中使用了SQLAlchemy库与SQLite数据库进行连接和操作。SQLAlchemy是Python中一个非常强大的ORM对象关系映射框架它允许开发者使用面向对象的方式来操作数据库。 代码片段 from flask import Flask, jsonify, request from sqlalchemy import create_engine, Column, Integer, String, Sequence from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmakerapp Flask(name) Base declarative_base()# 创建数据库表 User(id, name, age) class User(Base):tablename usersid Column(Integer, Sequence(user_id_seq), primary_keyTrue)name Column(String(50))age Column(Integer)# 使用的是 SQLite 文件数据库,数据存储到本地文件中程序结束后数据也会被保留engine create_engine(sqlite:///mydatabase.db) # 使用文件存储的 SQLite 数据库 Base.metadata.create_all(engine) # 创建所有的表Session sessionmaker(bindengine) # 这个Session对象实际上是一个数据库会话或连接它用于执行数据库操作如查询、插入、更新、删除等。 session Session()# 添加一些数据 new_user User(nameBobo, age52) session.add(new_user) session.commit()2. 提供Web服务 ​ 实例中使用了Flask框架来提供Web服务。Flask是一个轻量级的Web应用框架适合快速开发和部署Web应用。通过Flask框架可以轻松定义API端点并处理HTTP请求和响应。 代码片段 app.route(/users, methods[GET]) def get_users():users session.query(User).all()return jsonify([{id: user.id, name: user.name, age: user.age} for user in users])app.route(/user, methods[POST]) def add_user():data request.jsonnew_user User(namedata[name], agedata[age])session.add(new_user)session.commit()return jsonify({id: new_user.id})if name main:app.run(debugTrue)3. 数据格式转换 ​ 通过jsonify函数实例实现了将Python对象如列表和字典转换为JSON格式的HTTP响应。这体现了Python在数据格式转换和处理方面的灵活性。 代码片段 from flask import jsonifyapp.route(/users, methods[GET]) def get_users():users session.query(User).all()return jsonify([{id: user.id, name: user.name, age: user.age} for user in users])4. 跨模块和库的协作 ​ 该实例展示了如何将不同功能的库和模块结合在一起工作。比如Flask负责处理Web请求和响应而SQLAlchemy负责数据库操作。Python通过其简单的语法和强大的库生态使得整合这些组件变得非常方便和高效。

  4. 使用第三方库 ​ SQLAlchemy和 Flask 都是Python的第三方库Python的胶水功能在这里表现为它能够无缝地集成和使用这些库以实现复杂的功能而不需要开发者编写大量的底层代码。 ​ 综上所述这个实例在数据库连接与操作、提供Web服务、数据格式转换、不同模块和库的协作以及第三方库的使用方面展示了Python作为胶水语言将各种不同技术和组件整合起来的强大能力。 实例 3控制和管理系统进程 ​ 通过 Python 提供的 subprocess 库你可以轻松地调用和管理系统进程。 import subprocess# 运行一个简单的系统命令适用于Windows平台 result subprocess.run([cmd, /c, dir], capture_outputTrue, textTrue) # 使用cmd命令解释器并通过 /c 参数执行 dir 命令。 print(result.stdout)# 运行另一个 Python 脚本 result subprocess.run([python, other_script.py], capture_outputTrue, textTrue) print(result.stdout)​ 第三个实例展示了如何使用 Python 的 subprocess 模块来调用和管理系统级别的命令和其他 Python 脚本。这些功能在以下几个方面展示了 Python 作为胶水语言的能力

  5. 调用系统命令 ​ Python 可以通过 subprocess 模块轻松地调用和执行系统命令。这使得 Python 能够扮演脚本语言的角色用于自动化各种系统管理任务与操作系统直接交互。 import subprocess# 运行一个简单的系统命令适用于Windows平台 result subprocess.run([cmd, /c, dir], capture_outputTrue, textTrue) # 使用cmd命令解释器并通过 /c 参数执行 dir 命令。 print(result.stdout)​ 在这个例子中Python 调用系统自带的dir/c命令列出当前目录下的文件并将结果输出。这展示了 Python 与操作系统之间的无缝集成。

  6. 执行其他 Python 脚本 ​ 除了系统命令Python 还可以调用其他 Python 脚本执行这些脚本并捕获其输出。这使得 Python 可以作为主调度器将多个 Python 脚本整合到一个更大的应用程序或工作流程中。

    运行另一个 Python 脚本

    result subprocess.run([python, other_script.py], capture_outputTrue, textTrue) print(result.stdout)​ 这个例子展示了如何通过 Python 调用另一个 Python 脚本 other_script.py 并获取其输出。这在多脚本项目或分布式系统中尤其有用。

  7. 捕获和处理外部命令的输出 ​ 通过 capture_outputTrue 和 textTrue 参数Python 可以捕获并直接处理外部命令的输出便于后续的逻辑处理或数据分析。这使得 Python 可以整合外部工具的功能将它们的输出纳入到整个应用程序的工作流程中。

    运行一个简单的系统命令适用于Windows平台

    result subprocess.run([cmd, /c, dir], capture_outputTrue, textTrue) print(result.stdout)在这个例子中Python 捕获了 ls -l 命令的输出并将其作为字符串处理和打印。

  8. 统一的错误处理机制 ​ subprocess 模块还提供了统一的错误处理机制。当外部命令失败时Python 可以捕获错误信息并进行相应的处理。这使得错误管理变得更加简单和一致。 try:result subprocess.run([some_non_existing_command], capture_outputTrue, textTrue, checkTrue) except subprocess.CalledProcessError as e:print(fCommand failed with exit status {e.returncode})print(e.output)在这个例子中如果外部命令失败Python 可以捕获异常并处理错误信息提供更好的错误管理能力。

  9. 平台独立性 ​ Python 的 subprocess 模块是跨平台的这意味着同样的代码可以在不同操作系统上运行而不需要做多余的修改。这极大地提高了代码的可移植性和维护性。 import subprocess# 运行一个简单的系统命令 Linux下 result subprocess.run([ls, -l], capture_outputTrue, textTrue) print(result.stdout)无论是在 Linux、macOS 还是 Windows这段代码都能够工作在 Windows 上需要将 ls -l 换成相应的命令例如 dir。

  10. 管道和数据流 subprocess 模块允许我们通过管道将不同进程的输入和输出连接起来形成数据流。这使得 Python 可以将多个独立的程序组合起来共同完成一个复杂任务。

    Example: Using pipeline

    import subprocess

    第一阶段使用 echo 产生文本

    我们使用 cmd 来调用 echo因为 echo 是 cmd 的内置命令

    cmd1 [cmd, /c, echo Hello, World! This is a test.]

    第二阶段使用 findstr 查找特定单词

    cmd2 [findstr, World] # findstr 在 Windows 上用它来查找文本

    运行第一个命令

    result1 subprocess.run(cmd1, stdoutsubprocess.PIPE, textTrue)

    将第一个命令的输出作为输入传递给第二个命令

    result2 subprocess.run(cmd2, inputresult1.stdout, capture_outputTrue, textTrue)

    打印第二个命令的输出

    print(Filtered output:, result2.stdout)​ 在这个实例中使用了 Windows 平台下的 cmd 和 findstr 命令演示了如何通过管道将一个命令的输出传递给另一个命令。这种方式在 Windows 平台上非常实用可以有效地实现数据流处理和命令的组合使用。 ​ 第三个实例通过调用系统命令、执行其他 Python 脚本、捕获和处理外部命令的输出、统一的错误处理机制、平台独立性以及管道和数据流的使用充分展示了 Python 作为胶水语言的强大能力。它能够将不同的工具和组件无缝地集成到一个统一的工作流程中提高开发效率和代码的可维护性。 小结 ​ 从调用底层的高效 C/C 代码到无缝集成数据库操作及 web 服务再到进行复杂的系统级别命令管理和数据流处理Python 出色地充当了“胶水”的角色把各自独立的发展语言、工具和技术整合到一个统一的环境中。 与多种语言和技术的无缝整合 不管是与 C/C 库交互还是与数据库或 Web 服务的整合Python 都能够轻松完成。 丰富的库和框架支持 SQLAlchemy、Flask、ctypes 和 subprocess 等强大的三方库和框架让 Python 的集成功能变得平易近人。 简洁优雅的语法 简单而清晰的语法使开发者能够迅速编写和调试代码提高开发效率。 跨平台 Python 脚本在 Windows、macOS 和 Linux 环境下都能无缝运行使其成为跨平台开发的理想选择。
    ​ 因此Python 作为“胶水语言”不仅是在技术上的能力更在于它通过简洁优雅的编程方式将不同的技术轻松连接在一起使开发者得以在复杂的技术栈中游刃有余。