1. 程式人生 > >Python全棧開發之基礎語法

Python全棧開發之基礎語法

deepcopy 分配 有符號 數字 桌面應用 存儲 tex 算術運算符 多行

No1. Python語言介紹

詳情見百度百科。。。

No.2 Python是一門怎麽樣的語言

詳情在百度百科。。。

No3. Python能做什麽

網絡應用、桌面應用、系統運維、機器學習、科學計算。。。

  • 網絡應用 Django/Flask/Tornado
  • 桌面應用 PyQt/PySide/wxPython/PyGTK
  • 系統運維 psutil/IPy/dnspython/difflib
  • 機器學習 Scikit-Learn/Statsmodels/PyMC/Shogun
  • 科學計算 NumPy/SciPy/Matplotlib

    No4. Python的優缺點

  • 簡單,開發效率高,高級語言,跨平臺。。。
  • 速度慢,代碼不能加密,GIL鎖。。。

    No5. Python的安裝

  • Windows 下載Anaconda,點點點。。。
  • Linux 下載Anaconda,解壓,安裝。。。

    No6. 註釋

  • 單行註釋 # 一行
  • 多行註釋 """一堆""" OR ‘‘‘一堆‘‘‘

    No.7 關鍵字

  • 具有特殊功能的標識符,這就是所謂的關鍵字
    import keyword
    print(keyword.kwlist)

    No.8 格式化

格式符號 備註
%c 字符
%s 字符串
%i 有符號十進制整數
%d 無符號十進制整數
%o 八進制整數
%x 十六進制整數(小寫字母)
%X 十六進制整數(大寫字母)
%f 浮點數

No.9 變量

Python的變量就是一個便利貼

  • 變量名只能是字母、數字、下劃線的組合
  • 變量的第一個字符不能是數字
  • 變量名不能和關鍵字重名

No.10 運算符

  • 算術運算符

    運算符 備註
    +
    -
    *
    **
    /
    // 整除
    %
  • 賦值運算符

    運算符 實例
    = a = 1
    += a += 1 <=> a = a + 1
    -= a -= 1 <=> a = a -1
    *= a = 2 <=> a = a 2
    **= a = 2 <=> a = a
    2
    /= a /= 2 <=> a = a / 2
    //= a //= 2 <=> a = a // 2
    %= a %= 2 <=> a = a % 2
  • 關系運算符

    運算符 備註
    == 等於
    != 不等於
    > 大於
    < 小於
    >= 大於等於
    <= 小於等於
  • 邏輯運算符

    運算符 備註
    and x和y均為真,返回真
    or x或者y為真,返回真
    not x為假,返回真
  • 位運算符

    運算符 備註
    & 按位與運算符,參與運算的兩個值,如果相同位都為1,則結果為1
    | 按位或運算符,參與運算的兩個值,只要相同位一個為1,則結果為1
    ^ 按位異或運算符,參與運算的兩個值,當相同位不同時,則結果為1
    ~ 按位取反運算符,即1變0,0變1
    << 左移運算符,運算符的各二進制位向左移動若幹位
    >> 右移運算符,運算符的各二進制位向右移動若幹位
  • 成員運算符

    運算符 備註
    in 如果在序列中存在返回真
    not in 如果在序列中不存在返回真
  • 身份運算符

    運算符 備註
    is 判斷兩個標識符是不是引用自一個對象
    is not 判斷兩個標識符是不是不是引用自一個對象

No.11常用數據類型轉換

  • index(x[,base]) 將x轉換為一個指定進制的整數,默認為十進制
  • long(x[,base]) 將x轉換為一個指定進制的整數,默認為十進制
  • float(x) 將x轉換為一個浮點數
  • str(x) 將x轉換為一個字符串
  • repr(x) 將x轉換為表達式字符串
  • eval(x) 用來計算字符串表達式並返回一個對象
  • tuple(x) 將x轉換成一個元祖
  • list(x) 將x轉換成一個列表
  • chr(x) 將x(整數)轉換為字符形式
  • ord(x) 將x(字符)轉換成整數形式
  • hex(x) 將x轉換成十六進制
  • oct(x) 將x轉換成八進制
  • bin(x) 將x轉換成二進制

