python 基礎知識
[toc]
1. 基礎語法
1.1 註釋
在編寫程式碼的時候,有些程式碼不需要執行或增加程式碼說明,那麼就需要用到註釋了。
被註釋的文字或程式碼是不會被執行的。
註釋可以使用如下三種方式:
- # 號
# 第一個註釋,本行程式碼不會執行
print("hello world!") # 第二個註釋
- ‘’’ 三個單引號
也叫塊註釋,支援換行。
'''
第一行註釋,本行程式碼不會執行
第二行註釋,本行程式碼不會執行
第三行註釋,本行程式碼不會執行
'''
print('hello world!')
- “”" 三個雙引號
也叫塊註釋,支援換行。
"""
第一行註釋,本行程式碼不會執行
第二行註釋,本行程式碼不會執行
第三行註釋,本行程式碼不會執行
"""
print('hello world!')
1.2 跳脫字元
常用的轉義符:
跳脫字元 | 描述 |
---|---|
(行尾) | 續行 |
反斜槓() | |
` | 單引號(’) |
" | 雙引號(" ) |
n | 換行 |
r | 回車 |
t | Tab鍵(TAB) |
- 行尾,用於續行
>>> print("www
.python.
org")
# 輸出結果
www.python.org
-
‘’\",兩個反雙斜槓,轉義為1個反斜槓
非正常結果 示例:
>>> str = 'c:windowsnote' >>> print(str) # 輸出結果:' n '當作換行來用了,才會出現如下情況 c:windows ote
正常結果 示例:
#把'n'改成'\n'就可以解決了 >>> str = 'c:windows\note' >>> print(str) # 修改後輸出結果: c:windowsnote
1.3 縮排
嚴格約定使用4個 空格
和一個 製表符
(tab)作為縮排,切記不能混用,否則報錯IndentationError
def fun():
print('hello world')
print('hello world')
1.4 識別符號
識別符號的本質是對應具體資料結構的值,因該值不能被程式設計師直接訪問,所以需要透過呼叫識別符號來訪問。
識別符號格式定義的要求:
- 由字母(az)、數字(09)、下劃線(_)組成;
- 不能以數字開頭;
- 不能與python內建相同名;
- 字母大小敏感;
- 不能使用中文、也不建議用拼音
錯誤識別符號 示例:
# 報語法錯誤,識別符號不能以數字開頭
>>> 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 |
1.5 語言型別
-
python是動態語言、強型別語言。
動態編譯語言
- 不用事先宣告資料型別,可以隨意賦值其他資料型別;
- 程式設計時不知道時什麼型別,很難推斷,這也是python的不好的地方,v3.8嚴格在這方便做改進;
# 識別符號隨意切換資料型別 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
1.6 運算子
1.6.1 算術運算子
常見的算術運算子:加(+)、減(-)、乘(*)、除(/)、取整(//)、取模(%)、冪(**)
-
加(+) 示例:
>>> 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
1.6.2 位運算子
位與(&)、位或(|)、異或(^)、左移(<<)、右移(>>)
計算機的語言都是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
1.6.3 比較運算子
常見的比較運算子:等於(==)、不等於(!=)、大於(>)、大於等於(>=)、小於(<)、小於等於(<=),返回的結果是布林(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
1.6.4 邏輯運算子
常見的邏輯運算子:與(and)、或(or)、非(not)
邏輯運算子返回的不一定是布林型別(bool),比如:1 and 'abc’返回的是‘abc’
另外,先提前瞭解下為假(False)物件有如下這些,易於理解:
- 與(and) 示例:
說明:所有條件為真(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,則變為Truex = 1 if not x: print('其實x物件為假') else: print('其實x物件為真') #輸出結果如下: 其實x物件為真 ###################################### x = {} if not x: print('其實x物件是假的') else: print('其實x物件是真的') #輸出結果如下: 其實x物件為假
1.6.5 賦值運算子
先來個示例: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
1.6.6 成員運算子
常見的成員運算子: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
1.6.7 身份運算子
身份運算子使用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.6.8 運算優先順序
我們先來看一個運算子例子,請問下該從哪一步算起、第二步…到最後返回的結果是啥?
-1 + 10 > 5 and 2 < 1
# 輸出結果如下:
False
運算優先順序,從上往下,優先順序高到低:
1.7 內建函式
常見的內建函式:
內建函式名稱 | 函式簽名 | 說明 |
---|---|---|
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
1.8 迴圈語句
一個程式能否正常執行,必須的有順序、分支、迴圈執行,如果條件控制不對就會導致死迴圈。
正常的順序:從上到下一條條執行;
分支:分單分支和多分支,如條件滿足則執行條件下的語句;
-
單分支
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隻影響當前迴圈
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4822/viewspace-2824815/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python基礎知識Python
- Python基礎知識整理Python
- Python基礎知識1Python
- Python基礎知識分享Python
- Python 基礎知識教程Python
- Python知識體系-Python2基礎知識Python
- Python基礎知識點梳理Python
- Python——基礎知識細節Python
- Python基礎知識架構Python架構
- Python基礎知識之字典Python
- Python基礎知識之集合Python
- Python基礎知識之二Python
- Python基礎知識入門(二)Python
- Python入門基礎知識(二)Python
- Python基礎函式使用知識Python函式
- python基礎知識縱覽(中)Python
- python基礎知識縱覽(下)Python
- python 爬蟲基礎知識一Python爬蟲
- Python演算法:基礎知識Python演算法
- 基礎知識
- 基礎的python知識2 (變數)Python變數
- 【Python基礎知識】Django框架簡介PythonDjango框架
- Python 面試必備基礎知識-1Python面試
- Python 必備面試基礎知識-3Python面試
- Python基礎知識思維導圖Python
- Python入門基礎知識例項,Python
- python,函式各種基礎知識Python函式
- Python基礎知識之常用框架Flask!Python框架Flask
- Python入門之基礎知識(一)Python
- 00101 python基礎知識Python
- Python類的基礎入門知識Python
- AI 基礎知識AI
- Webpack 基礎知識Web
- Dart基礎知識Dart
- RabbitMQ基礎知識MQ
- webpack基礎知識Web
- javascript基礎知識JavaScript
- ThinkPHP基礎知識PHP