當前位置:首頁 » 編程語言 » python函數調用自己

python函數調用自己

發布時間: 2023-06-26 03:15:53

A. python中怎麼調用自定義函數

如果自定義函數,是在當前文件中定義的,直接調用即可,就像樓上回答的一樣;如果是在別的模塊中定義的,那麼要在當前文件中調用,就需要先導入對應的模塊,
導入方法:在當前文件代碼最前面加上 import 模塊名
比如,你在文件test.py中定義了函數sum,那麼你要在當前文件頭部,添加:
from test import *

B. Python函數的定義(構造)和調用

這里來給大家演示一下,函數的定義或構造,並調用函數來實現封裝後的效果。

首先我們來看看想實現下面的這個效果,如果不使用函數應該怎麼實現。

以上兩種返回結果都是1-9這幾個數字。

以上兩種方法,第一種代碼重復率太高,代碼美觀效果太差,雖然能實現效果,但是因為數量比較少,還能手工打出來這幾行代碼,如果是列印1-100000就很難實現了。這時候for循環還是可以實現的,但是for循環只能實現類似的數字和變數循環,無法進行復雜的功能開發。鑒於此,函數這個概念就被python引入了,下面先來看看函數是怎麼實現上面的效果的,還是兩種方法。

這時候如果想實現上面的列印結果就直接使用函數名+小括弧調用函數就可以了,這種類型的語法,不僅可以反復使用,而且封裝後的代碼更美觀。

C. Python回調函數用法


本文實例講述了Python回調函數用法。分享給大家供大家參考。具體分析如下:
一、網路上對回調函數的解釋:
回調函數就是一個通過函數指針調用的函數。如果你把函數的指針(地址)作為參數傳遞給另一個函數,當這個指針被用為調用它所指向的函數時,我們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。
二、什麼是回調:
軟體握亂模塊之間總是存在著一定的介面毀謹,從調用方式上,可以把他們分為三類:同步調用、回調和非同步調用。同步調用是一種阻塞式調用,調用方要等待對方執行完畢才返回,它是一種單向調用;回調是一種雙向調用模式,也就是說,被調用方在介面被調用時也會調用對方的介面;非同步調用是一種類似消息或事件的機制,不過它的調用方向剛好相反,介面的服務在收到某種訊息或發生某種事件時,會主動通知客戶方(即調用客戶方的介面)。回調和非同步調用的關系非常緊密,通常我們使用回調來實現非同步消息的注冊,通過非同步調用來實現消息的通知。同步調用是三者當中段余檔最簡單的,而回調又常常是非同步調用的基礎,因此,下面我們著重討論回調機制在不同軟體架構中的實現。
三、一個小例子:
16
17
18
19
20
21
22
#call.py
import called
def callback():
print in callback
def main():
#called.test()
called.test_call(callback)
print in call.py
main()
#called.py
def test():
print in called.py test()
def test_call(p_call):
print in called.py test_call()
p_call()
joe@joe:~/test/python$ python call.py
in called.py test_call()
in callback
in call.py
joe@joe:~/test/python$
網上搜到的一個面向對象實現的例子:
當你要加入回調(Callback)功能的時候,代碼往往會偏重於回調的實現而不是問題本身了。一個解決方法就是實現一個通用的基礎類來解決回調的需求,然後再來實現你為某個事件(Event)所綁定(Binding)的方法(Method)。
代碼如下:
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class CallbackBase:
def __init__(self):
self.__callbackMap = {}
for k in (getattr(self, x) for x in dir(self)):
if hasattr(k, bind_to_event):
self.__callbackMap.setdefault(k.bind_to_event, []).append(k)
elif hasattr(k, bind_to_event_list):
for j in k.bind_to_event_list:
self.__callbackMap.setdefault(j, []).append(k)
## staticmethod is only used to create a namespace
@staticmethod
def callback(event):
def f(g, ev = event):
g.bind_to_event = ev
return g
return f
@staticmethod
def callbacklist(eventlist):
def f(g, evl = eventlist):
g.bind_to_event_list = evl
return g
return f
def dispatch(self, event):
l = self.__callbackMap[event]
f = lambda *args, **kargs:
map(lambda x: x(*args, **kargs), l)
return f
## Sample
class MyClass(CallbackBase):
EVENT1 = 1
EVENT2 = 2
@CallbackBase.callback(EVENT1)
def handler1(self, param = None):
print handler1 with param: %s % str(param)
return None
@CallbackBase.callbacklist([EVENT1, EVENT2])
def handler2(self, param = None):
print handler2 with param: %s % str(param)
return None
def run(self, event, param = None):
self.dispatch(event)(param)
if __name__ == __main__:
a = MyClass()
a.run(MyClass.EVENT1, mandarina)
a.run(MyClass.EVENT2, naranja)
這里有一個類,它有兩個事件(EVENT1和EVENT2)和兩個處理函數(handler)。第一個處理函數handler1注冊了EVENT1,而第二個處理函數handler2當EVENT1或者EVENT2發生的時候都會執行(即注冊了全部的事件)。
運行函數(run)在MyClass的主循環中,它會將對應的事件派送(dispatch)出去。這(這里指dispatch函數)會返回一個函數,我們可以把所有需要傳給這個函數的參數列表傳給它。這個函數運行結束會返回一個列表(list),列表中是所有的返回值。
也許,使用Metaclass能夠實現的更優雅一些吧。
希望本文所述對大家的Python程序設計有所幫助。

