中调用python
❶ python如何在一个模块中调用另一个模块中的变量
python在一个模块中调用另一个模块中的变量步骤如下:
1、要实现变量的深度拷贝,需要使用到模块,导入这个模块。
❷ 在Python中使用字符串调用函数
已有字符串形式的函数名称,那么如何调用这个函数呢?
通过调用内置函数locals()和globals()返回的字典对象,就可以可以获得名称与对象的映射关系。其中,locals()仅在全局范围内调用时可以获得函数对象。 我们来看以下的例子。
需要注意的是,使用上述方法通过字符串调用函数时,为了系统的安全,防止执行任意函数,需要对函数名做一些处理,也就是使用统一的前缀为这些函数命名。例如在上述例子中,使用前缀cmd_+函数名的形式定义函数(cmd_help,cmd_sum)。
在传入函数名字符串时,只传入函数名的后半部分(如"help","sum"),由程序添加前缀后组成完整的函数名,再调用该函数。
对于类的成员函数,则可以使用getattr()获得类成员函数。
上述代码通过字符串调用了类成员函数,与前一段代码执行的结果相同。
此外,还可以使用字典将字符串与函数对应起来调用,缺点就是每增加一个函数需要相应在字典对象中添加相应的键值,增加代码维护工作量。
以上代码在Python 3.6以上运行通过。
❸ python中怎么调用自己的方法
C/C++对Python的调用层次可以分为三个层次, (1) 高层次的调用, (2)纯Python调用, (3) Python方法的扩展(也就使向Python输出调用函数). 这里我主要讨论(1)和(2)两种方法.
1 高层次的调用
这是最简单的一种在C/C++中调用Python的方法. 它直接的调用Python提供的C调用接口函数, 这些函数主要有: PyRun_SimpleString(), PyRun_SimpleStringFlags(), PyRun_SimpleFile(), PyRun_SimpleFileEx()和PyRun_SimpleFileExFlags()几个. 函数的具体用法参考Python的文档.
这里举个例子来说明这种层次的用法:
由这个例子可见, 在C/C++中调用Python的内容非常简单, 只要构造一个简单的Python调用字符串.这里要注意的就是, Python调用串语句之间要用'/n'来分开, 且语句之间不能有空格, 如上面的Python字符串不能写成: "import sys/n print sys.path" , 否则要出错的.
// c/c++ 中 Python 调用必须的头文件
#include <Python.h>
//
int main(int argc, char* argv[])
{
// 初始化Python解析环境
Py_Initialize();
// 构造Python执行脚本
char szPyScript[128];
sprintf(szPyScript, "import sys/nprint sys.path");
if(PyRun_SimpleString(szPyScript) != 0)
{
sprintf(stderr, "execute /'%s/'failed!", szPyScript);
return -1;
}
// 清除Python解析环境
Py_Finalize();
}
//
//
以上的例子也表明了在C/C++中调用Python的基本结构, 就是
(1) 先初始化Python环境然: Py_Initialize()
(2) 具体对Python的操作
(3) 清除Python环境
更复杂的一个使用高层调用的例子, 这个例子用PyRun_SimpleFile的例子.
这里值得注意是, 在Window中:
(1) 链接debug版本的时候会自动链接PythonXX(_d).lib库, PythonXX_d安装时是没有安装的, 所以要显示的指定链接PythonXX.lib库, 不知道VC6.0为什么还会去找PythonXX_d.lib, 在vs7.0不会.
(2) 编译时要以 /MD(多线程DLL) 选项编译(不论时debug版本还时release版本都一样).
以上我在VC7.0中可以正确的运行, 在VC6.0这样还不行, 可能和我使用的版本有关系(我用的版本是:Python24.lib). 有知道的请赐教!!
// c/c++ 中 Python 调用必须的头文件
#include <Python.h>
//
int main(int argc, char* argv[])
{
// 初始化Python解析环境
Py_Initialize();
//
char szFile[] = "PyFile.py";
//sprintf(szPathFile, "%s//%s", szPath, szFile);
FILE* fp = fopen(szFile, "r");
if(PyRun_SimpleFile(fp, szFile) != 0)
{
fclose(fp);
sprintf(stderr, "PyRun_SimpleFile(%s) failed!", saFile);
return -1;
}
fclose(fp);
// 清除Python解析环境
Py_Finalize();
}
2 纯Python调用
❹ Electron 框架中调用 Python 构建桌面应用
不同的语言、框架都有自己擅长的领域:Electron 基于 Chromium 和 Node.js 能以 Web 开发的模式打造桌面应用,开发用户界面又快捷又简单;Python 则在数据分析、自动化脚本等领域有非常多的应用。两者的社区生态都十分强大,由两者共同构建应用,在界面开发、功能、性能上能够强强联合;
为了简单验证技术可行性,我们来编写一个 Demo:
目的:验证 Electron 打造的桌面应用能够调用 Python,思路是使用 RPC 或 HTTP 或 WebSocket 进行通信
Demo 功能:输入 x、y 坐标,程序会移动鼠标到屏幕的 x,y 位置(通过 python 库 pyautogui 实现)
Demo 运行环境:MacOS、pyInstaller: 版本 4.5.1、python: 版本 3.9.7
源码:-------- 项目源码 --------
注意:移动鼠标需要授予应用控制权限,在 MacOS 下设置 偏好设置 -> 隐私 -> 辅助功能 -> 允许对应的应用。
技术栈:NodeJS、Electron、Python、aiohttp(HTTP、WebSocket)、pyautogui(控制鼠标)
为了使 NodeJS 和 Python 能够通信,Python 需要启动一个本地通信服务,Demo 中 py/api.py 能够启动一个本地 HTTP 服务:
然后我们需要执行 Python 代码以启动服务,为了使 NodeJS 可以执行 Python,我们使用 pyinstaller 将 Python 打包成可执行文件:
Python 启动了本地 HTTP 服务后,Chromium 和 Node.js 就可以通过请求的方式,与 python 连接通信了:
简单来说三个步骤:
本项目只是一个验证思路的 Demo,真的需要在项目上实践,还需要考虑以下几个点:
应该使用 RPC 通信而不是 HTTP 或者 WebSocket,Demo 使用 HTTP 只是搭建方便。实践中在建立连接、保持连接、异常重连都需要编写更多的逻辑来处理。为什么 Demo 没有使用 zerorpc? 这个库已经 4 年没有维护了,不兼容新版 NodeJS。
项目通过 pyinstaller 打包成可执行文件来调用 python。实际上其他能编译为可执行文件的语言也一样。还可以使用 WebAssembly 将其他语言编译成 .wasm,在 NodeJS 中引入执行。
❺ python中调用两个函数,怎样能不超时
超时机制。python中调用两个函数需要给函数设置超时机制,以防止它超时,这里可以用python的signal模块,signal模块可以实现程序内部的信号处理。
❻ /*教程*/Dev C++中C语言程序调用Python
1.在参数-链接中输入下面三行内容
2.根据自己的实际情况修改上边的三个路径
3. 注意! 此处每行前边的 -I -L -l 不能修改 改的是后边的
1.在文件框中输入下边这行内容 然后点添加
2.根据自己的实际情况修改上边的路径
❼ eclipse中 java程序怎样调用python
eclipse中 java程序调用python方法如下:
package com.lyz.test.jython;
import org.python.util.PythonInterpreter;
/**
* 第一个Jython程序
* @author liuyazhuang
*
*/
public class FirstJythonScript {
public static void main(String args[]) {
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); ");
interpreter.exec("print days[1];");
}
}
❽ shell脚本中怎么调用python脚本中的带参函数
Python 可以利用 sys.argv 拿到命令列上的 arguments:
$ python test.py 1 2 3
test.py:
import sys
print(sys.argv)
结果:
['test.py', '1', '2', '3']
所以你在 build_using_xctool.sh 中可以这样调度 python:
python /Users/gyd/Desktop/auto_send_email.py subject msg toaddrs fromaddr smtpaddr password
然后在 auto_send_email.py 中:
import sys # 自己 import sys...if __name__ == '__main__':
sendmail(*sys.argv[1:])
❾ python类中如何自动调用函数
你这是继承了框架的类,调用应该是在框架内部,你写的这个def相当于重写
❿ 举个栗子!Tableau 技巧(201):在 Prep 中调用 Python 处理复杂数据
Tableau Prep 正在被越来越多的数据粉使用,作为专业的数据准备工具,Prep 提供了常用的数据处理功能,例如分组、转置、计算等,还提供了对 R 语言和 Python 脚本的支持。
● 之前分享过栗子: 用 Prep 轻松实现数据去重 、 用 Prep 数据去重的三种场景 、 用 Prep 正则表达式拆分复杂字段 。
不过,有一些复杂的场景,比如:需要计算相关系数,Tableau 本身提供的相关系数计算方法 CORR() 只能一次计算两个字段的相关系数,如果遇到需要建立相关系数矩阵的情况,处理起来就比较麻烦。
这种情况,可以通过 Prep 调用Python 脚本来加速数据清理,实现对多个字段计算皮尔逊相关系数( Pearson correlation coefficient,更多信息可自行了解)。
如何在Prep 调用 Python 脚本?今天的🌰学起来!
本期《举个栗子》,我们要给大家分享的 Tableau 技巧是:在 Prep 中调用 Python 处理复杂数据。
为方便学习,栗子使用 Tableau 自带的“示例-超市”数据。掌握栗子方法后,数据粉可尝试使用自己的数据源。懒癌患者可通过以下链接获取栗子数据源:
https://www.dkmeco.com/cms/course/detail/539
具体步骤如下:
1、 安装 Python
首先,安装 Python 。因为 TabPy 暂不支持最新版本的 Python,所以安装 Python3.7 即可(安装步骤不赘述,教程可自行上网搜索)。
安装 TabPy(Python 的扩展包),用于 Tableau 与 Python 进行数据交互。另外,由于数据是以 pandas.DataFrame 格式存储的,所以需要同时安装 pandas。
此时,可以使用浏览器访问 http://localhost:9004/,会出现 TabPy 的欢迎页面。
2、 编写脚本
接着,需要编写计算相关系数的 Python 脚本,以供 Tableau Prep 调用。
➤ 脚本首先必须引入 pandas ,才能识别 Tableau Prep 传递的数据。
➤ 创建 get_output_schema() 方法,Tableau Prep 需要该访问指明返回的数据对象格式。
prep_string() 和 prep_decimal() 都是 Prep 支持的数据类型的名称,直接写即可。附 Prep 的数据类型如下:
➤ 创建计算相关系数的方法,input 是 prepy 调用该方法时传入的数据对象,即该脚本步骤所传入的数据表。
编写完成后,保存文件名为 tabpy.py。
3、 Prep 调用 Python
然后,打开 Tableau Prep,单击顶部菜单栏“帮助”,下拉菜单选择:设置和性能-管理分析扩展程序连接。
键入第二步建立的 TabPy 服务器信息,分析程序类型选择 Tableau Python(TabPy) 服务器,服务器填默认:Localhost, 端口默认:9004,用户名和密码没有设置的可以不用填写。
4、 构建数据矩阵
最后,在 Prep 中建立流程。
使用“示例-超市”数据集中的订单数据,取用“销售额”、“数量”、“折扣”、“利润”四个度量字段。
新建一个脚本步骤:单击数据表右侧
按钮,下拉菜单选择:脚本。
连接类型选择:TableuPython(TabPy)服务器,选择第三步保存的 tabpy.py 文件,并填写 get_corr 方法名。
完成后,就可以在右侧窗口看到销售额等四个字段的相关系数矩阵。
本期的 Tableau 技巧,你 Get 到了吗?赶快试试看吧!
下一期《举个栗子》,再会~