最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于Python中compile() 函數(shù)簡(jiǎn)單實(shí)用示例詳解

 更新時(shí)間:2023年05月29日 09:07:09   作者:門(mén)前大橋下丶  
這篇文章主要介紹了關(guān)于compile() 函數(shù)簡(jiǎn)單實(shí)用示例,compile() 函數(shù)將一個(gè)字符串編譯為字節(jié)代碼,compile將代碼編譯為代碼對(duì)象,應(yīng)用在代碼中可以提高效率,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

compile() 函數(shù)是什么

compile() 函數(shù)將一個(gè)字符串編譯為字節(jié)代碼。
compile將代碼編譯為代碼對(duì)象,應(yīng)用在代碼中可以提高效率。

語(yǔ)法

compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

參數(shù)

  • source:表示要編譯的源代碼字符串、AST對(duì)象或代碼對(duì)象。
  • filename:表示源代碼的文件名。如果源代碼不是從文件中讀取的,可以使用一個(gè)虛擬的文件名。
  • mode:表示編譯模式,可以指定為 exec, eval, single。
  • flags:可選參數(shù),用于指定編譯時(shí)的標(biāo)志??梢允褂胊st.PyCF_*常量進(jìn)行按位或運(yùn)算的組合,用于控制編譯過(guò)程中的不同行為。
  • dont_inherit:可選參數(shù),如果設(shè)置為T(mén)rue,則編譯時(shí)不會(huì)繼承當(dāng)前作用域的符號(hào)表。
  • optimize:可選參數(shù),指定編譯優(yōu)化級(jí)別的標(biāo)志。默認(rèn)值為-1,表示使用默認(rèn)優(yōu)化級(jí)別。

返回表達(dá)式執(zhí)行結(jié)果。

示例

首先code下新建demo.py

from code.cal import add,mul
from code.sqrt import sqrt
__all__ =[ "add","mul","sqrt"]

cal.py

def add(a,b):
	return a+b
def mul(a,b):
	return a*b

sqrt.py

def sqrt(a):
	return a**2

編寫(xiě)調(diào)用腳本test.py

import traceback
import os
import requests
import threading
import time
import json
import logging
log=logging.getLogger()
def compile_funcs(codefile,funname_list):
    """
    Args:
        codefile: Path of Python's Code file
        funname_list: list of function names
    Return: dict of func info     
    """
    try:
    	#讀取代碼
        with open(codefile) as f:
            code=f.read()
        #將字符串編譯為字節(jié)代碼
        methods_obj=compile(code,"","exec")
        scope = {}
        '''
        exec函數(shù)族的作用是根據(jù)指定的文件名找到可執(zhí)行文件,并用它來(lái)取代調(diào)用進(jìn)程的內(nèi)容;
        換句話說(shuō),就是在調(diào)用進(jìn)程內(nèi)部執(zhí)行一個(gè)可執(zhí)行文件。這里的可執(zhí)行文件既可以是二進(jìn)制文件,
        也可以是任何Linux下可執(zhí)行的腳本文件
        '''
        exec(methods_obj,scope)
        fun_object={}
        for name in funname_list:
            fun_obj= scope.get(name,None)
            fun_object[name] = fun_obj
        return fun_object
    except Exception as e:
        traceback.print_exc(e)
        return None
#函數(shù)名稱
func_lists=['add','mul','sqrt']
#傳入code下的demo.py
func_dict= compile_funcs("./code/demo.py",func_lists)
#獲取返回對(duì)象
add = func_dict['add']
mul = func_dict['mul']
sqrt = func_dict['sqrt']
#傳參調(diào)用
c = add(2,3)
d = mul(3,3)
e = sqrt(5)
print(f"add(2,3)={c}")
print(f"mul(3,3)=wppm3vysvbp")
print(f"sqrt(5)={e}")

結(jié)果:

add(2,3)=5
mul(3,3)=9
sqrt(5)=25

總結(jié)

compile() 函數(shù)的應(yīng)用場(chǎng)景包括:

1、動(dòng)態(tài)執(zhí)行代碼:可以將源代碼字符串編譯為代碼對(duì)象,然后使用exec()函數(shù)執(zhí)行。
2、動(dòng)態(tài)求值表達(dá)式:將單個(gè)表達(dá)式編譯為代碼對(duì)象,然后使用eval()函數(shù)求值。
3、AST分析和修改:將源代碼字符串編譯為AST對(duì)象,然后使用ast模塊進(jìn)行分析和修改操作,例如靜態(tài)代碼分析、代碼轉(zhuǎn)換等。
在使用某些代碼需要提煉出公共的代碼塊是可以使用,方便后續(xù)的使用和添加;

