ii系列引入python功能(python 引入)

本文目錄一覽:

python2 怎麼導入自己寫的模塊

因為print,type是內置函數,所以可以直接使用.

你可以到__builtin__這個模塊中找到所有的內置函數,也就是不需要導入就可以直接使用的函數。

如果解決了您的問題請採納!

如果未解決請繼續追問

追問

謝謝!那麼為什麼 random,math 等沒有被設置為內置函數呢? 我們導入他們,又是從哪裡導入的捏?

抱歉多提了倆問題,我提高了懸賞–––

追答

沒關係的,是這樣的,內置函數是一些使用的比較多的函數,所以python解釋器會幫我們自導導入,同時大部分函數也是用c寫的,這樣效率也要高不少。

random,math這些使用頻率不是特別高,所以是作為標準模塊存在的,這些都在python的安裝目錄里,你可以通過:

1

2

import random

print random.__file__

找到對應的文件位置。

python2和python3的區別,轉換及共存

python2和python3的區別

1.性能

Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認為Py3.0有極大的優化空間,在字符串和整形操作上可以取得很好的優化結果。

Py3.1性能比Py2.5慢15%,還有很大的提升空間。 

2.編碼 

Py3.X源碼文件默認使用utf-8編碼,這就使得以下代碼是合法的: 

中國 = ‘china’ 

print(中國) 

china

3. 語法

1)去除了,全部改用!=

在Python 2里,為了得到一個任意對象的字符串表示,有一種把對象包裝在反引號里(比如`x`)的特殊語法。在Python 3里,這種能力仍然存在,但是你不能再使用反引號獲得這種字符串表示了。你需要使用全局函數repr()。

Notes

Python 2

Python 3

`x`    repr(x)  

`’PapayaWhip’ + `2“    repr(‘PapayaWhip’+ repr(2))  

Note:x可以是任何東西 — 一個類,函數,模塊,基本數據類型,等等。repr()函數可以使用任何類型的參數。

2)去除“,全部改用repr()

3)關鍵詞加入as 和with,還有True,False,None

4)整型除法返回浮點數,要得到整型結果,請使用//

由於人們常常會忽視Python 3在整數除法上的改動(寫錯了也不會觸發Syntax Error),所以在移植代碼或在Python 2中執行Python 3的代碼時,需要特別注意這個改動。

所以,我還是會在Python 3的腳本中嘗試用float(3)/2或 3/2.0代替3/2,以此來避免代碼在Python 2環境下可能導致的錯誤(或與之相反,在Python 2腳本中用from __future__ import division來使用Python 3的除法)。

Python 2

print ‘3 / 2 =’, 3 / 2 print ‘3 // 2 =’, 3 // 2 print ‘3 / 2.0 =’, 3 / 2.0 print ‘3 // 2.0 =’, 3 // 2.0 

3 / 2 = 1 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0 

默認,如果兩個操作數都是整數,Python 2 自動執行整型計算。

Python 3

print(‘3 / 2 =’, 3 / 2) print(‘3 // 2 =’, 3 // 2) print(‘3 / 2.0 =’, 3 / 2.0) print(‘3 // 2.0 =’, 3 // 2.0) 

3 / 2 = 1.5 3 // 2 = 1 3 / 2.0 = 1.5 3 // 2.0 = 1.0

Note: 需要注意的是“雙劃線”(//)操作符將一直執行整除,而不管操作數的類型,這就是為什麼 5.0//2.0 值為 2.0。Python 3 中,/ 操作符是做浮點除法,而 // 是做整除(即商沒有餘數,比如 10 // 3 其結果就為 3,餘數會被截除掉,而 (-7) // 3 的結果卻是 -3。這個算法與其它很多編程語言不一樣,需要注意,它們的整除運算會向0的方向取值。而在 Python 2 中,/ 就是整除,即和 Python 3 中的 // 操作符一樣。

5)加入nonlocal語句。使用noclocal x可以直接指派外圍(非全局)變量

6)print

去除print語句,加入print()函數實現相同的功能。同樣的還有 exec語句,已經改為exec()函數

