注釋
- 單行注釋: 使用
#
進行單行注釋
# 這是單行注釋
- 多行注釋: 使用
''' '''
或""" """
進行多行注釋
'''
這里是多行注釋
這里是多行注釋
'''
"""
這里是多行注釋
這里是多行注釋
"""
- 特殊注釋: 中文支持
# encoding=utf-8
# coding-utf-8
-
# _*_coding:utf-8_*_
(推薦寫法)
變量
- 定義:
- 變量名 = 值
- 變量1, 變量2 = 值1, 值2
- 變量1 = 變量2 = 值
a = 10
b, c = 5, 2
d = e = 10
-
為什么產(chǎn)生變量:
- 方便維護, 一處改, 處處改
- 節(jié)省空間
-
注意事項:
- 一個變量只能引用一個值
- 命名規(guī)范:
- 字母數(shù)字下劃線, 且不能以數(shù)字開頭
- 見名知意
- 駝峰命名
- 非關(guān)鍵字
- 區(qū)分大小寫
- 變量名使用前一定要賦值
數(shù)據(jù)類型
數(shù)據(jù)類型: 對程序處理的數(shù)據(jù), 進行的分類, 比如整數(shù), 浮點數(shù), 字符串等
-
為什么區(qū)分數(shù)據(jù)類型
- 區(qū)分存儲空間: 使用不同大小的空間存儲不同的類型的值, 盡可能減少空間浪費
- 根據(jù)不同數(shù)據(jù)類型的特性, 做不同的數(shù)據(jù)處理
- 6 + 6: 數(shù)字相加, 結(jié)果是12
- "6" + "6": 字符串拼接, 結(jié)果是"66"
-
數(shù)據(jù)類型的常用分類:
- Numbers (數(shù)值類型)
- Bool (布爾類型)
- String (字符串)
- List (列表)
- Set (集合)
- Tuple (元組)
- Dictory (字典)
- NoneType (空類型)
獲取數(shù)據(jù)的類型:
type(數(shù)據(jù))
, 例如: type(6), type("6")靜態(tài)類型: 變量類型一經(jīng)定義, 就不可更改, 比如 a = 10, a的類型是Int, 不能改成Str類型, 即只能引用Int類型數(shù)據(jù), 不能引用其他數(shù)據(jù)類型的數(shù)據(jù)
a = 10 # a的類型為Int
a = "10" # 靜態(tài)類型不能引用其他類型的數(shù)據(jù), 報錯
- 動態(tài)類型: 變量在定義之后, 可以改變類型, 比如 a = 10, 此時a為Int類型, a = "10", 此時a為Str類型
a = 10 # a的類型為Int
a = "10" # 的類型為Str
- 強類型: 數(shù)據(jù)定義后, 類型不會輕易改變, 比如 a = "1", 執(zhí)行 b = a + 1, 此時a的類型不會變?yōu)镮nt, 1也不會變?yōu)?1", 所以執(zhí)行直接報錯
a = "1"
b = a + 1 # 強類型, 報錯
- 弱類型, 數(shù)據(jù)定義后, 類型會發(fā)生改變, 比如a = "1", 指定 b = a + 1, 此時1的類型可能變成Str, 最后b的結(jié)果是
11
a = "1"
b = a + 1 # 弱類型, 結(jié)果為 b = "11"
Python是強類型的, 動態(tài)類型的語言
運算符
- 算數(shù)運算符
加: "+"
a = 1 + 2, 結(jié)果 a = 2
減: "-"
b = 5 - 3, 結(jié)果 b = 2
乘: "*"
c = 2 * 3, 結(jié)果 c = 6
冪: "**"
d = "3 ** 5", 結(jié)果 d = 243
除: "/"
e = 5 / 2, 結(jié)果: e = 2.5
整除: "http://"
f = 5 // 2, 結(jié)果: f = 2
取余: "%"
g = 5 % 2, 結(jié)果: g = 1
賦值: "="
h = 3, i = 5
優(yōu)先級: "()"
j = 3 + 2 / 2 + 1, j = 5说榆。 k = 3 + 3 / (2 + 1), k = 4。
- 復(fù)合運算符
+=:
a = 10, a += 5, 結(jié)果: a = 15 等價于 a = a + 5
-=:
a = 10, a -= 5, 結(jié)果: a = 5 等價于 a = a - 5
*=:
a = 10, a *= 5, 結(jié)果: a = 50 等價于 a = a * 5
/=:
a = 10, a /= 4, 結(jié)果: a = 2.5 等價于 a = a / 4
%=:
a = 10, a %= 4, 結(jié)果: a = 2 等價于 a = a % 4
**=:
a = 10, a **= 2, 結(jié)果: a = 100 等價于 a = a ** 2
//=:
a = 10, a //= 4, 結(jié)果: a = 2 等價于 a = a // 4
- 比較運算符
- 比較運算符的結(jié)果是Bool類型的值, 取值分別是 True 和 False
>:
a = 10 > 2, 結(jié)果 a = True
<:
b = 10 < 2, 結(jié)果 b = False
!=:
c = 10 != 5, 結(jié)果 c = True
<>: Python2版本支持, 等價于 !=, Python3版本不支持<>
d = 5 <> 5, 結(jié)果 d = False
>=:
e = 5 >= 5, 結(jié)果 e = True
<=:
f = 5 <= 6, 結(jié)果 f = False
==:
g = 3 == 3, 結(jié)果 g = True
is: 比較唯一標識, 通過id(值), 獲取唯一標識
num = 10, id(10)
h = [1]
i = [1]
result = h is i, 結(jié)果: result = False
鏈式比較運算符:
num = 10
j = 5 < num < 20, 結(jié)果: j = True 其他語言寫作: j = num > 5 && num < 20
- 邏輯運算符
not: 非, 取反, 真 -> 假, 假 -> 真, 其他語言中的 !
a = True, b = not a, 結(jié)果: b = False
c = False, d = not c, 結(jié)果: d = True
and: 與, 并且, and的兩邊, 必須都是真, 最終才會是真, 其他語言中的 &&
e = True and False, 結(jié)果: e = False
f = True and True, 結(jié)果: f = True
即: 一假全假, 全真才真
or: 或, 或者, or的兩邊, 只要有一個條件是真的, 那么最終都是真的
g = True or False, 結(jié)果: g = True
h = False or False, 結(jié)果: g = False
即: 有真即真, 全假才假
非Bool值的類型, 判斷真假, 與OC一樣, 非零即真, 非空即真
print(False or 1), 打印: 1
print(bool(1)), 打印: True
print(bool(0)), 打印: False
print(False or ""), 打印: False
print(3 and 1), 打印: 1
print(1 and 3), 打印: 3
輸入
Python2:
- raw_input
- 格式: result = raw_input("提示信息")
- 功能:
- 會等待用戶輸入內(nèi)容, 直到用戶按下Enter
- 會將用戶輸入的內(nèi)容當(dāng)做"字符串", 傳遞給接收的變量
- input
- 格式: result = input("提示信息")
- 功能:
- 會等待用戶輸入內(nèi)容, 直到用戶按下Enter
- 會將用戶輸入的內(nèi)容當(dāng)做"代碼"進行處理
eval函數(shù), 將一段字符串當(dāng)做代碼運行處理
result = eval("1+1"), 結(jié)果 result = 2
- 所以Python2中的
input
相當(dāng)于raw_input + eval
的功能組合
Python3
- input: 相當(dāng)于Python2中的 raw_input
- 格式: result = input("提示信息")
- 功能:
- 會等待用戶輸入內(nèi)容, 直到用戶按下Enter
- 會將用戶輸入的內(nèi)容當(dāng)做"字符串", 傳遞給接收的變量
輸出
Python2
- 打印: print語句
輸出一個值:
print 5
輸出一個變量:
num = 5
print num
輸出多個變量:
num1 = 10
num2 = 20
num3 = 30
print num1, num2, num3
格式化輸出:
name = "張三"
age = 18
方式一: print "名字是%s, 年齡是%d"%(name, age)
結(jié)果: 名字是張三, 年齡是18
方式二: print "名字是{0}, 年齡是{1}".format(name, age)
結(jié)果: 名字是張三, 年齡是18
輸出到文件當(dāng)中:
file = open("text.py", "w") 第一個參數(shù): 文件名, 第二個參數(shù): 權(quán)限
print >>file, "xxxxxx" 第一個參數(shù): 輸出文件, 第二個參數(shù): 輸出內(nèi)容
輸出不換行: 在結(jié)尾加一個逗號"," 中間以空格分割
print 1,
print 2
打印: 1 2
使用"-"分割多個參數(shù)輸出
print "-".join(["a", "b", "c"])
打印: a-b-c
Python3
輸出一個值:
print(123)
輸出一個變量:
num = 123
print(num)
輸出多個變量
num1 = 1
num2 = 2
num3 = 3
print(num1, num2, num3)
格式化輸出:
name = "zhangsan"
age = 18
print("我的名字是%s, 年齡是%d"%(name, age))
print("我的名字是{0}, 年齡是{1}".format(name, age))
輸出到文件:
f = open("test.py", "w")
print("xxx", file=f)
輸出不換行:
print("xxx", end=""), end的值默認為\n換行符
輸出多個參數(shù)時, 使用指定分割方式分割:
print("1", "2", "3", sep="&&"), 打印:1&&2&&3
立即輸出:
print("xxx", fluse=True)
補充: 占位格式符
- 格式:
%[(name)][flags][width][.precision]typecode
-
(name)
: 用于選擇指定名稱對應(yīng)的值 (根據(jù)字典的key
, 取出對應(yīng)的value
)
dictionary = {"age": 18, "name": "zhangsan"}
print("我的名字是%(name)s, 年齡是%(age)d" % (dictionary))
打印: 我的名字是zhangsan, 年齡是18
-
width
: 表示顯示的寬度
num = 5
print("%3d" % num), 打印: " 5", 這里雙引號為了展示5的前面有一個空格, 實際打印不存在雙引號
即: 當(dāng)打印目標寬度不出3時, 在前面以空格的形式補齊3位
num1 = 3
print("%5d" % num), 打印: " 5", 雙引號同上
此時打印寬度為5, 由于3的寬度只有1個位置, 所以前面有四個空格
-
flags
: 主要與width
配合使用, 主要有四個作用:
作用一: 不寫時, 默認右對齊
num = 5
print("%3d" % num), 打印: " 5", 雙引號同上
作用二: -(負號), 表示左對齊
print("%3d" % num), 打印: "5 ", 雙引號同上
作用三: 空格, 主要用在數(shù)字前面加一個空格,與負數(shù)的負號對齊
num = 5
print("% d", num), 打印: " 5", 不論中間加幾個空格, 最后結(jié)果只顯示一個
例如:print("% d", num), 打印: " 5", 只打印一個空格
作用四: 0, 不足部分, 使用0補齊
num = 5
print("%02d"), 打印: 05
主要應(yīng)用場景, 對時間進行格式化
minutes = 5
seconds = 8
print("%02d : %02d" % (minutes, seconds)), 打印: 05 : 08
-
. precision
: 表示浮點數(shù)后精度
保留小數(shù)點后2位:
num = 10.32131
print("%.2f" % num), 打印: 10.32
保留小數(shù)點后3位:
print("%.3f" % num), 打印: 10.321
不保留小數(shù)點
print("%.0f" % num), 打印: 10
保留小數(shù)點后7位:
print("%.7f" % num), 打印: 10.3213100
typecode
, 必填項, 主要格式
數(shù)值:
-
i/d
: 將證書, 浮點數(shù)轉(zhuǎn)成十進制整數(shù)
num = 10.321
print("%d" % num), 打印: 10
-
o
: 將整數(shù), 轉(zhuǎn)成八進制
num = 10
print("%o" % num), 打印: 12
-
x
:將整數(shù), 轉(zhuǎn)成十六進制
num = 10
print("%x" % num), 打印: a
-
e
: 將整數(shù), 浮點數(shù)轉(zhuǎn)成科學(xué)計數(shù)法
num = 1111111111
print("%e" % num), 打印: 1.111111e+09
-
E
: 將整數(shù), 浮點數(shù)轉(zhuǎn)成科學(xué)計數(shù)法
num = 1111111111
print("%e" % num), 打印: 1.111111E+09
-
f
: 將整數(shù), 浮點數(shù)格式化成浮點數(shù), 并保留六位小數(shù)
num = 5
print("%f" % num), 打印: 5.000000
num1 = 5.312231232
print("%f" % num1), 打印: 5.312231
num2 = 5.312
print("%f" % num2), 打印: 5.312000
-
g
: 自動調(diào)整將整數(shù), 浮點數(shù)轉(zhuǎn)成浮點數(shù), 超過六位數(shù), 用科學(xué)計數(shù)法
num1 = 23.321000
print("%g" % num1), 打印: 23.321
num2 = 231.32
print("%g" % num2), 打印: 231.32
num3 = 100.1111111
print("%g" % num3), 打印: 100.111
num4 = 100111111111
print("%g" % num4), 打印: 1.00111e+11
-
G
: 與g
相同
字符串
-
s
: 獲取傳入對象的__str__方法的返回值, 并格式化到指定位置 -
r
: 獲取傳入對象的__repr__方法的返回值, 并格式化到指定位置 -
c
: 整數(shù), 將數(shù)字轉(zhuǎn)成對應(yīng)的uniode對應(yīng)的值, 范圍: 0<= i <= 1114111, py27之至此0-255
%%
- 當(dāng)字符串中存在格式化標識時, 需要使用
%%
表示一個百分號
num = 90
print("%d%%" % num), 打印: 90%
注意: Python中不存在將整數(shù)轉(zhuǎn)成二進制的格式符, Python中不存在
%b
這個格式符