python 基礎知識

[toc]python


碼好python的每一篇文章.

1. 基礎語法

1.1 註釋

在編寫代碼的時候,有些代碼不須要執行或增長代碼說明,那麼就須要用到註釋了。程序員

被註釋的文本或代碼是不會被執行的。編程

註釋能夠使用以下三種方式:windows

  • # 號
# 第一個註釋,本行代碼不會運行
print("hello world!") # 第二個註釋
複製代碼
  • ''' 三個單引號

也叫塊註釋,支持換行。數據結構

''' 第一行註釋,本行代碼不會運行 第二行註釋,本行代碼不會運行 第三行註釋,本行代碼不會運行 '''
print('hello world!')
複製代碼
  • """ 三個雙引號

也叫塊註釋,支持換行。async

""" 第一行註釋,本行代碼不會運行 第二行註釋,本行代碼不會運行 第三行註釋,本行代碼不會運行 """
print('hello world!')
複製代碼

1.2 轉義字符

經常使用的轉義符:函數

轉義字符 描述
\(行尾) 續行
\ 反斜槓()
` 單引號(')
" 雙引號(")
\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
    複製代碼

1.3 縮進

嚴格約定使用4個 空格 和一個 製表符 (tab)做爲縮進,切記不能混用,不然報錯IndentationError

def fun():
	print('hello world')
	print('hello world')
複製代碼

1.4 標識符

標識符的本質是對應具體數據結構的值,因該值不能被程序員直接訪問,因此須要經過調用標識符來訪問。

標識符格式定義的要求:

  • 由字母(a~z)、數字(0~9)、下劃線(_)組成;
  • 不能以數字開頭;
  • 不能與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
複製代碼
  • 位與(&) 示例:

    說明:位與(&)是以二進制計算二者位都是 11 ,不然都是 0

    >>> x = 18
    >>> y = 20
    >>> print('x & y 結果是:', x & y)
    # 輸出結果以下:
    x & y 結果是: 16
    複製代碼
  • 位或(|) 說明:位或(|)是以二進制計算二者位有一個 11 ,不然都是 0

    >>> x = 18
    >>> y = 20
    >>> print('x | y 結果是:', x | y)
    # 輸出結果以下:
    x | y 結果是: 22
    複製代碼
  • 異或(^) 說明:異或(^)是以二進制計算二者位都有 10 ,有一個 11,其餘爲 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,則變爲True

    x = 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 成員運算符

常見的成員運算符:innot 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 身份運算符

身份運算符使用isis 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 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隻影響當前循環


若是喜歡個人文章,歡迎關注個人公衆號:點滴技術,掃碼關注,不按期分享

點滴技術
相關文章
相關標籤/搜索