python除法版本差別,python中的除法有幾種

本文目錄一覽:

Python 2 和 Python 3 有哪些主要區別

智游教育為你解答,希望可以幫助到你

python有兩個主要的版本,python2 和 python3

,但是python又不同於其他語言,向下兼容,python3是不向下兼容的,但是絕大多數組件和擴展都是基於python2的,下面就來總結一下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)去除了,全部改用!=

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

3)關鍵詞加入as 和with,還有true,false,none

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

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

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

Python2.6和Python3.0中對除法操作的異同

python2和python3中除法和取余符號是相反的

python2中除法是// ,而python3中的是/

取余相反

在python2中也可以導入python3中對除號用法

需要 from __future__ import division

import這個以後python2中的/和//就和python3中一樣了

不過好像是在python2.7版本中才有__future__模塊

詳解python2 和 python3的區別

Python2.x與3.x版本區別

Python的3.0版本,常被稱為Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。

為了不帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。

許多針對早期Python版本設計的程式都無法在Python 3.0上正常執行。

為了照顧現有程式,Python 2.6作為一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,允許使用部分Python 3.0的語法與函數。

新的Python程式建議使用Python 3.0版本的語法。

除非執行環境無法安裝Python 3.0或者程式本身使用了不支援Python 3.0的第三方庫。目前不支援Python 3.0的第三方庫有Twisted, py2exe, PIL等。

大多數第三方庫都正在努力地相容Python 3.0版本。即使無法立即使用Python 3.0,也建議編寫相容Python 3.0版本的程式,然後使用Python 2.6, Python 2.7來執行。

Python 3.0的變化主要在以下幾個方面:

1. print 函數

print語句沒有了,取而代之的是print()函數。 Python 2.6與Python 2.7部分地支持這種形式的print語法。在Python 2.6與Python 2.7裡面,以下三種形式是等價的:

print “fish”

print (“fish”) #注意print後面有個空格

print(“fish”) #print()不能帶有任何其它參數

然而,Python 2.6實際已經支持新的print()語法:

from __future__ import print_function

print(“fish”, “panda”, sep=’, ‘)

2. Unicode

Python 2 有 ASCII str() 類型,unicode() 是單獨的,不是 byte 類型。

現在, 在 Python 3,我們最終有了 Unicode (utf-8) 字符串,以及一個字節類:byte 和 bytearrays。

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

 中國 = ‘china’ 

print(中國) 

china

Python 2.x

 str = “我愛北京天安門”

 str

‘\xe6\x88\x91\xe7\x88\xb1\xe5\x8c\x97\xe4\xba\xac\xe5\xa4\xa9\xe5\xae\x89\xe9\x97\xa8’

 str = u”我愛北京天安門”

 str

u’\u6211\u7231\u5317\u4eac\u5929\u5b89\u95e8′

Python 3.x

 str = “我愛北京天安門”

 str

‘我愛北京天安門’

3. 除法運算

Python中的除法較其它語言顯得非常高端,有套很複雜的規則。Python中的除法有兩個運算符,/和//

3.1首先來說/除法:

在python 2.x中/除法就跟我們熟悉的大多數語言,比如Java啊C啊差不多,整數相除的結果是一個整數,把小數部分完全忽略掉,浮點數除法會保留小數點的部分得到一個浮點數的結果。

在python 3.x中/除法不再這麼做了,對於整數之間的相除,結果也會是浮點數。

Python 2.x:

 1 / 2

 1.0 / 2.0

0.5

Python 3.x :

 1/2

0.5

而對於//除法,這種除法叫做floor除法,會對除法的結果自動進行一個floor操作,在python 2.x和python 3.x中是一致的。

python 2.x :

 -1 // 2

-1

python 3.x :

 -1 // 2

-1

注意的是並不是捨棄小數部分,而是執行floor操作,如果要截取小數部分,那麼需要使用math模塊的trunc函數

python 3.x :

 import math

 math.trunc(1 / 2)

 math.trunc(-1 / 2)

4. 異常

在 Python 3 中處理異常也輕微的改變了,在 Python 3 中我們現在使用 as 作為關鍵詞。

捕獲異常的語法由 except exc, var 改為 except exc as var。

使用語法except (exc1, exc2) as var可以同時捕獲多種類別的異常。 Python 2.6已經支持這兩種語法。

