01.Python-變量、數(shù)據(jù)類型、運(yùn)算符

風(fēng)格指南

注釋

注釋解釋器不會(huì)去執(zhí)行,直接跳過

注釋的寫法

  • 行注釋:以井號(hào)(#)開頭 可以單獨(dú)行,也可以在代碼后面
  • 塊注釋:以三個(gè)單引號(hào)或者雙引號(hào)開頭并結(jié)束,中間可以包裹多行內(nèi)容
# 這里是行注釋,機(jī)器不會(huì)運(yùn)行
print("hello word")
"""
這里是塊注釋
可以寫很多行
...
"""

注釋原則

  • 復(fù)雜代碼注釋
  • 注釋不是越多越好
  • 建立有效的溝通

變量

變量就是一個(gè)可以重復(fù)使用的量

變量的命名

  • 變量名只能包含字母、數(shù)字和下劃線,變量名字可以使用字母或者下劃線開頭,但不可以使用數(shù)字開頭。如 1_message
  • 變量名不能包含空格
  • 變量名不能使用Python關(guān)鍵字、保留字、函數(shù),如print
# 查看關(guān)鍵字方法
import  keyword  #引入關(guān)鍵子模塊
# 打印關(guān)鍵字
print(keyword.kwlist)
  • 變量名應(yīng)該簡短且具有描述性
  • 不建議以下劃線開頭命名變量,因?yàn)橐韵聞澗€開頭的變量具有特殊含義
  • 大小寫敏感,age 和 Age不一樣
  • 可以使用中文,但強(qiáng)烈不建議使用
  • 推薦使用posix命名規(guī)則

posix命名規(guī)則

  • 多個(gè)單詞使用下劃線鏈接
  • 單詞全部小寫

變量的賦值

常用賦值方法

# 將10 賦值給size
size = 10
print(size)
>>>10

給多個(gè)變量賦同一個(gè)值

size1 = size2 = size3 = 10
print(size1)
>>>10
print(size2)
>>>10
print(size3)
>>>10

一行代碼給多個(gè)變量賦值

size1, size2, size3 = 10, 12, 16
print(size1)
>>>10
print(size2)
>>>12
print(size3)
>>>16

變量交換

  • 普通方式
a = 10
b = 20
c = a  # 講a變量賦值給c, 此時(shí)c的值為10
a = b  # 講b變量復(fù)制給a, 此時(shí)a的值為20
b = c  # 講c變量復(fù)制給b, 此時(shí)b的值為10

通過中間變量c進(jìn)行變量的交換

  • 利用python定義變量的語法實(shí)現(xiàn)
a, b = b, a

數(shù)據(jù)類型

  • 六種標(biāo)準(zhǔn)數(shù)據(jù)類型
    • 數(shù)字 Number
    • 字符串 Str
    • 列表 List
    • 元祖 tuper
    • 字典 dict
    • 集合 set
    • 布爾值 bool
    • None

使用字符串時(shí)注意引號(hào)匹配

數(shù)字類型Number

整數(shù) int

沒有小數(shù)部分
包含正數(shù)、復(fù)數(shù)、0

浮點(diǎn)數(shù) float

帶小數(shù)點(diǎn)的數(shù)字稱為浮點(diǎn)數(shù)

科學(xué)計(jì)數(shù)法

科學(xué)計(jì)數(shù)法在python中的表示

a = 10e2
print(a)
>>>1000.0

復(fù)數(shù)

復(fù)數(shù)在python中的表示

python中,用j/J表示復(fù)數(shù)的虛部
a = 4+3j
b = 3j
c = (3j)

字符串 str

字符串是一系列的字符,在Python中,用引號(hào)括起來的是字符串,可以使單引號(hào),也可以是雙引號(hào)。三引號(hào)可以表示多行

字符串的表示

name =  'zhangsan'
name = "zhangsan"
name = """
zhang
san
"""

列表 list

通常用來記錄一些列數(shù)據(jù)

列表的創(chuàng)建

  • 使用一對(duì)方括號(hào)來表示空列表: [] 或者是list()
  • 使用方括號(hào),其中的項(xiàng)以逗號(hào)分隔: [a], [a, b, c]
  • 其中的項(xiàng)成為元素
  • 元素可以是其他的任意類型
