您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“如何理解Python解釋器和IPython”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
Python是自帶解釋器的,我們?cè)诿钚休斎雙ython即可進(jìn)入python的解釋器環(huán)境:
$> python Python 2.7.15 (default, Oct 2 2018, 11:47:18) [GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.2)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> site = "www.flydean.com" >>> site 'www.flydean.com' >>>
python解釋器的提示符是>>>
。
python提供了一個(gè)非常有用的命令help,我們可以使用help來(lái)查看要使用的命令。
>>> help Type help() for interactive help, or help(object) for help about object.
在Python3中,還提供了tab的補(bǔ)全功能:
>>> site 'www.flydean.com' >>> site. site.capitalize( site.expandtabs( site.isalpha( site.isprintable( site.lower( site.rindex( site.splitlines( site.upper( site.casefold( site.find( site.isdecimal( site.isspace( site.lstrip( site.rjust( site.startswith( site.zfill( site.center( site.format( site.isdigit( site.istitle( site.maketrans( site.rpartition( site.strip( site.count( site.format_map( site.isidentifier( site.isupper( site.partition( site.rsplit( site.swapcase( site.encode( site.index( site.islower( site.join( site.replace( site.rstrip( site.title( site.endswith( site.isalnum( site.isnumeric( site.ljust( site.rfind( site.split( site.translate(
使用起來(lái)非常的方便。
和Python自帶的解釋器之外,還有一個(gè)更加強(qiáng)大的解釋器叫做IPython。我們一起來(lái)看看。
IPython是一個(gè)非常強(qiáng)大的解釋器,通常它是和jupyter notebook一起使用的。在IPython3.X中,IPython和Jupyter是作為一個(gè)整體一起發(fā)布的。但是在IPython4.X之后,Jupyter已經(jīng)作為一個(gè)單獨(dú)的項(xiàng)目,從IPython中分離出來(lái)了。
使用IPython很簡(jiǎn)單,輸入IPython命令即可:
$> ipython Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33) Type 'copyright', 'credits' or 'license' for more information IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help. In [1]: site= "www.flydean.com" In [2]: site Out[2]: 'www.flydean.com'
IPython的提示符是In [1]:
基本上Python自帶的命令在IPython中都是可以使用的。
IPython提供了4個(gè)非常有用的命令:
command | description |
---|---|
? | Introduction and overview of IPython’s features. |
%quickref | Quick reference. |
help | Python’s own help system. |
object? | Details about ‘object’, use ‘object??’ for extra details. |
IPython中有兩種魔法函數(shù),一種是Line magics,一種是Cell magics。
Line magics 接收本行的輸入作為函數(shù)的輸入,是以%
開(kāi)頭的。而Cell magics可以接收多行的數(shù)據(jù),直到你輸入空白回車(chē)為止。是以%%
開(kāi)頭的。
比如我們想要看一個(gè)timeit的魔法函數(shù)的用法,可以使用Object?
來(lái)表示:
$> In [4]: %timeit? Docstring: Time execution of a Python statement or expression Usage, in line mode: %timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] statement or in cell mode: %%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code code code...
timeit用來(lái)統(tǒng)計(jì)程序的執(zhí)行時(shí)間,我們分別看下Line magics和Cell magics的使用:
In [4]: %timeit? In [5]: %timeit range(1000) 199 ns ± 3.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) In [6]: %%timeit range(1000) ...: range(1000) ...: 208 ns ± 12.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
事實(shí)上,如果只是LIne magics的話,我們可以省略前面的%,但是對(duì)于Cell magics來(lái)說(shuō),是不能省略的。
In [7]: timeit range(1000) 200 ns ± 4.03 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
常見(jiàn)的魔法函數(shù)有下面幾種:
代碼相關(guān)的: %run
, %edit
, %save
, %macro
, %recall
, etc.
shell環(huán)境相關(guān)的: %colors
, %xmode
, %automagic
, etc.
其他的函數(shù): %reset
, %timeit
, %%writefile
, %load
, or %paste
.
使用%run
可以方便的運(yùn)行外部的python腳本。
In [8]: run? Docstring: Run the named file inside IPython as a program. Usage:: %run [-n -i -e -G] [( -t [-N<N>] | -d [-b<N>] | -p [profile options] )] ( -m mod | file ) [args]
run有幾個(gè)非常有用的參數(shù),比如-t 可以用來(lái)統(tǒng)計(jì)程序的時(shí)間。-d可以進(jìn)行調(diào)試環(huán)境,-p可以進(jìn)行profiler分析。
使用%edit
可以編輯多行代碼,在退出之后,IPython將會(huì)執(zhí)行他們。
如果不想立即執(zhí)行的話,可以加上-x參數(shù)。
可以使用%debug
或者 %pdb
來(lái)進(jìn)入IPython的調(diào)試環(huán)境:
In [11]: debug > /Users/flydean/.pyenv/versions/anaconda3-5.1.0/lib/python3.6/site-packages/IPython/core/compilerop.py(99)ast_parse() 97 Arguments are exactly the same as ast.parse (in the standard library), 98 and are passed to the built-in compile function.""" ---> 99 return compile(source, filename, symbol, self.flags | PyCF_ONLY_AST, 1) 100 101 def reset_compiler_flags(self): ipdb>
In [12]: pdb Automatic pdb calling has been turned ON In [13]: pdb Automatic pdb calling has been turned OFF
或者可以使用 %run -d theprogram.py
來(lái)調(diào)試一個(gè)外部程序。
IPython可以存儲(chǔ)你的輸入數(shù)據(jù)和程序的輸出數(shù)據(jù),IPython的一個(gè)非常重要的功能就是可以獲取到歷史的數(shù)據(jù)。
在交互環(huán)境中,一個(gè)簡(jiǎn)單的遍歷歷史輸入命令的方式就是使用up- 和 down- 箭頭。
更強(qiáng)大的是,IPython將所有的輸入和輸出都保存在In 和 Out這兩個(gè)變量中,比如In[4]。
In [1]: site = "www.flydean.com" In [2]: site Out[2]: 'www.flydean.com' In [3]: In Out[3]: ['', 'site = "www.flydean.com"', 'site', 'In']
可以使用 _ih[n]來(lái)訪問(wèn)特定的input:
In [4]: _ih[2] Out[4]: 'site'
_i, _ii, _iii 可以分別表示前一個(gè),前前一個(gè)和前前前一個(gè)輸入。
除此之外,全局變量 _i<n> 也可以用來(lái)訪問(wèn)輸入,也就是說(shuō):
_i<n> == _ih[<n>] == In[<n>] _i14 == _ih[14] == In[14]
同樣的,對(duì)于輸出來(lái)說(shuō)也存在著三種訪問(wèn)方式:
_<n> == _oh[<n>] == Out[<n>] _12 == Out[12] == _oh[12]
最后的三個(gè)輸出也可以通過(guò) _
, __
和 ___
來(lái)獲取。
還可以使用%history來(lái)列出之前的歷史數(shù)據(jù)進(jìn)行選擇。
history可以和 %edit,
%rerun,
%recall,
%macro,
%save和
%pastebin 配和使用:
通過(guò)傳入數(shù)字,可以選擇歷史的輸入行號(hào)。
%pastebin 3 18-20
上面的例子會(huì)選擇第3行和第18-20行輸入。
使用!可以直接運(yùn)行系統(tǒng)命令:
In [27]: !pwd /Users/flydean/Downloads
還可以用變量接收運(yùn)行的結(jié)果,比如 : files = !ls
“如何理解Python解釋器和IPython”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。