1. 在2.x時代,所有類型的對象都是可以被直接拋出的,在3.x時代,只有繼承自BaseException的對象才可以被拋出。

2. 2.x raise語句使用逗號將拋出對象類型和參數分開,3.x取消了這種奇葩的寫法,直接調用構造函數拋出對象即可。

在2.x時代,異常在代碼中除了表示程序錯誤,還經常做一些普通控制結構應該做的事情,在3.x中可以看出,設計者讓異常變的更加專一,只有在錯誤發生的情況才能去用異常捕獲語句來處理。

5. xrange

在 Python 2 中 xrange() 創建迭代對象的用法是非常流行的。比如: for 循環或者是列表/集合/字典推導式。

這個表現十分像生成器(比如。”惰性求值”)。但是這個 xrange-iterable 是無窮的,意味着你可以無限遍歷。

由於它的惰性求值,如果你不得僅僅不遍歷它一次,xrange() 函數 比 range() 更快(比如 for 循環)。儘管如此,對比迭代一次,不建議你重複迭代多次,因為生成器每次都從頭開始。

在 Python 3 中,range() 是像 xrange() 那樣實現以至於一個專門的 xrange() 函數都不再存在(在 Python 3 中 xrange() 會拋出命名異常)。

Python 3 

import timeit

n = 10000

def test_range(n):

    return for i in range(n):

        pass

def test_xrange(n):

    for i in xrange(n):

        pass

Python 2

print ‘Python’, python_version()

print ‘\ntiming range()’

%timeit test_range(n)

print ‘\n\ntiming xrange()’ 

%timeit test_xrange(n)

Python 2.7.6

timing range()

1000 loops, best of 3: 433 µs per loop

timing xrange()1000 loops, best of 3: 350 µs per loop

Python 2.7.6

timing range()

1000 loops, best of 3: 433 µs per loop

timing xrange()

1000 loops, best of 3: 350 µs per loop

Python 3

print(‘Python’, python_version())

print(‘\ntiming range()’)

%timeit test_range(n)

Python 3.4.1

timing range()

1000 loops, best of 3: 520 µs per loop

print(xrange(10))

—————————————————————————

NameError                                 Traceback (most recent call last)

ipython-input-5-5d8f9b79ea70 in module()

—- 1 print(xrange(10))

NameError: name ‘xrange’ is not defined

6. 八進制字面量表示

八進制數必須寫成0o777,原來的形式0777不能用了;二進制必須寫成0b111。

新增了一個bin()函數用於將一個整數轉換成二進制字串。 Python 2.6已經支持這兩種語法。

在Python 3.x中,表示八進制字面量的方式只有一種,就是0o1000。

python 2.x

 0o1000

512

 01000

512

python 3.x

 01000

  File “stdin”, line 1

    01000

        ^

SyntaxError: invalid token

 0o1000

512

7. 不等運算符

Python 2.x中不等於有兩種寫法 != 和

Python 3.x中去掉了, 只有!=一種寫法,還好,我從來沒有使用的習慣

8. 去掉了repr表達式“

Python 2.x 中反引號“相當於repr函數的作用

Python 3.x 中去掉了“這種寫法,只允許使用repr函數,這樣做的目的是為了使代碼看上去更清晰么?不過我感覺用repr的機會很少,一般只在debug的時候才用,多數時候還是用str函數來用字符串描述對象。

def sendMail(from_: str, to: str, title: str, body: str) – bool:

    pass

多個模塊被改名(根據PEP8)

StringIO模塊現在被合併到新的io模組內。 new, md5, gopherlib等模塊被刪除。 Python 2.6已經支援新的io模組。

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib被合併到http包內。

取消了exec語句,只剩下exec()函數。 Python 2.6已經支援exec()函數。

9. 數據類型

1)Py3.X去除了long類型,現在只有一種整型——int,但它的行為就像2.X版本的long

2)新增了bytes類型,對應於2.X版本的八位串,定義一個bytes字面量的方法如下:

 b = b’china’ 

 type(b) 

type ‘bytes’

str對象和bytes對象可以使用.encode() (str – bytes) or .decode() (bytes – str)方法相互轉化。

 s = b.decode() 

 s 

‘china’ 

 b1 = s.encode() 

 b1 

b’china’

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函數都被廢棄。同時去掉的還有 dict.has_key(),用 in替代它吧 。

新手用python2還是3