在Python 2里,print是一個語句。無論你想輸出什麼,只要將它們放在print關鍵字後邊就可以。

Python 3里,print()是一個函數。就像其他的函數一樣,print()需要你將想要輸出的東西作為參數傳給它。

例如: 

2.X: print “The answer is”, 2*2 

3.X: print(“The answer is”, 2*2) 

2.X: print x, # 使用逗號結尾禁止換行 

3.X: print(x, end=” “) # 使用空格代替換行

在Python 2里,如果你使用一個逗號(,)作為print語句的結尾,它將會用空格分隔輸出的結果,然後在輸出一個尾隨的空格(trailing space),而不輸出回車(carriage return)。在Python 3里,通過把end=’ ‘作為一個關鍵字參數傳給print()可以實現同樣的效果。參數end的默認值為’\n’,所以通過重新指定end參數的值,可以取消在末尾輸出回車符。

2.X: print # 輸出新行 

3.X: print() # 輸出新行 

2.X: print sys.stderr, “fatal error” 

3.X: print(“fatal error”, file=sys.stderr)

在Python 2里,你可以通過使用pipe_name語法,把輸出重定向到一個管道,比如sys.stderr。在Python 3里,你可以通過將管道作為關鍵字參數file的值傳遞給print()來完成同樣的功能。參數file的默認值為std.stdout,所以重新指定它的值將會使print()輸出到一個另外一個管道。

2.X: print (x, y) # 輸出repr((x, y)) 

3.X: print((x, y)) # 不同於print(x, y)!

exec語句

exec()函數使用一個包含任意Python代碼的字符串作為參數,然後就像執行語句或者表達式一樣執行它。exec()跟eval()是相似的,但是exec()更加強大並更具有技巧性。eval()函數只能執行單獨一條表達式,但是exec()能夠執行多條語句,導入(import),函數聲明 — 實際上整個Python程序的字符串表示也可以。

Notes

Python 2

Python 3

exec codeString    exec(codeString)  

exec codeString in a_global_namespace    exec(codeString, a_global_namespace)  

exec codeString in a_global_namespace, a_local_namespace    exec(codeString, a_global_namespace, a_local_namespace)  

在最簡單的形式下,因為exec()現在是一個函數,而不是語句,2to3會把這個字符串形式的代碼用括號圍起來。

Python 2里的exec語句可以指定名字空間,代碼將在這個由全局對象組成的私有空間里執行。Python 3也有這樣的功能;你只需要把這個名字空間作為第二個參數傳遞給exec()函數。

更加神奇的是,Python 2里的exec語句還可以指定一個本地名字空間(比如一個函數里聲明的變量)。在Python 3里,exec()函數也有這樣的功能。

execfile語句

就像以前的exec語句,Python 2里的execfile語句也可以像執行Python代碼那樣使用字符串。不同的是exec使用字符串,而execfile則使用文件。在Python 3里,execfile語句已經被去掉了。如果你真的想要執行一個文件里的Python代碼(但是你不想導入它),你可以通過打開這個文件,讀取它的內容,然後調用compile()全局函數強制Python解釋器編譯代碼,然後調用新的exec()函數。

Notes

Python 2

Python 3

execfile(‘a_filename’)    exec(compile(open(‘a_filename’).read(),’a_filename’,’exec’))    

7)輸入函數改變了,刪除了raw_input,用input代替: Python 2有兩個全局函數,用來在命令行請求用戶輸入。第一個叫做input(),它等待用戶輸入一個Python表達式(然後返回結果)。第二個叫做raw_input(),用戶輸入什麼它就返回什麼。這讓初學者非常困惑,並且這被廣泛地看作是Python語言的一個“肉贅”(wart)。Python 3通過重命名raw_input()為input(),從而切掉了這個肉贅,所以現在的input()就像每個人最初期待的那樣工作。

2.X:guess = int(raw_input(‘Enter an integer : ‘)) # 讀取鍵盤輸入的方法 

3.X:guess = int(input(‘Enter an integer : ‘))

