1. 程式人生 > 程式設計 >詳解python變數與資料型別

詳解python變數與資料型別

這篇文章我們學習 Python 變數與資料型別

變數

變數來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念,變數可以通過變數名訪問。在 Python 中 變數命名規定,必須是大小寫英文,數字和 下劃線(_)的組合,並且不能用數字開頭。

變數命名規則:

  • 變數名只能是字母,數字和下劃線的任意組合
  • 變數名第一個字元不能是數字
  • 變數名區分大小寫,大小寫字母被認為是兩個不同的字元
  • 特殊關鍵字不能命名為變數名

宣告變數

Python 中的變數不需要宣告,每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。在 Python 中,變數就是變數,它沒有型別,我們所說的”型別”是變數所指的記憶體中物件的型別。

name = "neo"

上述程式碼聲明瞭一個變數,變數名為:name,變數 name 的值為”neo”。

變數賦值

在 Python 中,等號 = 是賦值語句,可以把任意資料型別賦值給變數,同一個變數可以反覆賦值,而且可以是不同型別的變數。

a = 123 # a 是整數
a = 'abc' # a 是字串

這種變數本身型別不固定的語言稱之為動態語言,與之對應的就是靜態語言。靜態語言在定義變數時必須指定變數型別,如果賦值的時候型別不匹配,就會報錯。例如 Java 是靜態語言,這樣賦值就會報錯:

多個變數賦值

Python 允許你同時為多個變數賦值。例如:

a = b = c = 1

以上例項,建立一個整型物件,值為 1,從後向前賦值,三個變數被賦予相同的數值。

您也可以為多個物件指定多個變數。例如:

a,b,c = 1,2,"neo"

以上例項,兩個整型物件 1 和 2 的分配給變數 a 和 b,字串物件 “neo” 分配給變數 c。

常量

所謂常量就是不能變的變數,比如常用的數學常數 π 就是一個常量。在 Python 中,通常用全部大寫的變數名錶示常量:

BI = 3.14

但事實上 BI 仍然是個變數,Python 根本無法保證 BI 不會被改變,所以,用全部大寫的變數名錶示常量只是一個習慣上的用法,如果你一定要改,語法也不會報錯。

資料型別

Python3 中有六個標準的資料型別:Number(數字)、String(字串)、List(列表)、Tuple(元組)、Sets(集合)、Dictionary(字典)。

Python3 的六個標準資料型別中:

  • 不可變資料(3 個):Number(數字)、String(字串)、Tuple(元組);
  • 可變資料(3 個):List(列表)、Dictionary(字典)、Set(集合)。

下面我們一一介紹這些資料型別的使用。

Number(數字)

Python3 支援 int、float、bool、complex(複數)。

數字型別是顧名思義是用來儲存數值的,需要記住的是,有點和 Java 的字串味道差不多,如果改變了數字資料型別的值,將重新分配記憶體空間。

Python 支援三種不同的數值型別:

  • 整型(Int) - 通常被稱為是整型或整數,是正或負整數,不帶小數點。Python3 整型是沒有限制大小的,可以當作 Long 型別使用,所以 Python3 沒有 Python2 的 Long 型別。
  • 浮點型(float) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 102 = 250)
  • 複數( (complex)) - 複數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都是浮點型。

示例:

#!/usr/bin/python3
 
counter = 100     # 整型變數
miles  = 1000.0    # 浮點型變數
name  = "test"   # 字串
 
print (counter)
print (miles)
print (name)

數字型別轉換

  • int(x) 將x轉換為一個整數。
  • float(x) 將x轉換到一個浮點數。
  • complex(x) 將x轉換到一個複數,實數部分為 x,虛數部分為 0。
  • complex(x,y) 將 x 和 y 轉換到一個複數,實數部分為 x,虛數部分為 y。x 和 y 是數字表達式。 額外說明

和別的語言一樣,數字型別支援各種常見的運算,不過 Python 的運算比別的大多數常見語言都更加豐富,此外,還有大量豐富的方法,提供更高效的開發。

數值運算示例:

