㈠ python函數的定義(構造)和調用
這里來給大家演示一下,函數的定義或構造,並調用函數來實現封裝後的效果。
首先我們來看看想實現下面的這個效果,如果不使用函數應該怎麼實現。
以上兩種返回結果都是1-9這幾個數字。
以上兩種方法,第一種代碼重復率太高,代碼美觀效果太差,雖然能實現效果,但是因為數量比較少,還能手工打出來這幾行代碼,如果是列印1-100000就很難實現了。這時候for循環還是可以實現的,但是for循環只能實現類似的數字和變數循環,無法進行復雜的功能開發。鑒於此,函數這個概念就被python引入了,下面先來看看函數是怎麼實現上面的效果的,還是兩種方法。
這時候如果想實現上面的列印結果就直接使用函數名+小括弧調用函數就可以了,這種類型的語法,不僅可以反復使用,而且封裝後的代碼更美觀。
㈡ 在一個python腳本中調用另一個python腳本中的函數
from mydefa import A_def
print(A_def(2))#表示當前Python腳本中調用另一個Python腳本(mydefa.py)中的A_def(2)函數
#或者import mydefa;print(mydefa.A_def(2))
'''以下代碼存入mydefa.py
import math
def A_def(r):
(Tab)return math.pi*r*r
#from math import pi
#def A_def(r):
#(Tab)return pi*r*r
'''
㈢ 怎樣讓Python腳本與C++程序互相調用
二、Python調用C/C++x0dx0ax0dx0ax0dx0a1、Python調用C動態鏈接庫x0dx0ax0dx0a Python調用C庫比較簡單,不經過任何封裝打包成so,再使用python的ctypes調用即可。x0dx0a(1)C語言文件:pycall.cx0dx0ax0dx0a[html] view plain x0dx0a/***gcc -o libpycall.so -shared -fPIC pycall.c*/ x0dx0a#include x0dx0a#include x0dx0aint foo(int a, int b) x0dx0a{ x0dx0a printf("you input %d and %d
", a, b); x0dx0a return a+b; x0dx0a} x0dx0a(2)gcc編譯生成動態庫libpycall.so:gcc -o libpycall.so -shared -fPIC pycall.c。使用g++編譯生成C動態庫的代碼中的函數或者方法時,需要使用extern "C"來進行編譯。x0dx0a(3)Python調用動態庫的文件:pycall.pyx0dx0ax0dx0a[html] view plain x0dx0aimport ctypes x0dx0all = ctypes.cdll.LoadLibrary x0dx0alib = ll("./libpycall.so") x0dx0alib.foo(1, 3) x0dx0aprint '***finish***' x0dx0a(4)運行結果:x0dx0ax0dx0ax0dx0a2、Python調用C++(類)動態鏈接庫 x0dx0ax0dx0a 需要extern "C"來輔助,也就是說還是只能調用C函數,不能直接調用方法,但是能解析C++方法。不是用extern "C",構建後的動態鏈接庫沒有這些函數的符號表。x0dx0a(1)C++類文件:pycallclass.cppx0dx0ax0dx0a[html] view plain x0dx0a#include x0dx0ausing namespace std; x0dx0a x0dx0aclass TestLib x0dx0a{ x0dx0a public: x0dx0a void display(); x0dx0a void display(int a); x0dx0a}; x0dx0avoid TestLib::display() { x0dx0a cout<<"First display"< x0dx0a#include x0dx0a#include x0dx0a x0dx0aint fac(int n) x0dx0a{ x0dx0a if (n < 2) return(1); /* 0! == 1! == 1 */ x0dx0a return (n)*fac(n-1); /* n! == n*(n-1)! */ x0dx0a} x0dx0a x0dx0achar *reverse(char *s) x0dx0a{ x0dx0a register char t, /* tmp */ x0dx0a *p = s, /* fwd */ x0dx0a *q = (s + (strlen(s) - 1)); /* bwd */ x0dx0a x0dx0a while (p < q) /* if p < q */ x0dx0a { x0dx0a t = *p; /* swap & move ptrs */ x0dx0a *p++ = *q; x0dx0a *q-- = t; x0dx0a } x0dx0a return(s); x0dx0a} x0dx0a x0dx0aint main() x0dx0a{ x0dx0a char s[BUFSIZ]; x0dx0a printf("4! == %d
", fac(4)); x0dx0a printf("8! == %d
", fac(8)); x0dx0a printf("12! == %d
", fac(12)); x0dx0a strcpy(s, "abcdef"); x0dx0a printf("reversing 'abcdef', we get '%s'
", x0dx0a reverse(s)); x0dx0a strcpy(s, "madam"); x0dx0a printf("reversing 'madam', we get '%s'
", x0dx0a reverse(s)); x0dx0a return 0; x0dx0a} x0dx0a 上述代碼中有兩個函數,一個是遞歸求階乘的函數fac();另一個reverse()函數實現了一個簡單的字元串反轉演算法,其主要目的是修改傳入的字元串,使其內容完全反轉,但不需要申請內存後反著復制的方法。x0dx0a(2)用樣板來包裝代碼x0dx0a 介面的代碼被稱為「樣板」代碼,它是應用程序代碼與Python解釋器之間進行交互所必不可少的一部分。樣板主要分為4步:a、包含Python的頭文件;b、為每個模塊的每一個函數增加一個型如PyObject* Mole_func()的包裝函數;c、為每個模塊增加一個型如PyMethodDef MoleMethods[]的數組;d、增加模塊初始化函數void initMole()。
㈣ python語言中可以調用的函數有哪些
Python語言中有碰鋒很多內置函數和標准庫函數可以直接調用,同時還可以自定義函數和調用其他模塊中的函數。以下是一些常用的Python內置函數和標准庫函數:
- 數學函數:abs(), pow(), round(), max(), min(), math庫中的sin(), cos(), tan(), pi等函數。
- 字元串函遲腔數:len(), str(), int(), float(), ord(), chr(), upper(), lower(), replace(), split()等函數。
- 列表函數:append(), extend(), insert(), remove(), pop(), sort(), reverse()等函數。
- 文件操作函數:open(), read(), write(), close()等函數。
- 時間和日期函數:time(), sleep(), strftime()等函數。
- 正則表達式函數:re.compile(), re.search(), re.match(), re.sub()等函數。
- 網路編程函數:socket庫中笑旦晌的socket(), bind(), listen(), accept()等函數。
㈤ python中功能內的功能,如何在外部調用類內,方法內的方法呢在外部又是怎樣調用到的
外部調用可以通過記事本,寫入函數改為.py後綴,放到需要調用的文件夾之下,再利用import進行調用,可以直接通過賦予的名字調用class下面的方法,調用方法用.就可以