1、Python2之前是非常受歡迎的,現在很多軟件公司依然使用的是Python2,不過由於越來越多的公司開始從Python2遷移到3,因此初學者可以避免花費更多的時間學習過去的版本了。

2、Python2和Python3之間有一些是無法互相兼容的,現在很多開發人員都在使用Python3開發庫,許多老的基於Python2的開發包依然是無法兼容的,想要將Python2庫移植到Python3上,對於初學者來說還是比較困難的事情。

3、Python3有更好的Unicode編碼支持在Python3的語法之中,默認文化字符串就是Unicode,而Python2默認的存儲為ASCII,而且Unicode比ASCII更加通用,可以提供更多的選擇。

4、Python3版本改進了整數除法的問題,在Python2中如果你在小數點後面寫任何一個數字,計算會自動四捨五入的。而使用Python3的情況下是不需要擔心這種情況發生的。

5、兩個版本之間有不同的打印語句聲明語法,是語法差異,不影響Python的功能。

python 如何判斷整除?

題:如何判斷一個數能否被3整除?(或者被其他任意一個數整除)

方法一:取余

x = input(“input an number:”)

if x % 3 == 0:    

print “%d 能被3整除” %(x)  

else:  

print “%d 不能被3整除” %(x)12345

方法二:還有一種就是將其各個數位上的數字相加,然後除以3,如果能被3整除,則原數字能被3整除。

x = 0

y = raw_input(“input an number:”) #這裡取為字符串的原因是,要遍曆數字的各個數位

for i in y:      

print int(i)

x = x + int(i)  #將數字的各個數位上的數字加起來

print x

if x % 3 == 0:

print “%s 能被3整除” %(y)

else:      

print “%s 不能被3整除” %(y)1234567891011

python版本有什麼不同

對比python2和python3,兩者的差異如下:

1. Python3 對 Unicode 字符的原生支持。

Python2 中使用 ASCII 碼作為默認編碼方式導致 string 有兩種類型 str 和 unicode,Python3 只

支持 unicode 的 string。Python2 和 Python3 字節和字符對應關係為:

2. Python3 採用的是絕對路徑的方式進行 import

Python2 中相對路徑的 import 會導致標準庫導入變得困難(想象一下,同一目錄下有 file.py,如

何同時導入這個文件和標準庫 file)。Python3 中這一點將被修改,如果還需要導入同一目錄的文件必

須使用絕對路徑,否則只能使用相關導入的方式來進行導入。

推薦學習《python教程》

3. Python2 中存在老式類和新式類的區別,Python3 統一採用新式類。新式類聲明要求繼承 object,

必須用新式類應用多重繼承。

4. Python3 使用更加嚴格的縮進。Python2 的縮進機制中,1 個 tab 和 8 個 space 是等價的,所

以在縮進中可以同時允許 tab 和 space 在代碼中共存。這種等價機制會導致部分 IDE 使用存在問題。

Python3 中 1 個 tab 只能找另外一個 tab 替代,因此 tab 和 space 共存會導致報錯:TabError:

inconsistent use of tabs and spaces in indentation.

廢棄類差異

1. print 語句被 Python3 廢棄,統一使用 print 函數

2. exec 語句被 python3 廢棄,統一使用 exec 函數

3. execfile 語句被 Python3 廢棄,推薦使用 exec(open(“./filename”).read())

4. 不相等操作符””被 Python3 廢棄,統一使用”!=”

5. long 整數類型被 Python3 廢棄,統一使用 int

6. xrange 函數被 Python3 廢棄,統一使用 range,Python3 中 range 的機制也進行修改並提高

了大數據集生成效率

7. Python3 中這些方法再不再返回 list 對象:dictionary 關聯的 keys()、values()、items(),zip(),

map(),filter(),但是可以通過 list 強行轉換:

1. mydict={“a”:1,”b”:2,”c”:3}

2. mydict.keys() #built-in method keys of dict object at 0x000000000040B4C8

3. list(mydict.keys()) #[‘a’, ‘c’, ‘b’]

8. 迭代器 iterator 的 next()函數被 Python3 廢棄,統一使用 next(iterator)

9. raw_input 函數被 Python3 廢棄,統一使用 input 函數

10. 字典變量的 has_key 函數被 Python 廢棄,統一使用 in 關鍵詞

