Python語言之語法基礎
Python語言之語法基礎
前言
人生苦短,我用Python。
一、基本語法
註釋
-
Python中的單行註釋以#開頭!
-
多行註釋可以使用三引號作為開頭和結束符號
行與縮排
python最具特色的就是使用縮排來表示程式碼塊
並不強制要求縮排4個空格,但要求縮排相同
if True:
print ("True")
else:
print ("False")
print ("False")
語句換行
1.Python 通常是一行寫完一條語句,但如果語句很長,我們需要換行,這時可以使用圓括號來實現。
s=("Python是一種面向物件、解釋型計算機程式設計語言," "由Guido van Rossum於1989年底發明。" "第一個公開發行版發行於1991年," "原始碼同樣遵循 GPL(GNU General Public License)協議。")
2.對於字串或者字元型別,還可使用三引號來實現。
3.對於程式碼來說,可使用反斜槓\來實現。
注:反斜槓後不能用空格或者其他符號
a = 1
b = 2
c = a +\
b
# 等同於c = a + b
print(c)
4.需要注意的是,在 [](列表), {}(字典), 或 ()(元組) 中的語句,不需要使用圓括號進行換行。
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
二、變數和資料型別
Python中的變數用來儲存資料,變數可以理解為去超市購物的菜籃子,其型別和值在賦值的那一刻被初始化
注:變數不用宣告型別,直接賦值使用。
num1 = 100
num2 = 87
result = num1 + num2
變數型別:
- 數字型別:整型、浮點、複數、布林型別
- 布林型別
- 字串型別
- 列表型別
- 元組型別
- 字典型別
- 集合
三、識別符號和關鍵字
識別符號
若希望在程式中表示一些事物,需要開發人員自定義一些符號和名稱,這些符號和名稱叫做識別符號。
- 識別符號由字母、下劃線和數字組成,且數字不能開頭。
- Python中的識別符號是區分大小寫的。
- python中的識別符號不能使用關鍵字 。
注:關鍵字不能用作識別符號,在系統編譯時會引起歧義。
test = 1
test_1 = Test()
_test1 = 1
關鍵字
關鍵字指的是具有特殊功能的識別符號。
>>> help() # 進入幫助系統
help> keywords # 檢視所有的關鍵字列表
help> return # 檢視return這個關鍵字的說明
help> quit # 退出幫助系統
四、簡單數值型別
整型
整數型別(int)簡稱整型,它用於表示整數。
- 二進位制:0b10100(以0b開頭,bin()轉換)
- 八進位制: 0o10111(以0o開頭,oct()轉換)
- 十進位制: 64(int()轉換)
- 十六進位制: 0x14 (以0x開頭,hex()轉換)
浮點型
- 浮點型(Float)用於表示實數。
- 浮點型字面值可以用十進位制或科學計數法表示。
<實數>E或者e<整數>
E或e表示基是10,後面的整數表示指數,指數的正負使用+或-表示。
Python的浮點型遵循的是IEEE754雙精度標準,每個浮點數佔8個位元組,能表示的數的範圍是1.8e-308~1.8e+308 (64位)
布林型別
- 布林型其實是整型的子型別。
- 布林型資料只有兩個取值:True和False,分別對應整型的1和0。
以下物件的布林值都是False:
- None、False(布林型)、0(整型0)、0x0(16進位制0)、0.0(浮點型0)、0.0+0.0j(複數0)
- “ ”(空字串)、[ ](空列表)、( )(空元組)、{ }(空字典)
複數型別
複數型別,用於表示數學中的複數,例如,5+3j。
(1)複數由實數部分和虛數部分構成,表示為:real + imag j
(2)複數的實數real和虛數imag都是浮點型
數字型別轉換
檢視變數型別
使用type()函式
a = 10
print(type(a))
輸出:<class 'int'>
五、運算子
算術運算子
+ 加:兩個物件相加
- 減:得到負數或一個數減去另一個數
* 乘:兩個數相乘或是返回一個被重複若干次的字串
/ 除:x除以y
% 取餘:返回除法的餘數
** 冪:返回x的y次冪
// 取整除:返回商的整數部分
賦值運算子
賦值運算子只有一個,即=,它的作用是把等號右邊的值賦給左邊。 例如,x=1
- 為多個變數賦同一個值:x=y=z=1
- 將多個值賦值給多個變數 a, b = 1, 2
複合賦值運算子
+= 加法賦值運算子 c+=a等效於c=c+a
-= 減法賦值運算子 c-=a等效於c=c-a
*= 乘法賦值運算子 c*=a等效於c=c*a
/= 除法賦值運算子 c/=a等效於c=c/a
%= 取模賦值運算子 c%=a等效於c=c%a
**= 冪賦值運算子 c**=a等效於c=c**a
//= 取整除賦值運算子 c//=a等效於c=c//a
比較運算子
== 檢查兩個運算元的值是否相等
!= 檢查兩個運算元的值是否不等
> 檢查左運算元的值是否大於右運算元的值
< 檢查左運算元的值是都小於右運算元的值
>= 檢查左運算元的值是否大於或等於右運算元的值
<= 檢查左運算元的值是否小於或等於右運算元的值
邏輯運算子
and x and y 布林“與”,如果x為False,x and y返回False,否則它返回y的計算值
or x or y 布林“或”,如果x為True,它返回True,否則返回y的計算值
not not x 布林“非”,如果x為True,返回False,如果x為False,它返回True
成員運算子
in 如果在指定的序列中找到值返回 True,否則返回 False。
x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。
x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
六、位運算
按位左移和按位右移
按位左移(<<)指的是二進位全部左移n位,高位丟棄,低位補0 。
按位右移(>>)指的是將二進位全部右移n位,移出的位丟棄,移進的位補符號位。按位右移的符號位保持不變。
按位與、按位或和按位異或
按位與指的是參與運算的兩個數各對應的二進位進行“與”的操作。只有對應的兩個二進位都是1時,結果位才為1,否則結果位為0.
1001
0011
0001
按位或指的是參與運算的兩個數各對應的二進位進行“或”的操作。只要對應的兩個二進位有一個為1時,結果位就為1
1000
0100
1100
按位異或就是將參與運算的兩個數對應的二進位制位進行比較,如果一個位為1,另一個位為0,則結果為就為1,否則,結果位為0。
1000
0100
1100
按位取反
- 按位取反就是將二進位制的每一位進行取反;
- 0取反為1,1取反為0
- 但是,在計算機系統中,數值一律用補碼來表示和儲存
計算機中原碼補碼計算規則:
計算機儲存n位,左邊最高位為符號位,1為負,0為正;
所有數值在計算機中以補碼形式儲存
正數的原碼與補碼相同
負數的補碼為原碼按位取反再+1(符號位不變)
負數的原碼為補碼-1再按位取反
原碼補碼轉換過程中,符號位不變
按位取反計算方法:~x = -(x+1)
取反符號計算流程:
① 無論給的正數、負數,先求該數的原碼。(因為下一步的取反是對原碼取反)
② 對①得到原碼取反,包括符號位也取反(因為要執行取反運算子)
③ 對②得到的結果求補碼。(第②步得到取反後的值,要在計算機內以補碼儲存)
④ 把③的結果轉換為有正負號的十進位制值。
原始碼求補碼:
(1)如果原碼的符號位為“0”,表示是一個正數,所以補碼就是該數的原碼。
(2)如果原碼的符號位為“1”,表示是一個負數,求補碼的操作是:符號位為1,其餘各位取反,然後再整個數加1。
補碼求原碼:
(1)如果該補碼的符號位為“0”,表示是一個正數,所以原碼補碼是同一個。
(2)如果該補碼的符號位為“1”,表示是一個負數,求原碼的操作是:
方法1(求一次補碼即得到原碼):符號位為1,其餘各位取反,然後再整個數加1。
方法2(減1求反):符號位為1,整個數減1,再取反(符號位不取反)。
七、運算子優先順序
** 指數(最高優先順序)
~,+,- 按位翻轉,一元加號和減號
(最後兩個的方法名為+@ 和 -@,例如:+5,-5 正5,負5)
*,/,%,// 乘,除,取模和取整數
+,- 二元加號和減號
>>,<< 右移,左移運算子
& 按位與
|,^ 按位或,按位異或
<=,>=,==,!= 比較運算子
=,%=,/=,//=,-=,+=,*=,**= 賦值運算子
is,is not 身份運算子
in,not in 成員運算子
not,or,and 邏輯運算子
輸入輸出
輸入
給變數賦值(結果為字串):
- a = input()
- print(type(a))
帶提示文字:
- a = input('請輸入:')
輸出
直接輸出:
- print('hello world')
格式化輸出:
- print('{0} 和 {1}'.format('Google', 'Runoob'))
- print('這個變數是%s' % 變數)
保留小數位數:
- print('常量 PI 的值近似為 {0:.3f}。'.format(3.141592653))
- print('這個浮點數是%.1f' % 3.14159) # 取1位小數
輸出引數:
- a,b = 0,8
- print(a,b)
f-string輸出
python3.6之後的版本引入了一種新的字串格式化方式:f-tring格式化字串。從%s格式化到format格式化再到f-string格式化,格式化的方式越來越直觀,f-string的效率也較前兩個高一些,使用起來也比前兩個簡單一些。
例:
a = 1
print(f'test print:{a}')
輸出:test print:1