Note:如果你真的想要請求用戶輸入一個Python表達式,計算結果,可以通過調用input()函數然後把返回值傳遞給eval()。

I/O方法xreadlines()

在Python 2里,文件對象有一個xreadlines()方法,它返回一個迭代器,一次讀取文件的一行。這在for循環中尤其有用。事實上,後來的Python 2版本給文件對象本身添加了這樣的功能。

在Python 3里,xreadlines()方法不再可用了。2to3可以解決簡單的情況,但是一些邊緣案例則需要人工介入。

Notes

Python 2

Python 3

for line in a_file.xreadlines():    for line in a_file:    

for line in a_file.xreadlines(5):    no change (broken)    

如果你以前調用沒有參數的xreadlines(),2to3會把它轉換成文件對象本身。在Python 3里,這種轉換後的代碼可以完成前同樣的工作:一次讀取文件的一行,然後執行for循環的循環體。

如果你以前使用一個參數(每次讀取的行數)調用xreadlines(),2to3不能為你完成從Python 2到Python 3的轉換,你的代碼會以這樣的方式失敗:AttributeError: ‘_io.TextIOWrapper’ object has no attribute ‘xreadlines’。你可以手工的把xreadlines()改成readlines()以使代碼能在Python 3下工作。(readline()方法在Python 3里返回迭代器,所以它跟Python 2里的xreadlines()效率是不相上下的。)

8)改變了順序操作符的行為,例如xy,當x和y類型不匹配時拋出TypeError而不是返回隨即的 bool值

9)去除元組參數解包。不能def(a, (b, c)):pass這樣定義函數了

10)新式的8進制字變量,相應地修改了oct()函數。

2.X的方式如下: 

0666 

438 

oct(438) 

‘0666’

3.X這樣: 

0666 

SyntaxError: invalid token (pyshell#63, line 1) 

0o666 

438 

oct(438) 

‘0o666’

11)增加了 2進制字面量和bin()函數 

bin(438) 

‘0b110110110’ 

_438 = ‘0b110110110’ 

_438 

‘0b110110110’

12)擴展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求兩點:rest是list對象和seq是可迭代的。

13)新的super(),可以不再給super()傳參數,

class C(object): 

def __init__(self, a): 

print(‘C’, a) 

class D(C): 

def __init(self, a): 

super().__init__(a) # 無參數調用super() 

D(8) 

C 8 

__main__.D object at 0x00D7ED90

14)支持class decorator。用法與函數decorator一樣:

def foo(cls_a): 

def print_func(self): 

print(‘Hello, world!’) 

cls_a.print = print_func 

return cls_a 

@foo 

class C(object): 

pass 

C().print() 

Hello, world! 

class decorator可以用來玩玩狸貓換太子的大把戲。更多請參閱PEP 3129

4. 字符串和字節串

Python 2有兩種字符串類型:Unicode字符串和非Unicode字符串。Python 2有基於ASCII的str()類型,其可通過單獨的unicode()函數轉成unicode類型,但沒有byte類型。

而在Python 3中,終於有了Unicode(utf-8)字符串,以及兩個字節類:bytes和bytearrays。Python 3隻有一種類型:Unicode字符串(Unicode strings)。只有str一種類型,但它跟2.x版本的unicode幾乎一樣。

Notes

Python 2

Python 3

u’PapayaWhip’    ‘PapayaWhip’    

ur’PapayaWhip\foo’    r’PapayaWhip\foo’    

Python 2里的Unicode字符串在Python 3里即普通字符串,因為在Python 3里字符串總是Unicode形式的。

Unicode原始字符串(raw string)(使用這種字符串,Python不會自動轉義反斜線”\”)也被替換為普通的字符串,因為在Python 3里,所有原始字符串都是以Unicode編碼的。

全局函數unicode()

Python 2有兩個全局函數可以把對象強制轉換成字符串:unicode()把對象轉換成Unicode字符串,還有str()把對象轉換為非Unicode字符串。

Python 3隻有一種字符串類型,Unicode字符串,所以str()函數即可完成所有的功能。(unicode()函數在Python 3里不再存在了。)