>>> l1 = []
>>> print(l1, type(l1))
[] <class 'list'>
>>> l2 = list()
>>> print(l2, type(l2))
[] <class 'list'>
>>> l3 = [1, 2, 3]
>>> print(l3, type(l3))
[1, 2, 3] <class 'list'>

元組 tuple

元組是不可變序列,與列表相似,區(qū)別是其中的元素不可改變

元祖的創(chuàng)建

  • 使用一對(duì)圓括號(hào)來表示空元組: ()
  • 使用一個(gè)后綴的逗號(hào)來表示單元組: a, 或 (a,)
  • 使用以逗號(hào)分隔的多個(gè)項(xiàng): a, b, c or (a, b, c)
  • 使用內(nèi)置的 tuple(): tuple() 或 tuple(iterable)

元祖只有一個(gè)元素時(shí),最后要加一個(gè)逗號(hào)。

>>> t1 = ()
>>> t2 = 1,
>>> t3 = (1,)
>>> t4 = 1, 2, 3
>>> t5 = tuple()
>>> 
>>> print(type(t1))
<class 'tuple'> <class 'tuple'> <class 'tuple'> <class 'tuple'> <class 'tuple'>

字典 dict

  • 字典是用于儲(chǔ)存一組或多組的數(shù)據(jù)
  • 字典是鍵值對(duì)形式
  • 鍵的名字不能重復(fù),否則會(huì)覆蓋
  • 鍵必須是字符串或者數(shù)字,值可以是任何類型

字典的創(chuàng)建

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> a == b == c == d == e
True

布爾值

  • 布爾值用來表示真假
  • 只有兩個(gè)值 Ture/False
  • 在Python中,布爾值可以當(dāng)做數(shù)字使用:Ture = 1, False = 0

None

  • 表示沒有,返回一個(gè)空

數(shù)據(jù)類型的檢測(cè)

使用type()函數(shù)進(jìn)行檢測(cè)

>>> a = 10
>>> b = True
>>> c = 'hello world'
>>> d = 1.01
>>> print(a, type(a))
10 <class 'int'>
>>> print(b, type(b))
True <class 'bool'>
>>> print(c, type(c))
hello world <class 'str'>
>>> print(d, type(d))
1.01 <class 'float'>

數(shù)據(jù)類型分類

是否可變

是否可變指內(nèi)容創(chuàng)建后,內(nèi)容是否可變

  • 可變數(shù)據(jù)類型
    • 列表
    • 字典
    • 集合
  • 不可變數(shù)據(jù)類型
    • 字符串
    • 數(shù)字
    • 元組

是否容器類

容器類型數(shù)據(jù)指此類型數(shù)據(jù)可以容納其他數(shù)據(jù)

  • 容器類型數(shù)據(jù)
    • 字符串
    • 列表
    • 元組
    • 集合
    • 字典
  • 非容器類型數(shù)據(jù)
    • 數(shù)字
    • 布爾值

數(shù)據(jù)類型的轉(zhuǎn)換

數(shù)據(jù)類型轉(zhuǎn)換指的是講一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型,目的是解決不同數(shù)據(jù)類型之間的運(yùn)算問題。

自動(dòng)類型轉(zhuǎn)換

  • 數(shù)字與布爾值運(yùn)算會(huì)將布爾值自動(dòng)轉(zhuǎn)為數(shù)字
>>> n = 1
>>> b = True
>>> print(n+b)
2
  • 邏輯判斷時(shí)數(shù)字會(huì)自動(dòng)轉(zhuǎn)為布爾值
  • 整數(shù)與浮點(diǎn)數(shù)運(yùn)算時(shí),整數(shù)會(huì)轉(zhuǎn)為浮點(diǎn)數(shù)

手動(dòng)類型轉(zhuǎn)換

通過特定的函數(shù),可以將一種數(shù)據(jù)類型轉(zhuǎn)為另一種數(shù)據(jù)類型

函數(shù) 轉(zhuǎn)換后類型 可轉(zhuǎn)換類型
str() 字符串 所有類型都可以
int() 整數(shù) 純數(shù)字字符串、布爾值、浮點(diǎn)數(shù),其他容器類類型不能轉(zhuǎn)
float() 浮點(diǎn)數(shù) 純數(shù)字字符串、布爾值、整數(shù)
bool() 布爾值 所有類型都可以
list() 列表 字符串、數(shù)組、字典(只保留鍵)集合
tuple() 元組 數(shù)字類型和非容器類型不能轉(zhuǎn)換、容器類型可以
dict() 字典 只有特定的列表和元組可以轉(zhuǎn),要求列表中的每個(gè)元素都是一個(gè)只包含倆個(gè)元素的列表,其中第一個(gè)元素轉(zhuǎn)為字典的鍵,第二個(gè)為值 [[1, a], [2, b], [3, c]],元組要求類似。
set() 集合 非容器類不可以轉(zhuǎn)換,容器類轉(zhuǎn)換后無序、去重、字典只保留鍵。