11. file 函數被 Python3 廢棄,統一使用 open 來處理文件,可以通過 io.IOBase 檢查文件類型

12. apply 函數被 Python3 廢棄

13. 異常 StandardError 被 Python3 廢棄,統一使用 Exception

修改類差異

1. 浮點數除法操作符“/”和“//”的區別

“ / ”:

Python2:若為兩個整形數進行運算,結果為整形,但若兩個數中有一個為浮點數,則結果為

浮點數;

Python3:為真除法,運算結果不再根據參加運算的數的類型。

“//”:

Python2:返回小於除法運算結果的最大整數;從類型上講,與”/”運算符返回類型邏輯一致。

Python3:和 Python2 運算結果一樣。

2. 異常拋出和捕捉機制區別

Python2

1. raise IOError, “file error” #拋出異常

2. except NameError, err: #捕捉異常

Python3

1. raise IOError(“file error”) #拋出異常

2. except NameError as err: #捕捉異常

3. for 循環中變量值區別

Python2,for 循環會修改外部相同名稱變量的值

1. i = 1

2. print (’comprehension: ‘, [i for i in range(5)])

3. print (’after: i =’, i ) #i=4

Python3,for 循環不會修改外部相同名稱變量的值

1. i = 1

2. print (’comprehension: ‘, [i for i in range(5)])

3. print (’after: i =’, i ) #i=1

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HGKFH的頭像HGKFH
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • Git secbit:一種新型的安全Git版本

    Git secbit是一種新型的安全Git版本,它在保持Git原有功能的同時,針對Git存在的安全漏洞做出了很大的改進。下面我們將從多個方面對Git secbit做詳細地闡述。 一…

    編程 2025-04-29
  • Python數據類型分為哪幾種

    Python作為一門非常靈活的編程語言,有着非常豐富的數據類型。Python的數據類型可以分為數字類型、字符串類型、列表類型、元組類型、字典類型和集合類型六種。 一、數字類型 Py…

    編程 2025-04-29
  • 如何將Java項目分成Modules並使用Git進行版本控制

    本文將向您展示如何將Java項目分成模塊,並使用Git對它們進行版本控制。分割Java項目可以使其更容易維護和拓展。Git版本控制還可以讓您跟蹤項目的發展並協作開發。 一、為什麼要…

    編程 2025-04-28
  • Python除法運算代碼用法介紹

    本文將從以下方面詳細地介紹Python除法運算的代碼:Python除法的類型、Python除法的運算規則、Python除法的應用實例等。 一、Python除法的類型 Python中…

    編程 2025-04-28
  • Python的版本演變

    Python是一門非常流行的編程語言,它有着簡潔、易讀、易寫的特點。自1991年由Guido van Rossum發明以來,Python已經發展成為一個成熟的編程語言,擁有多個版本…

    編程 2025-04-28
  • librosa版本用法介紹

    librosa是一個用於音頻信號處理的python庫,具有多種處理音頻的功能。在librosa庫中,版本號非常重要,在不同的版本中可能會存在一些差異。本文將圍繞librosa的版本…

    編程 2025-04-28
  • Python中除法運算及其應用

    Python作為一種高級編程語言,其強大靈活的特性使其廣泛應用於各個領域中。其中的除法運算也是必不可少的一部分。除法運算主要分為整除和浮點數運算兩種類型,本文將從多個方面對Pyth…

    編程 2025-04-27
  • Java多版本支持實現方式

    本文將從以下幾個方面闡述如何實現Java多版本支持,並給出可行的代碼示例。 一、多版本Java環境概述 Java是一門跨平台的編程語言,但是在不同的應用場景下,可能需要使用不同版本…

    編程 2025-04-27
  • Taro3.5.11版本微信小程序端v-html依然無法解析video為中心的問題解決方案

    該問題的解決是通過使用 Taro3.5.11 版本自定義組件進行處理,具體解決方案如下: 一、自定義組件 首先,我們需要創建一個自定義組件 VideoComponent,該組件的主…

    編程 2025-04-27
  • 利用SeaweedFS版本進行大規模文件存儲與分配

    SeaweedFS是一個基於Go語言開發的分布式文件系統,它是一種高可用、高擴展性、高效率的解決方案。通過利用SeaweedFS版本,我們可以方便地實現大規模文件的存儲與分配。 一…

    編程 2025-04-27

發表回復

登錄後才能評論