print (5 + 4) # 加法  輸出 9
print (4.3 - 2) # 減法  輸出 2.3
print (3 * 7) # 乘法 輸出 21
print (2 / 4) # 除法,得到一個浮點數  輸出 0.5
print (2 // 4) # 除法,得到一個整數 輸出 0
print (17 % 3) # 取餘  輸出 2
print (2 ** 5) # 乘方 輸出 32

String(字串)

建立字串可以使用單引號、雙引號、三單引號和三雙引號,其中三引號可以多行定義字串,Python 不支援單字元型別,單字元也在Python也是作為一個字串使用。

我們定義一個 s='python'語句,它在計算機中的執行順序是先在記憶體中建立一個字串 Python ,在程式棧暫存器中建立一個變數 s,最後把 Python 的地址賦給s 。

再來看看字串的一些常見操作:

s = '學習Python'
# 切片
s[0],s[-1],s[3:],s[::-1]	# '優','n','Python','nohtyP的雅優'
# 替換,還可以使用正則表示式替換
s.replace('Python','Java')	# '學習Java'
# 查詢,find()、index()、rfind()、rindex()
s.find('P')			# 3,返回第一次出現的子串的下標
s.find('h',2)			# 6,設定下標2開始查詢
s.find('23333')			# -1,查詢不到返回-1
s.index('y')			# 4,返回第一次出現的子串的下標
s.index('P')		# 不同與find(),查詢不到會丟擲異常
# 轉大小寫,upper()、lower()、swapcase()、capitalize()、istitle()、isupper()、islower()
s.upper()			# '學習PYTHON'
s.swapcase()			# '學習pYTHON',大小寫互換
s.istitle()			# True
s.islower()			# False
# 去空格,strip()、lstrip()、rstrip()
# 格式化
s1 = '%s %s' % ('Windrivder',21)	# 'Windrivder 21' 
s2 = '{},{}'.format(21,'Windridver')	# 推薦使用format格式化字串
s3 = '{0},{1},{0}'.format('Windrivder',21)
s4 = '{name}: {age}'.format(age=21,name='Windrivder')
# 連線與分割,使用 + 連線字串,每次操作會重新計算、開闢、釋放記憶體,效率很低,所以推薦使用join
l = ['2017','03','29','22:00']
s5 = '-'.join(l)			# '2017-03-29-22:00'
s6 = s5.split('-')			# ['2017','22:00']

以上是一些常見的操作。

另外還有一點需要注意的是字串編碼,所有的 Python 字串都是 Unicode 字串,當需要將檔案儲存到外設或進行網路傳輸時,就要進行編碼轉換,將字元轉換為位元組,以提高效率。

# encode 將字元轉換為位元組
str = '學習Python'   
print (str.encode())			# 預設編碼是 UTF-8 輸出:b'\xe5\xad\xa6\xe4\xb9\xa0Python'
print (str.encode('gbk'))   # 輸出 b'\xd1\xa7\xcf\xb0Python'
# decode 將位元組轉換為字元
print (str.encode().decode('utf8'))  # 輸出 '學習Python'
print (str.encode('gbk').decode('gbk'))       # 輸出 '學習Python'

List(列表)

類似 Java List 集合介面

列表是寫在方括號 [] 之間、用逗號分隔開的元素列表,列表可以完成大多數集合類的資料結構實現。列表中元素的型別可以不相同,它支援數字,字串甚至可以包含列表(所謂巢狀),列表中的元素是可以改變。

示例:

Weekday = ['Monday','Tuesday','Wednesday','Thursday','Friday']
print(Weekday[0])  # 輸出 Monday

#list 搜尋
print(Weekday.index("Wednesday"))

#list 增加元素
Weekday.append("new")
print(Weekday)

# list 刪除
Weekday.remove("Thursday") 
print(Weekday)

Tuple(元組)

元組(tuple)與列表類似,不同之處在於元組的元素不能修改。元組寫在小括號 () 裡,元素之間用逗號隔開,組中的元素型別也可以不相同。

示例:

letters = ('a','b','c','d','e','f','g')
print(letters[0]) # 輸出 'a'
print(letters[0:3]) # 輸出一組 ('a','c')

Sets(集合)

類似 Java Set 集合介面

集合(set)是一個無序不重複元素的序列,使用大括號 {} 或者 set() 函式建立集合,注意:建立一個空集合必須用 set() 而不是 {} ,因為 {} 是用來建立一個空字典。

集合不能被切片也不能被索引,除了做集合運算之外,集合元素可以被新增還有刪除:

示例:

a_set = {1,3,4}
# 新增
a_set.add(5)
print(a_set) # 輸出{1,4,5}
# 刪除
a_set.discard(5)
print(a_set) # 輸出{1,4}

Dictionary(字典)

類似 Java Map 集合介面

字典是一種對映型別,它的元素是鍵值對,字典的關鍵字必須為不可變型別,且不能重複。建立空字典使用 {} 。

示例:

Logo_code = {
 'BIDU':'Baidu','SINA':'Sina','YOKU':'Youku'
 }
print(Logo_code)
# 輸出{'BIDU': 'Baidu','YOKU': 'Youku','SINA': 'Sina'}
print (Logo_code['SINA'])    # 輸出鍵為 'one' 的值
print (Logo_code.keys())  # 輸出所有鍵
print (Logo_code.values()) # 輸出所有值
print (len(Logo_code)) # 輸出欄位長度

總結

本節給大家介紹了 Python 變數 和六種標準的資料型別,給大家演示了變數的使用,以及六個六種標準的資料型別的常用操作。

示例程式碼:Python-100-days-day003

以上就是詳解python變數與資料型別的詳細內容,更多關於python變數與資料型別的資料請關注我們其它相關文章!