1. 程式人生 > >Python2.x 與Python 3.x的不同

Python2.x 與Python 3.x的不同

tps 分享 技術 人類 運行 不用 python3 bar false

1、python的出生和應用

  python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆(中文名字:龜叔)為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。

(龜叔:2005年加入谷歌至2012年,2013年加入Dropbox直到現在,依然掌握著Python發展的核心方向,被稱為仁慈的獨裁者)。

  2017年7月的TIOBE排行榜,Python已經占據第四的位置, Python崇尚優美、清晰、簡單,是一個優秀並廣泛使用的語言。

2、Python2.x 與Python 3.x的不同

第1處不同:

Python2.x:源碼重復,不規範

python3x:整合源碼,更清晰簡單優美。

第2處不同:

Python2x:默認的編碼是ascii,解決方式:# -*- encoding:utf-8 -*-

Python3x:默認的編碼是utf-8

指定解釋器: #!/usr/bin/env python
# -*- encoding:utf-8 -*-

第3處不同:

Python2x:有long、int類型(print ‘abc‘ print(‘abc‘) 這兩種方式都支持)

Python3x:沒有long、int類型(print(‘abc‘))

第4處不同:

Python2x:raw_input() input() 只能輸入數字類型

Python3x:input

3、python語言的劃分

python語言的劃分:

編譯型:將你的代碼一次性全部編譯成二進制,然後在運行。
缺點:開發效率低,不能跨平臺。
優點:執行效率高。
代表:c語言

解釋型:當程序開始運行時,將代碼一行一行的解釋成二進制,執行。
缺點:執行效率低。
優點:開發效率高,可以跨品臺。
代表:python語言

4、變量&常量

4.1、變量是什麽?

變量:把程序運行的中間結果臨時的存到內存裏,以便後續的代碼調用。

4.2、變量定義的規則

變量名只能是字母、數字或者下劃線的任意組合,變量名的第一個字符不能是數字,關鍵字不能聲明為變量名

python中的關鍵字:

[‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘, ‘continue‘, ‘def‘, ‘del‘, ‘elif‘, ‘else‘, ‘except‘, ‘exec‘, ‘finally‘, ‘for‘, ‘from‘, ‘global‘, ‘if‘, ‘import‘, ‘in‘, ‘is‘, ‘lambda‘, ‘not‘, ‘or‘, ‘pass‘, ‘print‘, ‘raise‘, ‘return‘, ‘try‘, ‘while‘, ‘with‘, ‘yield‘]

4.3、常量

常量即指不變的量,例如pai 3.141592653..., 或在程序運行過程中不會改變的量

舉例:常量一般是大寫,放到內容的頂部:AGE_OF_OLDBOY = 56

5、註釋

單行註釋:#

多行註釋:‘’‘被註釋的內容 ’‘’

6、基礎數據類型

什麽是數據類型?

  我們人類可以很容易的分清數字與字符的區別,但是計算機並不能呀,計算機雖然很強大,但從某種角度上看又很傻,除非你明確的告訴它,1是數字,“漢”是文字,否則它是分不清1和‘漢’的區別的,因此,在每個編程語言裏都會有一個叫數據類型的東東,其實就是對常用的各種數據類型進行了明確的劃分,你想讓計算機進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字符串類型給他。Python中常用的數據類型有多種,今天我們暫只講3種, 數字、字符串、布爾類型

6.1、整數類型(int)。

int(整型)

在32位機器上,整數的位數為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647

在64位系統上,整數的位數為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807

long(長整型)

跟C語言不同,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上由於機器內存有限,我們使用的長整數數值不可能無限大。

註意,自從Python2.2起,如果整數發生溢出,Python會自動將整數數據轉換為長整數,所以如今在長整數數據後面不加字母L也不會導致嚴重後果了。

註意:在Python3裏不再有long類型了,全都是int

6.2、字符串類型(str)。

在Python中,加了引號的字符都被認為是字符串!

那單引號、雙引號、多引號有什麽區別呢? 讓我大聲告訴你,單雙引號木有任何區別,只有下面這種情況 你需要考慮單雙的配合

msg = "My name is Alex , I‘m 22 years old!"

多引號什麽作用呢?作用就是多行字符串必須用多引號

msg = ‘‘‘
今天我想寫首小詩,
歌頌我的同桌,
你看他那烏黑的短發,
好像一只炸毛雞。
‘‘‘
print(msg)

字符串拼接:字符串可以相加、相乘,不可以減和除