使用函數(shù)轉(zhuǎn)換類型

  • a 為數(shù)字類型
  • b經(jīng)過str()函數(shù)將a轉(zhuǎn)為字符串類型
  • c經(jīng)過int()函數(shù)將b轉(zhuǎn)回?cái)?shù)字類型
>>> a = 1
>>> b = str(a)
>>> c = int(b)
>>> print(b, type(b))
1 <class 'str'>
>>> print(c, type(c))
1 <class 'int'>

運(yùn)算符

運(yùn)算符的分類

  • 算術(shù)運(yùn)算符
  • 比較(關(guān)系)運(yùn)算符
  • 賦值運(yùn)算符
  • 邏輯運(yùn)算符
  • 位運(yùn)算符
  • 身份運(yùn)算符

算術(shù)運(yùn)算符

假設(shè)變量a = 1, b = 2

運(yùn)算符 描述 實(shí)例
+ 兩個(gè)對(duì)象相加 a + b >>>3
- 兩個(gè)對(duì)象相減 a - b >>>-1
* 兩個(gè)對(duì)象相乘或者是返回若干次的字符串 a*b >>>2
/ 除法運(yùn)算 b/a >>>2
// 地板除,取整 9//2 >>>4
% 取模(取余) 9%2 >>>1
** 冪運(yùn)算 a**b >>>1

注意:Python2.x 里,整數(shù)除整數(shù),只能得出整數(shù)。如果要得到小數(shù)部分,把其中一個(gè)數(shù)改成浮點(diǎn)數(shù)即可。

>>> 1/2
0
>>> 1.0/2
0.5
>>> 1/float(2)
0.5

比較運(yùn)算符

假設(shè)變量a = 1, b = 2

運(yùn)算符 描述 實(shí)例
== 比較連個(gè)對(duì)象是否相等 a == b >>>False
!= 比較兩個(gè)對(duì)象是否不相等 a != b >>>True
> 比較x是否大于y a > b >>>False
< 比較x是否小于y a < b >>> True
>= 返回x是否大于等于y a >= b >>>Flase
<= 返回x是否小于等于y a <= b >>>True

賦值運(yùn)算符

假設(shè)變量a = 1, b = 2

運(yùn)算符 描述 實(shí)例
= 簡單的賦值運(yùn)算 c = a + b 將a + b 的運(yùn)算結(jié)果賦值給c
+= 加法賦值運(yùn)算 c += a 等效與 c = c + a
-+ 減法賦值運(yùn)算 c -= a 等效于 c = c - a
*= 乘法賦值運(yùn)算符 c *= a 等效于 c = c * a
/= 除法賦值運(yùn)算 c /= a 等效于 c = c / a
%= 取模賦值運(yùn)算 c % a 等效于 c = c % a
**= 冪賦值運(yùn)算 c **= a 等效于 c = c ** a
//= 地板除賦值運(yùn)算 c //= a 等效于 c = c//a

邏輯運(yùn)算符

運(yùn)算符 描述 實(shí)例
and "與"運(yùn)算,x、y全部為True返回True,否則返回Flase True and False >>>False
or "或"運(yùn)算,x、y全部為Flase返回False,否則返回True True or False >>>True
not "非"運(yùn)算,取反 not False >>>True

邏輯運(yùn)算存在短路問題,程序一旦確定邏輯運(yùn)算結(jié)果不在進(jìn)行后面的代碼

# 短路案例,由于提前確定了c的值為True,程序不在往下運(yùn)行,不在打印"b"
def a():
    print("a")
    return True

def b():
    print("b")
    return True

c = a() or b()
print(c)
>>> a
>>> True

成員運(yùn)算符

檢測(cè)一個(gè)成員是否在某個(gè)實(shí)例里面