D. 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調用

E. Python調用自定義模塊方法有什麼

import語句

自定義模塊可以採用import語句來進行引入,其操作步驟是先導入模塊,再調用模塊中包含的函數,可將自定義模塊放入當前目錄,便於解釋器路徑搜索,以下是導入自定義hello.py模塊,並調用World函數的實例:

#!/usr/bin/python

#-*- coding: UTF-8 -*-

#導入模塊

import hello

#現在可以調用模塊里包含的函數了

support.print_func("World")

輸出結果為:

Hello World!

以上實例也可以採用from…import的方法進行實現,是指從一個模塊中導入指定的部分到當前命名空間中,以上功能可寫成:

#!/usr/bin/python

#-*- coding: UTF-8 -*-

from hello import World

如果要將模塊中的所有內容全部導入當前命名空間,可採用from…import*的方法,具體實例如下:

#!/usr/bin/python

#-*- coding: UTF-8 -*-

from hello import *

還需注意,當要導入一個模塊時,Python解釋器會對模塊的位置進行搜索,具體搜索順序規律如下:

1.當前目錄;

2.如果不在當前目錄,Python則搜索在shell變數PYTHONPATH下的每個目錄;

3.如果都找不到,Python會察看默認路徑。

F. python中如何調用自己寫的函數

在python中,除了調用下載的擴展庫之外,還可以自定義函數,方便自己。把基礎模塊放在固定文件夾(或相對固定文件夾),使用sys.append(r』自定義的模塊路徑』)實例如下:
1、在E:pycharm新建hello.py實現基礎功能函數(定義一個hello()函數)
2、 調用自定義的函數
3、 運行結果為:
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python中如何調用自己寫的函數的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

G. python怎麼調用自己寫的函數

直接在你需要調用的地方寫上函數名字加括弧就可以

熱點內容
戰艦少女r紅茶腳本 發布:2025-02-12 04:05:05 瀏覽:465
峰火戰國伺服器什麼時候開 發布:2025-02-12 03:56:31 瀏覽:175
電腦配置慢怎麼解壓 發布:2025-02-12 03:52:18 瀏覽:716
androidsdk功能 發布:2025-02-12 03:43:07 瀏覽:87
阿里雲伺服器可以訪問外網嗎 發布:2025-02-12 03:42:20 瀏覽:880
腳本的生命周期順序 發布:2025-02-12 03:37:28 瀏覽:369
素數加密 發布:2025-02-12 03:37:27 瀏覽:803
ar源碼 發布:2025-02-12 03:32:04 瀏覽:656
閱圖文件夾 發布:2025-02-12 03:30:22 瀏覽:762
舊手機存儲資料 發布:2025-02-12 03:29:42 瀏覽:472