到此這篇關(guān)于關(guān)于compile() 函數(shù)簡(jiǎn)單實(shí)用示例的文章就介紹到這了,更多相關(guān)compile() 函數(shù)實(shí)用示例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python提取視頻中圖片的示例(按幀、按秒)

    Python提取視頻中圖片的示例(按幀、按秒)

    這篇文章主要介紹了Python提取視頻中圖片的示例,分別按幀和按秒提取,幫助大家利用python處理視頻,獲取素材,感興趣的朋友可以了解下
    2020-10-10
  • Django自定義manage命令實(shí)例代碼

    Django自定義manage命令實(shí)例代碼

    這篇文章主要介紹了Django自定義manage命令實(shí)例代碼,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Python中asyncore的用法實(shí)例

    Python中asyncore的用法實(shí)例

    這篇文章主要介紹了Python中asyncore的用法,asyncore提供了方便的網(wǎng)絡(luò)操作方法,本文以連接并解析www.python.org主頁(yè)為例加以說(shuō)明,需要的朋友可以參考下
    2014-09-09
  • python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理

    python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理

    這篇文章主要介紹了python 進(jìn)制轉(zhuǎn)換 int、bin、oct、hex的原理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • django應(yīng)用JWT(JSON?Web?Token)實(shí)戰(zhàn)教程

    django應(yīng)用JWT(JSON?Web?Token)實(shí)戰(zhàn)教程

    在前后端分離的項(xiàng)目中,JWT(JSON?Web?Token)作為一種廣泛使用的身份驗(yàn)證和授權(quán)機(jī)制,提供了一種安全、高效的方式來(lái)保護(hù)RESTful?API,本文詳細(xì)介紹了JWT的概念、優(yōu)勢(shì)、在Django中的應(yīng)用步驟和使用方法,是構(gòu)建安全、高效Web應(yīng)用的有效指南
    2024-10-10
  • 關(guān)于python的list相關(guān)知識(shí)(推薦)

    關(guān)于python的list相關(guān)知識(shí)(推薦)

    下面小編就為大家?guī)?lái)一篇關(guān)于python的list相關(guān)知識(shí)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Python基礎(chǔ)知識(shí)方法重寫(xiě)+文件處理+異常處理

    Python基礎(chǔ)知識(shí)方法重寫(xiě)+文件處理+異常處理

    這篇文章主要介紹了Python基礎(chǔ)知識(shí)方法重寫(xiě)+文件處理+異常處理,這是基礎(chǔ)知識(shí)分享的第四篇,看到這里了相信大家前幾篇都學(xué)得還不錯(cuò)吧,下面我們繼續(xù)鞏固Python基礎(chǔ)知識(shí),需要的朋友也可以參考一下
    2022-05-05
  • Python實(shí)現(xiàn)從url中提取域名的幾種方法

    Python實(shí)現(xiàn)從url中提取域名的幾種方法

    這篇文章主要介紹了Python實(shí)現(xiàn)從url中提取域名的幾種方法,本文給出了3種方法實(shí)現(xiàn)在URL中提取域名的需求,需要的朋友可以參考下
    2014-09-09
  • Flask學(xué)習(xí)筆記之日志操作配置實(shí)例講解

    Flask學(xué)習(xí)筆記之日志操作配置實(shí)例講解

    這篇文章主要為大家介紹了Flask學(xué)習(xí)筆記之日志操作配置實(shí)例講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Django中ORM的基本使用教程

    Django中ORM的基本使用教程

    這篇文章主要給大家介紹了關(guān)于Django中ORM基本使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論

汝州市| 祁东县| 江川县| 安国市| 永仁县| 绥芬河市| 乌什县| 宁明县| 定西市| 锡林浩特市| 潮州市| 石嘴山市| 平阳县| 隆林| 泗阳县| 奉化市| 巴楚县| 甘肃省| 化隆| 齐齐哈尔市| 五莲县| 富源县| 项城市| 乌拉特后旗| 乌鲁木齐市| 长阳| 麻城市| 营口市| 东城区| 德江县| 龙海市| 罗定市| 曲松县| 福清市| 酒泉市| 于都县| 河池市| 乌拉特前旗| 博白县| 日土县| 江达县|