[toc]python
在編寫代碼的時候,有些代碼不須要執行或增長代碼說明,那麼就須要用到註釋了。程序員
被註釋的文本或代碼是不會被執行的。編程
註釋能夠使用以下三種方式:windows
# 第一個註釋,本行代碼不會運行
print("hello world!") # 第二個註釋
複製代碼
也叫塊註釋,支持換行。數據結構
''' 第一行註釋,本行代碼不會運行 第二行註釋,本行代碼不會運行 第三行註釋,本行代碼不會運行 '''
print('hello world!')
複製代碼
也叫塊註釋,支持換行。async
""" 第一行註釋,本行代碼不會運行 第二行註釋,本行代碼不會運行 第三行註釋,本行代碼不會運行 """
print('hello world!')
複製代碼
經常使用的轉義符:函數
轉義字符 | 描述 |
---|---|
\(行尾) | 續行 |
\ | 反斜槓() |
` | 單引號(') |
" | 雙引號(" ) |
\n | 換行 |
\r | 回車 |
\t | Tab鍵(TAB) |
>>> print("www\ .python.\ org")
# 輸出結果
www.python.org
複製代碼
''\\",兩個反雙斜槓,轉義爲1個反斜槓 \
spa
非正常結果 示例:3d
>>> str = 'c:\windows\note'
>>> print(str)
# 輸出結果:' \n '看成換行來用了,纔會出現以下狀況
c:\windows
ote
複製代碼
正常結果 示例:code
#把'\n'改爲'\\n'就能夠解決了
>>> str = 'c:\windows\\note'
>>> print(str)
# 修改後輸出結果:
c:\windows\note
複製代碼
嚴格約定使用4個 空格
和一個 製表符
(tab)做爲縮進,切記不能混用,不然報錯IndentationError
def fun():
print('hello world')
print('hello world')
複製代碼
標識符的本質是對應具體數據結構的值,因該值不能被程序員直接訪問,因此須要經過調用標識符來訪問。
標識符格式定義的要求:
錯誤標識符 示例:
# 報語法錯誤,標識符不能以數字開頭
>>> 123 = '123'
File "<stdin>", line 1
SyntaxError: can't assign to literal
# 報語法錯誤,class是python語言類用到的,不能做爲標識符
>>> class = 'abc'
File "<stdin>", line 1
class = 'abc'
^
SyntaxError: invalid syntax
複製代碼
FALSE | await | else | import | pass |
---|---|---|---|---|
None | break | except | in | raise |
TRUE | class | finally | is | return |
and | continue | for | lambda | try |
as | def | from | nonlocal | while |
assert | del | global | not | with |
async | elif | if | or | yield |
python是動態語言、強類型語言。
動態編譯語言
# 標識符隨意切換數據類型
x = 123 # 定義x爲整數
x = '123' # 定義x變爲字符串
複製代碼
強類型語言
不一樣類型之間進行變量賦值時,須要顯示地(強制)進行類型轉換
>>> x = 123 # 定義x爲整數
>>> y = '456' # 定義y爲字符串
# 報類型錯誤,不一樣類型不能相加
>>> print(x + y)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
# 從新強制修改下爲同類型
>>> print(str(x) + y)
123456
複製代碼
常見的算術運算符:加(+)、減(-)、乘(*)、除(/)、取整(//)、取模(%)、冪(**)
加(+) 示例:
>>> test = 1 + 1
>>> print(test)
# 輸出結果以下:
2
複製代碼
減(-) 示例:
>>> test = 1 - 1
>>> print(test)
# 輸出結果以下:
0
複製代碼
乘(*) 示例:
>>> test = 1 * 1
>>> print(test)
# 輸出結果以下:
1
複製代碼
除(/) 示例:
>>> test = 4 / 2
>>> print(test)
# 輸出結果以下:
2.0 #結果是一個浮點類型
複製代碼
備註:注意python2.x /
和//
都是取整。
取整(//) 示例: 說明:又叫作向下取整、地板除(往數值小的方向取整數)
>>> test1 = 5 // 2
>>> test2 = -5 // 2
>>> print('test1的結果:',test1)
>>> print('test2的結果:',test2)
# 輸出結果以下:
test1的結果: 2 # 實際結果爲2.5,靠近2,因此取2
test2的結果: -3 # 實際結果爲-2.5,靠近-3,因此取-3
複製代碼
取模(%) 示例: 若是都是正數,那麼取餘和取模都是餘數,但特別要注意的地方是使用到正負數,這就要藉助一個公式:
*模值*=x % y=x - [x // y] * y
>>> test1 = 5 % 3
>>> test2 = -5 % 3 #模值=-5 % 3=(-5)-[-5//3]*3=(-5)-(-2)*3=-5+6=1
>>> test3 = 5 % -3 #模值=5 % (-3)=5-[5//(-3)]*(-3)=5-(-2)*(-3)=5-6=-1
>>> test4 = -5 % -3 #模值=-5 % (-3)=-5-[-5//(-3)]*(-3)=-5-(1)*(-3)=-5+3=-2
>>> print('test1的結果:',test1)
>>> print('test2的結果:',test2)
>>> print('test3的結果:',test3)
>>> print('test4的結果:',test4)
# 輸出結果以下:
test1的結果: 2
test2的結果: 1
test3的結果: -1
test4的結果: -2
複製代碼
冪(**) 示例:
>>> test = 2 ** 2
>>> print('tests的結果:',test)
# 輸出結果以下:
test的結果: 4
複製代碼
位與(&)、位或(|)、異或(^)、左移(<<)、右移(>>)
計算機的語言都是0
,1
表示的二進制,位運算也是以二進制
來計算的。
如下示例採用以下兩個標識符進行計算:
x = 18 #10進制轉爲二進制:0001 0010
y = 20 #10進制轉爲二進制:0001 0100
複製代碼
位與(&) 示例:
說明:位與(&)是以二進制計算二者位都是 1
得 1
,不然都是 0
>>> x = 18
>>> y = 20
>>> print('x & y 結果是:', x & y)
# 輸出結果以下:
x & y 結果是: 16
複製代碼
位或(|) 說明:位或(|)是以二進制計算二者位有一個 1
得 1
,不然都是 0
>>> x = 18
>>> y = 20
>>> print('x | y 結果是:', x | y)
# 輸出結果以下:
x | y 結果是: 22
複製代碼
異或(^) 說明:異或(^)是以二進制計算二者位都有 1
得 0
,有一個 1
得1
,其餘爲 0
>>> x = 18
>>> y = 20
>>> print('x ^ y 結果是:', x ^ y)
# 輸出結果以下:
x ^ y 結果是: 6
複製代碼
左移(<<) 左移(<<)是總體向最高位(左邊)移動位數。
>>> x = 18
>>> y = 20
>>> print('x 左移1位的結果是:', x << 1)
>>> print('y 左移2位的結果是:', y << 2)
# 輸出結果以下:
x 左移1位的結果是: 36
y 左移2位的結果是: 80
複製代碼
右移(>>) 右移(>>)是總體向最低位(右邊)移動位數。
>>> x = 18
>>> y = 20
>>> print('x 右移1位的結果是:', x >> 1)
>>> print('y 右移2位的結果是:', y >> 2)
# 輸出結果以下:
x 右移1位的結果是: 9
y 右移2位的結果是: 5
複製代碼
常見的比較運算符:等於(==)、不等於(!=)、大於(>)、大於等於(>=)、小於(<)、小於等於(<=),返回的結果是布爾(bool)類型。
比較運算只能用於同一數據類型比較(除了==和!=),好比:同數值類型比較、同字符串比較等。
>>> x = '18'
>>> y = 20
>>> print('比較的結果是:', x < y)
# 輸出結果以下:不一樣類型不能比較
TypeError: '<' not supported between instances of 'str' and 'int'
複製代碼
等於(==) 示例:
>>> x = 18
>>> y = 20
>>> print('比較的結果是:', x == y)
# 輸出結果以下:
比較的結果是: False
複製代碼
不等於(!=) 示例:
>>> x = 18
>>> y = 20
>>> print('比較的結果是:', x != y)
# 輸出結果以下:
比較的結果是: True
複製代碼
大於(>) 示例:
>>> x = 18
>>> y = 20
>>> print('比較的結果是:', x > y)
# 輸出結果以下:
比較的結果是: False
複製代碼
大於等於(>=) 示例:
>>> x = 18
>>> y = 20
>>> print('比較的結果是:', x >= y)
# 輸出結果以下:
比較的結果是: False
複製代碼
小於(<) 示例:
>>> x = 18
>>> y = 20
>>> print('比較的結果是:', x < y)
# 輸出結果以下:
比較的結果是: True
複製代碼
小於等於(<=) 示例:
>>> x = 18
>>> y = 20
>>> print('比較的結果是:', x <= y)
# 輸出結果以下:
比較的結果是: True
複製代碼
常見的邏輯運算符:與(and)、或(or)、非(not)
邏輯運算符返回的不必定是布爾類型(bool),好比:1 and 'abc'返回的是‘abc’
另外,先提早了解下爲假(False)對象有以下這些,易於理解:
說明:全部條件爲真(True),返回結果才爲真,不然爲假(False)
x = 1
y = -1 #負數對象都是真(True)
if x and y:
print('x and y 均爲真')
else:
print('x and y 其中有一個爲假')
# 輸出結果以下:
x and y 均爲真
######################################
x = 1
y = '' #空字符串對象都是假(False)
if x and y:
print('x and y 均爲真')
else:
print('x and y 其中有一個爲假')
# 輸出結果以下:
x and y 其中有一個爲假
複製代碼
或(or) 示例: 說明:只要有一個條件爲真(True),返回結果爲真,不然爲假(False)
x = 1
y = []
if x or y:
print('x or y 爲真')
else:
print('x or y 都爲假')
#輸出結果以下:
'x or y 爲真
######################################
x = 0
y = []
if x or y:
print('x or y 爲真')
else:
print('x or y 都爲假')
#輸出結果以下:
x or y 都爲假
複製代碼
非(not) 示例: 說明:將真假對象置爲相反,好比not 對象爲True,則變爲False,not 對象爲False,則變爲True
x = 1
if not x:
print('其實x對象爲假')
else:
print('其實x對象爲真')
#輸出結果以下:
其實x對象爲真
######################################
x = {}
if not x:
print('其實x對象是假的')
else:
print('其實x對象是真的')
#輸出結果以下:
其實x對象爲假
複製代碼
先來個示例:x = 1
, 賦值就是=
號右邊的數值1賦值給左邊的變量x(記住始終先運行右邊表達式)。
常見的運算符:=、+=、-=、*=、=、%=、**=、\=
另外,還能夠使用鏈式賦值:x=y=z=1,即x=1,y=1,z=1
簡單賦值示例:
>>> x = 1 #右邊數值1賦值給了左邊X
>>> y = 'hello' #右邊字符串'hello'賦值給了左邊y
複製代碼
複雜賦值示例:
>>> x = 1
>>> x += 1 #等價於:x = x + 1,先運行=號右邊表達式,在賦值給左邊X
>>> print('x的結果是:',x)
#輸出結果以下:
2
複製代碼
常見的成員運算符:in
和 not in
。
in
表示x的成員是否在目標y對象裏面,若是有則返回True,不然返回False。
>>> x = 'a'
>>> y = 'abcdefg'
>>> print('x的成員在y裏面:', x in y)
#輸出結果以下:
x的成員在y裏面: True # x的成員字符串'a'在y的成員字符串裏面,因此結果爲True
複製代碼
not in
表示x的成員不在目標y對象裏面,若是不在返回True,不然返回False。
>>> x = 'a1'
>>> y = 'abcdefg'
>>> print('x的成員不在y裏面:', x not in y)
#輸出結果以下:
x的成員不在y裏面: True # x的成員字符串'a'在y的成員字符串裏面,因此結果爲True
複製代碼
身份運算符使用is
和 is not
來判斷標識符是否在內存地址引用同一對象。
身份運算符常常在字面上容易讓你們踩坑,首先要區分下==
和 is
的區別:
==
:指的是賦值的內容是否同樣;
is
:指的是標識符引用內存地址同一對象,使用id()函數來識別;
這裏經過邏輯圖演示一下,方便理解:
示例以下:
>>> x = ['a','b','c']
>>> y = ['a','b','c']
>>> print('x的ID是:',id(x))
>>> print('y的ID是:',id(y))
>>> print('x 和 y是否等價(=):',x == y)
>>> print('x 和 y是否在內存地址引用同一對象(id):',x is y)
#輸出結果以下:
x的ID是: 1986422101448
y的ID是: 1986422101960
x 和 y是否等價(=): True
x 和 y是否在內存地址引用同一對象(id): False
複製代碼
咱們先來看一個運算符例子,請問下該從哪一步算起、第二步...到最後返回的結果是啥?
-1 + 10 > 5 and 2 < 1
# 輸出結果以下:
False
複製代碼
運算優先級,從上往下,優先級高到低:
常見的內建函數:
內建函數名稱 | 函數簽名 | 說明 |
---|---|---|
print(value, sep=' ', end='\n') | 將數據輸出到控制檯,默認使用空格做爲分隔符(sep)、換行(\n) | |
input | input(value) | 在控制檯和用戶交互,接收用戶輸入,並返回字符串 |
int | int(value) | 將數據轉換成整數(int本質是類class) |
str | str(value) | 將數據轉換成字符串(str本質是類class) |
type | type(value) | 判斷對象是什麼類型(本質是元類) |
isinstance | isinstance(obj,tuple) | 判斷對象的類型 |
print 示例:
>>> print('www','python','org',sep='.',end='') #字符串之間用sep='.'分割,end=''不換行
# 輸出結果以下:
www.python.org
複製代碼
input 示例:
int 示例:
>>> x = '123' # '123'爲字符串
>>> y = int(x) # int將字符串'123'轉換爲整數 123
>>> print('字符串轉換爲整數:',type(y), y)
# 輸出結果以下:
字符串轉換爲整數: <class 'int'> 123
複製代碼
str 示例:
>>> x = 123
>>> y = str(x)
>>> print('整數轉換爲字符串:',type(y), y)
# 輸出結果以下:
整數轉換爲字符串: <class 'str'> 123
複製代碼
type 示例:
>>> x = '123'
>>> y = 123
>>> print('x是什麼類型',type(x))
>>> print('y是什麼類型',type(y))
# 輸出結果以下:
x是什麼類型 <class 'str'>
y是什麼類型 <class 'int'>
複製代碼
isinstance 示例:
>>> x = '123'
>>> y = 123
>>> print('x是整數嗎?',isinstance(x, int))
>>> print('y是整數嗎?',isinstance(y,(int,str)) #(int,str)位元組,或關係
# 輸出結果以下:
x是整數嗎? False
y是整數嗎? True
複製代碼
一個程序可否正常運行,必須的有順序、分支、循環運行,若是條件控制不對就會致使死循環。
正常的順序:從上到下一條條執行;
分支:分單分支和多分支,如條件知足則執行條件下的語句;
單分支
if 條件:
代碼塊
# 示例:
x = 1
if x > 0: #如條件爲真,執行下面代碼塊
print('hello world!')
複製代碼
多分支
if 條件1:
代碼塊
elif 條件2:
代碼塊
elif 條件3:
代碼塊
...
else:
代碼塊
# 示例:
x = 1
if x < 0:
print("x是負數")
elif x==0:
print('x是零')
else:
print('x是正數')
複製代碼
循環:條件知足就反覆執行,不知足就不執行;
常見的循環語句:for語句、while語句、continue語句、break語句;
for 語句 標準格式:
for [元素] in [可迭代對象]:
代碼塊
複製代碼
for 語句結合range()函數 示例:
說明:range() 是惰性對象,須要去撥動它,撥一下便返回一個值
#range(stop),range(5)表示[0,5)前包後不包,返回(0,1,2,3,4)序列,
for i in range(5):
print(i)
# 輸出結果以下:
0
1
2
3
4
#################################################
#range(start,stop,step),step表示步長
for i in range(0,10,2):
print(i)
# 輸出結果以下:
0
2
4
6
8
複製代碼
while 循環
說明:多用於死循環或不明確知道循環次數的場景。 標準語句:
while 條件:
代碼塊
複製代碼
死循環 示例:
#死循環
while 1:
print('這是死循環')
複製代碼
正常循環 示例:
x = 3
while x:
print(x)
x -= 1
# 輸出結果以下:
3
2
1
複製代碼
另外,思考下,上面結果爲啥只有3 2 1。
continue
說明:continue是跳過當前循環的當次循環,繼續下一次循環
for x in range(10):
if x % 2 == 0:
continue
print('這是不會執行的') #永遠都不會執行
print(x)
x -= 1
# 輸出結果以下:
1
3
5
7
9
複製代碼
break 說明:結束當前循環
x = 0
while True:
x += 1
if x > 3:
break
print(x)
# 輸出結果以下:
1
2
3
複製代碼
若是遇到循環有多層嵌套,要注意break隻影響當前循環
若是喜歡個人文章,歡迎關注個人公衆號:點滴技術,掃碼關注,不按期分享