Notes

Python 2

Python 3

unicode(anything)    str(anything)    

5.數據類型 

1)Python 2有為非浮點數準備的int和long類型。int類型的最大值不能超過sys.maxint,而且這個最大值是平台相關的。可以通過在數字的末尾附上一個L來定義長整型,顯然,它比int類型表示的數字範圍更大。

在Python 3里,只有一種整數類型int,大多數情況下,它很像Python 2里的長整型。

Note:檢查一個變量是否是整型,獲得它的數據類型,並與一個int類型(不是long)的作比較。你也可以使用isinstance()函數來檢查數據類型;再強調一次,使用int,而不是long,來檢查整數類型。

sys.maxint

由於長整型和整型被整合在一起了,sys.maxint常量不再精確。但是因為這個值對於檢測特定平台的能力還是有用處的,所以它被Python 3保留,並且重命名為sys.maxsize。

Notes

Python 2

Python 3

from sys import maxint    from sys import maxsize    

python2和python有什麼區別

很多初學者剛開始學python的時候,一定都遇到過這個問題,python的世界有2個版本,python2 和 python3 ,而且有些語法還不兼容.怎麼辦~~到底應該選擇哪個版本來開發呢?好,今天我們就來聊聊這個話題.

1.Python2和Python3的歷史背景

Python語言是在20世紀90年代誕生的,算算到現在已經是25歲的大叔級的語言了(跟它同一個時代的還有一個鼎鼎大名的java是在1995發行的, 紅了幾十年).

但是Python真正成名比java晚了很多年,其實也主要是應用領域的時代變遷.(猜測為啥,對了大數據的出現)

Python2是Python裡面一個非常重要的版本,最早的版本是從2001的時候開始的,特別是從2006年開始py2.5的發布,python的功能逐漸強大起來,慢慢開始穩定下來,並且差不多1-2年左右遞增一個版本,在08年左右開始慢慢的火起來了.

而Python3最早是從2008開始發布,但是py3.0的版本非常不穩定,所以社區更新的很快,差不多幾個月就更新一次。所以一開始的時候並沒有很多人用,只到2014春暖花開的時候python3.4 deliver了才開始慢慢穩定下來.

下面我們看一個數據,這是Python社區聯和一些網站在2014做的一個調查,關於Python2/3,部分的結果如下:

1).97.51%用戶還在寫Python2的代碼

2).60%的用戶寫Python3的代碼

3).78.09%的用戶更多地寫Python2代碼

4).77.09%的用戶認可Python3

目前有一些Linux里的操作系統已經默認使用Python3:

1).Arch Linux (輕量級的Linux操作系統)

2).Ubuntu 16.04 (一個桌面應用為主的Linux操作系統)

3).Fedora(Redhat桌面版本的延續)

2.Python2和Python3的主要區別:

目前最新的數據是,Python有兩個版本:一個是2.7.12版,一個是3.5.12版.

那麼Python2運行的好好的,為啥突然要出個Python3呢,其實是為了解決Python2裡面一些歷史問題

第一個是字符串的問題:

Python 2 中文本和二進制數據是一個爛攤子,Python中的str 是代表二進制數據還是文本數據是有二義性,文字既能代表文本數據又能代表二進制數據這很麻煩,此類錯誤發生的時候,我們很難意識到。

第二個是對Unicode的支持

由於python是在1991年2月開源發布,這意味着它早於在1991年10月發布的第一版 Unicode 標準。在接下來幾年中,晚於 Unicode 標準出現的語言都選擇在支持 Unicode 編碼的基礎上實現自己的 str 類型,這讓 Python 2 處於尷尬的境地。

目前是一個python2/3共存的時代,這兩個版本是不兼容的。

python2現在只是做bug的修復,新硬件和操作系統兼容的相關維護工作。不會再有新的功能加入,python2只支持到2020年.

現在Python正在朝着3版本進化,在進化過程中,大量的針對2.x版本的代碼要修改後才能運行,所以目前有許多第三方庫還暫時無法在3.x上使用。

