eval exec execfile 使用方法

2021-07-27 08:57:54 字數 1673 閱讀 2773

有待改進!

eval(str [,globals [,locals ]])函式將字串str當成有效python表

達式來求值,並返回計算結果。

同樣地, exec語句將字串str當成有效python**來執行.提供給exec的**的命名空間和exec語句的命名空間相同.

最後,execfile(filename [,globals [,locals ]])函式可以用來執行乙個檔案,看下面的例子:

>>> eval('3+4')

7>>> exec 'a=100'

>>> a

100>>> execfile(r'c:\test.py')

hello,world!

>>>

預設的,eval(),exec,execfile()所執行的**都位於當前的名字空間中. eval(), exec,和 execfile()函式也可以接受乙個或兩個

可選字典引數作為**執行的全域性名字空間和區域性名字空間. 例如:

切換行號 

1 globals =

5 locals =

6 7 # 將上邊的字典作為全域性和區域性命名空間

8 a = eval("3*x + 4*y", globals, locals)

9 exec "for b in birds: print b" in globals, locals   # 注意這裡的語法

10 execfile("foo.py", globals, locals)

如果你省略了乙個或者兩個命名空間引數,那麼當前的全域性和區域性命名空間就被使用.如果乙個函式體內嵌巢狀函式或lambda匿名函式

時,同時又在函式主體中使用exec或execfile()函式時, 由於牽到巢狀作用域,會引發乙個syntaxerror異常.

注意例子中exec語句的用法和eval(), execfile()是不一樣的. exec是乙個語句(就象print或while), 而eval()和execfile()則是內

建函式.

exec(str) 這種形式也被接受,但是它沒有返回值。 --weizhong

當乙個字串被exec,eval(),或execfile()執行時,直譯器會先將它們編譯為位元組**,然後再執行.這個過程比較耗時,所以如果需要

對某段**執行很多次時,最好還是對該**先進行預編譯,這樣就不需要每次都編譯一遍**,可以有效提高程式的執行效率。

compile(str ,filename ,kind )函式將乙個字串編譯為位元組**, str是將要被編譯的字串, filename是定義該字串變數的文

件,kind引數指定了**被編譯的型別-- 'single'指單個語句, 'exec'指多個語句, 'eval'指乙個表示式. cmpile()函式返回乙個代

碼物件,該物件當然也可以被傳遞給eval()函式和exec語句來執行,例如:

1 str = "for i in range(0,10): print i"

2 c = compile(str,'','exec')      # 編譯為位元組**物件

3 exec c                          # 執行

4 5 str2 = "3*x + 4*y"

6 c2 = compile(str2, '', 'eval') # 編譯為表示式

7 result = eval(c2)               # 執行

dbms output put line使用方法

begin dbms output.put line a end 如果你是再sql plus中,只要再環境中打出 set serveroutput on 就可以了.還有一種方法 就是使用環境中的繫結變數也可以.再環境中定義 variable name varchar2 50 然後把過程新增乙個out...

sp addlinkedserver使用方法

exec sp droplinkedsrvlogin dbvip,null exec sp dropserver dbvip exec sp addlinkedserver server dbvip 被訪問的伺服器別名 srvproduct provider sqloledb datasrc ser...

SQL Server Profiler使用方法

一 sql server profiler使用方法 1 單擊開始 程式 microsoft sql server 2005 效能工具 sql server profiler,如下圖 2 彈出sql server profiler視窗,如下圖 3 在工作視窗內,滑鼠單擊 檔案 新建跟蹤 n 彈出資料庫...