欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python學習筆記整理3之輸入輸出、python eval函數(shù)

 更新時間:2015年12月14日 11:50:16   投稿:mrr  
這篇文章主要介紹了Python學習筆記整理3之輸入輸出、python eval函數(shù)的相關資料,需要的朋友可以參考下

1. python中的變量:

python中的變量聲明不需要像C++、Java那樣指定變量數(shù)據(jù)類型(int、float等),因為python會自動地根據(jù)賦給變量的值確定其類型。如 radius = 20,area = radius * radius * 3.14159 ,python會自動的將radius看成“整型”,area看成“浮點型”。所以編程時不用再像之前那樣小心翼翼的查看數(shù)據(jù)類型有沒有出錯,挺人性化的。

2. input和print:

先貼個小的程序

# Prompt the user to enter three numbersnumber1 = eval(input("Enter the first number: "))number2 = eval(input("Enter the second number: "))number3 = eval(input("Enter the third number: "))# Compute averageaverage = (number1 + number2 + /      number3) / 3#Display resultprint("The average of ", number1, number2, number3,  
 "is", average)

小程序中的幾個知識點:

1)print的格式,print(itme1, item2, ..., itemk),如果print的內(nèi)容過長,可以直接換行;
2)'/'符號,它是用來連接兩個行的,如果一行內(nèi)容過長可以用該符號來分割;
3)input(" "),獲得輸入數(shù)據(jù),要注意的是,python2.x版本中有兩個輸入函數(shù)input()和raw_input(),input()輸入實數(shù)時,它的值就是實數(shù);而raw_input()不管輸入的是什么,它的值都是string,所以需要用eval()函數(shù)將值轉(zhuǎn)換為實數(shù),eval()下面再深入學習;而在python3.x版本中只有一個輸入函數(shù)input(),它的功能就相當于python2.x中的raw_input()函數(shù),所以編程時要特別注意版本問題,像這樣的差異還有許多。我的程序是在python3.2下解釋的,如果在python2.x下,可以去掉eval()或者將input改成raw_input,結(jié)果一樣。

3. eval()函數(shù)

上面的小程序中用到了eval()函數(shù),功能是將string變成算術(shù)表達式來執(zhí)行,比如eval("1+2")的結(jié)果是3。那么是不是它的功能就局限于此呢?
在這個基礎上,我查了python官方文檔關于eval函數(shù)的定義和解釋。官網(wǎng)python3.4.1文檔中關于eval的定義如下:
eval(expression, globals=None, locals=None)  --- 官方文檔中的解釋是,globals和locals參數(shù)是可選的,如果提供了globals參數(shù),那么它必須是dictionary類型;如果提供了locals參數(shù),那么它可以是任意的map對象。

在繼續(xù)往下之前,要先補充一點關于python命名空間的知識(引用自http://blog.sina.com.cn/s/blog_64668ff00100od2b.html),python是用命名空間來記錄變量的軌跡的,命名空間是一個dictionary,鍵是變量名,值是變量值。

在一個 Python 程序中的任何一個地方,都存在幾個可用的名字空間。每個函數(shù)都有著自已的名字空間,叫做局部名字空間,它記錄了函數(shù)的變量,包括函數(shù)的參數(shù)和局部定義的變 量。每個模塊擁有它自已的名字空間,叫做全局名字空間,它記錄了模塊的變量,包括函數(shù)、類、其它導入的模塊、模塊級的變量和常量。還有就是內(nèi)置名字空間, 任何模塊均可訪問它,它存放著內(nèi)置的函數(shù)和異常。

當一行代碼要使用變量 x 的值時,Python 會到所有可用的名字空間去查找變量,按照如下順序:

1)局部名字空間 - 特指當前函數(shù)或類的方法。如果函數(shù)定義了一個局部變量 x, 或一個參數(shù) x,Python 將使用它,然后停止搜索。

2)全局名字空間 - 特指當前的模塊。如果模塊定義了一個名為 x 的變量,函數(shù)或類,Python 將使用它然后停止搜索。

3)內(nèi)置名字空間 - 對每個模塊都是全局的。作為最后的嘗試,Python 將假設 x 是內(nèi)置函數(shù)或變量。

其實這并不難理解,說白了,就是c++中全局變量和局部變量的意思。比如你在一個函數(shù)中用了num這個變量,它首先會查找函數(shù)里,也就是局部名字空間是否有這個變量名;如果找不到,就會到函數(shù)外也就是全局名字空間中繼續(xù)查找;如果再找不到,就會查找內(nèi)置關鍵字;如果都找不到,那么就只有報NameError了。

理解了這一點,就比較容易了。python的全局名字空間存儲在一個叫g(shù)lobals()的dict對象中;局部名字空間存儲在一個叫l(wèi)ocals()的dict對象中。我們可以用print (locals())來查看該函數(shù)體內(nèi)的所有變量名和變量值。繼續(xù)eval()函數(shù)...