6.3、布爾值(True,False)

布爾類型很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷

7、格式化輸出

現有一練習需求,問用戶的姓名、年齡、工作、愛好 ,然後打印成以下格式

技術分享圖片
------------ info of Alex Li -----------
Name  : Alex Li
Age   : 22
job   : Teacher
Hobbie: girl
------------- end -----------------
技術分享圖片

你怎麽實現呢?你會發現,用字符拼接的方式還難實現這種格式的輸出,所以一起來學一下新姿勢

只需要把要打印的格式先準備好, 由於裏面的 一些信息是需要用戶輸入的,你沒辦法預設知道,因此可以先放置個占位符,再把字符串裏的占位符與外部的變量做個映射關系就好啦

技術分享圖片
name = input("Name:")
age = input("Age:")
job = input("Job:")
hobbie = input("Hobbie:")

info = ‘‘‘
------------ info of %s ----------- #這裏的每個%s就是一個占位符,本行的代表 後面拓號裏的 name 
Name  : %s  #代表 name 
Age   : %s  #代表 age  
job   : %s  #代表 job 
Hobbie: %s  #代表 hobbie 
------------- end -----------------
‘‘‘ %(name,name,age,job,hobbie)  # 這行的 % 號就是 把前面的字符串 與拓號 後面的 變量 關聯起來 

print(info)
技術分享圖片

%s就是代表字符串占位符,除此之外,還有%d,是數字占位符, 如果把上面的age後面的換成%d,就代表你必須只能輸入數字啦

age     : %d

我們運行一下,但是發現出錯了。。。技術分享圖片

說%d需要一個數字,而不是str, what? 我們明明輸入的是數字呀,22,22呀。

不用擔心 ,不要相信你的眼睛我們調試一下,看看輸入的到底是不是數字呢?怎麽看呢?查看數據類型的方法是什麽來著?type()

name = input("Name:")
age = input("Age:")
print(type(age))

執行輸出是

Name:Alex
Age:22
<class ‘str‘> #怎麽會是str
Job:IT

讓我大聲告訴你,input接收的所有輸入默認都是字符串格式!

要想程序不出錯,那怎麽辦呢?簡單,你可以把str轉成int

age = int(  input("Age:")  )
print(type(age))

肯定沒問題了。相反,能不能把字符串轉成數字呢?必然可以,str( yourStr )

問題:現在有這麽行代碼

msg = "我是%s,年齡%d,目前學習進度為80%"%(‘金鑫‘,18)
print(msg)

這樣會報錯的,因為在格式化輸出裏,你出現%默認為就是占位符的%,但是我想在上面一條語句中最後的80%就是表示80%而不是占位符,怎麽辦?

msg = "我是%s,年齡%d,目前學習進度為80%%"%(‘金鑫‘,18)
print(msg)

這樣就可以了,第一個%是對第二個%的轉譯,告訴Python解釋器這只是一個單純的%,而不是占位符。

8、基本運算符

運算符

  計算機可以進行的運算有很多種,可不只加減乘除這麽簡單,運算按種類可分為算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天我們暫只學習算數運算、比較運算、邏輯運算、賦值運算

算數運算

以下假設變量:a=10,b=20

技術分享圖片

比較運算

以下假設變量:a=10,b=20

技術分享圖片

賦值運算

以下假設變量:a=10,b=20

技術分享圖片

邏輯運算

技術分享圖片

針對邏輯運算的進一步研究:

  1,在沒有()的情況下not 優先級高於 and,and優先級高於or,即優先級關系為( )>not>and>or,同一優先級從左往右計算。

例題:

判斷下列邏輯語句的True,False。

技術分享圖片
1,3>4 or 4<3 and 1==1
2,1 < 2 and 3 < 4 or 1>2 
3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1
4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8
5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
技術分享圖片

  2 , x or y , x為真,值就是x,x為假,值是y;

x and y, x為真,值是y,x為假,值是x。

 技術分享圖片

例題:求出下列邏輯語句的值。

8 or 4
0 and 3
0 or 4 and 3 or 7 or 9 and 6

in,not in :

判斷子元素是否在原字符串(字典,列表,集合)中:

例如:

#print(‘喜歡‘ in ‘dkfljadklf喜歡hfjdkas‘)
#print(‘a‘ in ‘bcvd‘)
#print(‘y‘ not in ‘ofkjdslaf‘)

Python2.x 與Python 3.x的不同