目錄
- 一.前言
- 二.Python eval 與 exec 函式簡介
- 三.Python eval 與 exec 函式使用
- 1.exec 函式執行代碼段
- 2.exec 函式執行 py 檔案
- 四.猜你喜歡
零基礎 Python 學習路線推薦 : Python 學習目錄 >> Python 基礎入門
一.前言
Python 內置函式 execfile 和 內置函式 exec 功能實際上都一樣,不過函式 execfile 是 python2.0 版本,函式 exec 屬于 Python3.0 版本,在使用的時候注意區分一下,具體使用方法參考下面的詳細介紹,
二.Python eval 與 exec 函式簡介
- 內置函式 exec 可以動態的執行復雜的代碼片段;
- 內置函式 exec 可以執行 py 檔案中的 Python 代碼;
由于現在的 Python2.0 版本已經停止更新,我們主要介紹 Python3.0 版本的內置函式 exec ,其實兩個函式的引數都一樣,名字不同而已,語法如下:
'''
引數介紹:
source — py檔案內容或者代碼段;
globals — 預設引數,默認為空,變數作用域,全域命名空間,如果被提供,則必須是一個字典物件;
locals — 預設引數,默認為空,變數作用域,區域命名空間,如果被提供,可以是任何映射物件;
回傳值:回傳值永遠是None;
'''
exec(source, globals=None, locals=None)
三.Python eval 與 exec 函式使用
1.exec 函式執行代碼段
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python eval 與 exec 函式.py
@Time:2021/04/29 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
x = 100
source_code = """
z = 30
sum = x + y + z #一大包代碼
print(x,y,z,sum)
"""
def main():
y = 20
a = exec(source_code) # 100+20+30
b = exec(source_code,{'x':10,'y':20}) # 10+20+30
c = exec(source_code,{'x':10,'y':20},{'y':3,'z':4}) # 10+3+30,x是定義全域變數1,y是區域變數
print(a,b,c) # exec回傳值永遠都是 None
if __name__ == "__main__":
main()
'''
輸出結果:
100 20 30 150
10 20 30 60
10 3 30 43
None None None
'''
代碼分析:source_code 是一個復雜的代碼片段,而內置函式 exec 一樣能動態執行,比內置函式 eval 更加強悍喲!
2.exec 函式執行 py 檔案
內置函式 exec 除了能執行復雜的代碼片段,還可以執行 py 檔案中的 Python 代碼,舉個栗子:假如有 test.txt 檔案,內容如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:猿說編程
@Blog(個人博客地址): www.codersrc.com
@File:Python eval 與 exec 函式.py
@Time:2021/04/29 07:37
@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累!
"""
# e:/test.txt
def main():
x = 20
y = 50
print(x+y)
print("www.codersrc.com")
if __name__ == "__main__":
main()
然后使用內置函式 exec 執行這個 txt 檔案的 Python 代碼:
with open('e://test.txt','r') as f:
exec(f.read())
'''
輸出結果:
70
www.codersrc.com
'''
四.猜你喜歡
- Python for 回圈
- Python 字串
- Python 串列 list
- Python 元組 tuple
- Python 字典 dict
- Python 條件推導式
- Python 串列推導式
- Python 字典推導式
- Python 函式宣告和呼叫
- Python 不定長引數 *argc/**kargcs
- Python 匿名函式 lambda
- Python return 邏輯判斷運算式
- Python 字串/串列/元組/字典之間的相互轉換
- Python 區域變數和全域變數
- Python type 函式和 isinstance 函式區別
- Python is 和 == 區別
- Python 可變資料型別和不可變資料型別
- Python 淺拷貝和深拷貝
未經允許不得轉載:猿說編程 ? Python eval 與 exec 函式
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/288161.html
標籤:Python