1)當后兩個參數(shù)都為空時,很好理解,就是一個string類型的算術(shù)表達式,計算出結(jié)果即可。等價于eval(expression)。

2)當locals參數(shù)為空,globals參數(shù)不為空時,先查找globals參數(shù)中是否存在變量,并計算。

3)當兩個參數(shù)都不為空時,先查找locals參數(shù),再查找globals參數(shù)。

舉一個小例子:

#test eval() and locals()x = 1y = 1num1 = eval("x+y")print (num1)def g():  
 x = 2  
 y = 2  
 num3 = eval("x+y") 
 print (num3)    
num2 = eval("x+y",globals())  
 # num2 = eval("x+y",globals(),locals()) 
 print (num2)g()

num1的值不用說,是2;num3的值也很好理解,是4;num2的值呢?由于提供了globals()參數(shù),那么首先應當找全局的x和y值,也就是都為1,那么顯而易見,num2的值也是2。如果注釋掉該句,執(zhí)行下面一句呢?根據(jù)第3)點可知,結(jié)果為4。(PS:我的運行環(huán)境是python3.2)當然,也可以顯式的定義dict對象作為eval()的參數(shù),規(guī)則是一樣的。

補充一下:locals()對象的值不能修改,globals()對象的值可以修改,寫一個小程序測試一下。

#test globals() and locals()z=0def f(): 
z = 1  
print (locals())    
locals()["z"] = 2  
print (locals())  
f() globals()["z"] = 2print (z)

可以得出,兩個print (locals())的結(jié)果是一樣的,說明沒有修改成功。而print (z)的值是2,說明修改成功了。另外,貌似locals()可以添加變量,感興趣的可以試一下。

以上內(nèi)容是小編給大家分享的Python學習筆記整理3之輸入輸出、python eval函數(shù)的全部敘述,希望大家喜歡。

相關文章

  • 詳解使用Python寫一個向數(shù)據(jù)庫填充數(shù)據(jù)的小工具(推薦)

    詳解使用Python寫一個向數(shù)據(jù)庫填充數(shù)據(jù)的小工具(推薦)

    這篇文章主要介紹了用Python寫一個向數(shù)據(jù)庫填充數(shù)據(jù)的小工具,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 下載糗事百科的內(nèi)容_python版

    下載糗事百科的內(nèi)容_python版

    代碼是沒問題的,可以正常運行,但是希望做到以下2方面: 1、多線程下載 2、代碼分離度更高,跟面向?qū)ο?
    2008-12-12
  • 初識python的numpy模塊

    初識python的numpy模塊

    這篇文章主要介紹了初識python的numpy模塊,Numpy基于更加現(xiàn)代化的編程語言--python,python憑借著開源、免費、靈活性、簡單易學、工程特性好等特點風靡技術(shù)圈,已經(jīng)成為機器學習、數(shù)據(jù)分析等領域的主流編程語言,需要的朋友可以參考下
    2022-05-05
  • Python的條件控制?if?語句詳解

    Python的條件控制?if?語句詳解

    Python的?if?語句用來「控制代碼」的執(zhí)行,「判斷條件成立」時執(zhí)行一段代碼,判斷條件「不成立」時執(zhí)行另一段代碼,本文就給大家詳細講講Python的條件控制?if?語句,需要的朋友可以參考下
    2023-08-08
  • python3檢查字典傳入函數(shù)鍵是否齊全的實例

    python3檢查字典傳入函數(shù)鍵是否齊全的實例

    這篇文章主要介紹了python3檢查字典傳入函數(shù)鍵是否齊全的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python中range()與xrange()用法分析

    python中range()與xrange()用法分析

    這篇文章主要介紹了python中range()與xrange()用法,結(jié)合實例形式分析了range()與xrange()使用與效率上的區(qū)別,需要的朋友可以參考下
    2016-09-09
  • Python通用驗證碼識別OCR庫之ddddocr驗證碼識別

    Python通用驗證碼識別OCR庫之ddddocr驗證碼識別

    dddd_ocr也是一個用于識別驗證碼的開源庫,又名帶帶弟弟ocr,爬蟲界大佬sml2h3開發(fā),識別效果也是非常不錯,下面這篇文章主要給大家介紹了關于Python通用驗證碼識別OCR庫之ddddocr驗證碼識別的相關資料,需要的朋友可以參考下
    2022-05-05
  • 17個Python小技巧分享

    17個Python小技巧分享

    這篇文章主要給大家分享了17個Python小技巧,都是些基礎的非常常用也非常實用的小技巧,這里推薦給大家。
    2015-01-01
  • Python動態(tài)聲明變量賦值代碼實例

    Python動態(tài)聲明變量賦值代碼實例

    這篇文章主要介紹了Python動態(tài)聲明變量賦值代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • python列表和字符串的三種逆序遍歷操作

    python列表和字符串的三種逆序遍歷操作

    這篇文章主要介紹了python列表和字符串的三種逆序遍歷操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論