不過可以暢想一下,也許再過幾年情況就會好很多,畢竟全世界有很多優秀的程序員正在把一些庫從Py2往Py3上遷移.

3.選擇還是要根據自己的需求

若是企業的開發,要滿足工作的需求,尤其是依賴的軟件只能運行在Python2下,首選Python2.比如你的開發需要依賴大量的第三方的庫(因為學Python非常大的一個原因就是因為它有成千上萬的第三方包),像大量的數據分析,科學計算,還是選Python2吧.

如果你是自己學習,研究的話,願意擁抱變化,那麼建議學Python3,因為它是未來的方向.

結論:

編程其實主要是對編程思想的理解和經驗的積累,千萬不要因為糾結學Py2還是Py3而浪費大量時間。

Py2和Py3裡面的思想基本是相通的,招式是類似的.當你熟悉Python到一定的程序的時候,會Py2的人學Py3隻需要很短的時間。

所以不要再糾結細枝末節的語法差異,而耽誤了寶貴的學習時間。

好了Python2和Python3的恩怨情仇就講到這裡啦(它們還要相愛相殺一段時間),希望能給初學者一些啟發,若有什麼不懂的,也可以留言跟我探討交流.

最後說一下,原創不易,希望大家能夠給點支持,歡迎轉發,留言,也是對我的一點鼓勵和動力.

Python語言做什麼的

Python語言是一種面向對象的動態類型語言。

Python語言最初被設計用於編寫自動化腳本(shell),隨着版本的不斷更新和語言新功能的添加,越來越多被用於獨立的、大型項目的開發。作為一種解釋型腳本語言,可以在以下方面加以應用:

1、圖形處理:

有PIL、Tkinter等圖形庫支持,能方便進行圖形處理。

2、數學處理:

NumPy擴展提供大量與許多標準數學庫的接口。

3、文本處理:

Python提供的re模塊能支持正則表達式,還提供SGML,XML分析模塊,許多程序員利用python進行XML程序的開發。

4、數據庫編程:

程序員可通過遵循Python DB-API(數據庫應用程序編程接口)規範的模塊與Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等數據庫通信。python自帶有一個Gadfly模塊,提供了一個完整的SQL環境。

5、網絡編程:

提供豐富的模塊支持sockets編程,能方便快速地開發分布式應用程序。很多大規模軟件開發計劃例如Zope,Mnet 及BitTorrent. Google都在廣泛地使用它。

6、Web編程:

應用的開發語言,支持最新的XML技術。

7、多媒體應用:

Python的PyOpenGL模塊封裝了“OpenGL應用程序編程接口”,能進行二維和三維圖像處理。PyGame模塊可用於編寫遊戲軟件。

擴展資料:

作為一種廣泛使用的計算機語言,Python具有以下優點:

1、簡單易學:

Python極其容易上手,因為Python有極其簡單的說明文檔。

2、速度快:

Python 的底層是用 C 語言寫的,很多標準庫和第三方庫也都是用 C 寫的,運行速度非常快。

3、免費、開源:

Python是FLOSS(自由/開放源碼軟件)之一。使用者可以自由地發布這個軟件的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟件中。FLOSS是基於一個團體分享知識的概念。

4、高層語言:

用Python語言編寫程序的時候,無需考慮“如何管理程序使用的內存”一類的底層細節。

5、可移植性:

由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。這些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS以及Google基於linux開發的android平台。

6、解釋性:

一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個程序員的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。

運行程序的時候,連接/轉載器軟件把程序員的程序從硬盤複製到內存中並且運行。而Python語言寫的程序不需要編譯成二進制代碼,程序眼可以直接從源代碼運行程序。

7、可擴展性:

如果程序員需要一段關鍵代碼運行得更快或者希望某些算法不公開,可以部分程序用C或C++編寫,然後在Python程序中使用它們。

8、可嵌入性:

可以把Python嵌入C/C++程序,從而向程序用戶提供腳本功能。

參考資料來源:百度百科-Python (計算機程序設計語言)

原創文章,作者:YRSBX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128635.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YRSBX的頭像YRSBX
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論