中調用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 到了嗎?趕快試試看吧!
下一期《舉個栗子》,再會~