運(yùn)算符 描述 實(shí)例
in 如果在序列中找到指定的值返回True,否則返回False 1 in [1, 2, 3] >>>True
not in 如果在序列中沒有找到制定的值返回True,否則返回False 1 not in [1, 2, 3] >>>False

身份運(yùn)算符

運(yùn)算符 描述 實(shí)例
is 判斷兩個(gè)變量是不是引用自一個(gè)對(duì)象 x is y, 類似 id(x) == id(y) , 如果引用的是同一個(gè)對(duì)象則返回 True,否則返回 False
is not 判斷兩個(gè)變量是不是引用自不同對(duì)象 x is not y , 類似 id(a) != id(b)。如果引用的不是同一個(gè)對(duì)象則返回結(jié)果 True,否則返回 False。

可以簡單理解為他們指向的內(nèi)存地址是否相同
is 與 == 區(qū)別:
is 用于判斷兩個(gè)變量引用對(duì)象是否為同一個(gè)(同一塊內(nèi)存空間), == 用于判斷引用變量的值是否相等。

位運(yùn)算符

按位運(yùn)算符是把數(shù)字看作二進(jìn)制來進(jìn)行計(jì)算的

二進(jìn)制轉(zhuǎn)換

使用bin()函數(shù)可以講一個(gè)數(shù)字轉(zhuǎn)換為二進(jìn)制數(shù)字

>>> print(bin(1), '-', bin(2), '-', bin(3))
0b1 - 0b10 - 0b11

使用int()函數(shù)可以講一個(gè)二進(jìn)制轉(zhuǎn)為十進(jìn)制

>>> print(int(0b1), '-', int(0b10), '-', int(0b11))
1 - 2 - 3

二進(jìn)制位運(yùn)算

下表中變量 a 為 60,b 為 13,二進(jìn)制格式如下:

運(yùn)算符 描述 實(shí)例
& 按位與運(yùn)算符:參與運(yùn)算的兩個(gè)值,如果兩個(gè)相應(yīng)位都為1,則該位的結(jié)果為1,否則為0 (a & b) 輸出結(jié)果 12 ,二進(jìn)制解釋: 0000 1100
| 按位或運(yùn)算符:只要對(duì)應(yīng)的二個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果位就為1。 (a | b) 輸出結(jié)果 61 ,二進(jìn)制解釋: 0011 1101
^ 按位異或運(yùn)算符:當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1 (a ^ b) 輸出結(jié)果 49 ,二進(jìn)制解釋: 0011 0001
~ 按位取反運(yùn)算符:對(duì)數(shù)據(jù)的每個(gè)二進(jìn)制位取反,即把1變?yōu)?,把0變?yōu)? 。~x 類似于 -x-1 (~a ) 輸出結(jié)果 -61 ,二進(jìn)制解釋: 1100 0011,在一個(gè)有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼形式。
<< 左移動(dòng)運(yùn)算符:運(yùn)算數(shù)的各二進(jìn)位全部左移若干位,由 << 右邊的數(shù)字指定了移動(dòng)的位數(shù),高位丟棄,低位補(bǔ)0。 a << 2 輸出結(jié)果 240 ,二進(jìn)制解釋: 1111 0000
>> 右移動(dòng)運(yùn)算符:把">>"左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位,>> 右邊的數(shù)字指定了移動(dòng)的位數(shù) a >> 2 輸出結(jié)果 15 ,二進(jìn)制解釋: 0000 1111

運(yùn)算優(yōu)先級(jí)

從高到底以此為:

  • 小括號(hào)內(nèi)優(yōu)先級(jí)最高
  • ** 指數(shù) (最高優(yōu)先級(jí))
  • ~ + - 按位翻轉(zhuǎn), 一元加號(hào)和減號(hào) (最后兩個(gè)的方法名為 +@ 和 -@)
  • * / % // 乘,除,取模和取整除
  • + - 加法減法
  • >> << 右移,左移運(yùn)算符
  • & 位 'AND'
  • ^ | 位運(yùn)算符
  • <= < > >= 比較運(yùn)算符
  • <> == != 等于運(yùn)算符
  • = %= /= //= -= += *= **= 賦值運(yùn)算符
  • is is not 身份運(yùn)算符
  • in not in 成員運(yùn)算符
  • not and or 邏輯運(yùn)算符
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請(qǐng)通過簡信或評(píng)論聯(lián)系作者。

推薦閱讀更多精彩內(nèi)容