No.12 判斷語句

  • if-else
if 條件:
    do something
else:
    do something
  • elif
    if 條件:
    do something
    elif 條件:
    do something
  • if嵌套
    if 條件:
    if 條件:
        do something
    elif 條件:
        do something
    elif 條件
    if 條件:
        do something
    elif 條件:
        do something
    else:
    if 條件:
        do something
    elif 條件:
        do something

No.12 循環語句

  • while
while 條件:
    do something
栗子:
i = 0
sum = 0
while i < 100:
    sum += i 
    i += 1
  • while循環嵌套
while 條件:
    do something
    while 條件:
        do something
栗子:
i = 1
while i <= 9:
    j = 1
    while j <= i
        print("%d*%d=%-2d"%(j,i,i*j),end=‘‘)
        j += 1
    print(‘\n‘)
    i += 1
  • for循環

    在Python中for循環可以遍歷任何序列

for 臨時變量 in 序列:
    do something
else:
    do something
栗子:
name = ‘kernel‘
for i in name:
    print(i)
  • break和continue
    break的作用是用來結束整個循環
    栗子:
    i = 0
    while i <= 100:
    i += 1
    if i == 5:
        break   

    continue的作用是用來結束本次循環,然後執行下一次循環

栗子:
i = 0
while i <= 100:
    i += 1
    if i == 5:
        continue

No.13 簡述拷貝

要理解深淺拷貝需要理解下面的概念
變量->引用->對象->切片->拷貝
變量是便利貼
對象是被分配的一塊內存,存儲其代表的值
引用是自動形成的從變量到對象的指針
不變對象是指一旦創建就不可以改變的對象,例如字符串、數字、元組
可變對象是指可以改變的對象,例如列表、字典

  • 不可變對象的賦值
a = 1
b = a
print(a) # 1
print(b) # 1
b = 2
print(a) # 1,並沒有隨著b的改變而改變
print(b) # 2
  • 可變對象的賦值
a = [1,2,3,4]
b = a
print(a) # [1,2,3,4]
print(b) # [1,2,3,4]
b[3] = 5
print(a) # [1,2,3,5]
print(b) # [1,2,3,5]
  • 深淺拷貝

    淺拷貝:只拷貝頂級的對象

    深拷貝:拷貝所有對象

import copy
l1 = [1,2,3,4,[‘a‘,‘b‘]]
l2 = copy.copy(l1)
print(l1) # [1,2,3,4,[‘a‘,‘b‘]]
print(l2) # [1,2,3,4,[‘a‘,‘b‘]]
l2[0] = 11
l2[4][0] = ‘aa‘
print(l1) # [11,2,3,4,[‘a‘,‘b‘]]
print(l2) # [11,2,3,4,[‘aa‘,‘b‘]]
import copy
l1 = [1,2,3,4,[‘a‘,‘b‘]]
l2 = copy.deepcopy(l1)
print(l1) # [1,2,3,4,[‘a‘,‘b‘]]
print(l2) # [1,2,3,4,[‘a‘,‘b‘]]
l2[0] = 11
l2[4][0] = ‘aa‘
print(l1) # [11,2,3,4,[‘aa‘,‘b‘]]
print(l2) # [11,2,3,4,[‘aa‘,‘b‘]]

結論:
深淺拷貝都是對源對象的復制,占用不同的內存空間
如果源對象只有一級目錄的話,源做任何改動,不影響深淺拷貝對象
如果源對象不止一級目錄的話,源做任何改動,都要影響淺拷貝,但不影響深拷貝
序列對象的切片其實是淺拷貝,即只拷貝頂級的對象

Python全棧開發之基礎語法