Python筆記1(基礎)

Python筆記

解釋型的語言,則必須把源碼發佈出去
代碼少的代價是運行速度慢
C語言適合開發那些追求運行速度、充分發揮硬件性能的程序
解釋器或者編譯器就是負責把符合語法的程序代碼轉化爲CPU能夠與執行的機器碼,然後執行。
變量本身類型不確定的語言變量是`動態語言`,靜態語言在定義變量時必須制定變量類型

一、介紹

Python之父Guido van Rossum(荷蘭)龜叔

代碼少的代價是運行速度慢

C語言適合開發那些追求運行速度、充分發揮硬件性能的程序,而Python是用來編寫應用程序的高級編程語言。

Python就爲我們提供了非常完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形象地稱作“內置電池";除了內置的庫外,Python還有大量的第三方庫

  • 應用:
首選是網絡應用,包括網站、後臺服務等等;
其次是許多日常需要的小工具,包括系統管理員需要的腳本任務等等;
另外就是把其他語言開發的程序再包裝起來,方便使用。
  • 缺點:
第一個缺點就是運行速度慢。Python是解釋型語言,代碼在執行時會一行一行地翻譯成CPU能理解的機器碼。
第二個缺點就是代碼不能加密。解釋型的語言,則必須把源碼發佈出去。

退出python交互模式:exit()或者ctrl+z

Python交互模式的代碼是輸入一行,執行一行,而命令行模式下直接運行.py文件是一次性執行該文件內的所有代碼

二、簡單的數據類型和變量

1. 基本語法

1.在Python中嚴格區分大小寫
2.Python中的每一行就是一條語句,每條語句以換行結束
3.Python中每一行語句不要過長(規範中建議每行不要超過80個字符)
4.一條語句可以分多行編寫,多行編寫時語句後邊以\結尾  
5.Python是縮進嚴格的語言,所以在Python中不要隨便寫縮進  
6.在Python中使用#來表示註釋,#後的內容都屬於註釋,註釋的內容將會被解釋器所忽略
    我們可以通過註釋來對程序進行解釋說明,一定要養成良好的編寫註釋的習慣
    註釋要求簡單明瞭,一般習慣上#後邊會跟着一個空格

2. 編碼問題

Unicode將所有語言都統一到一套編碼裏
ASCII碼是一個字節,Unicode編碼通常是兩個字節
把Unicode編碼轉化爲“可變長編碼”的UTF-8編碼,常用英文字母是一個字節,漢字通常是3個字節,只有很生僻的字符纔會被編碼成4-6個字節。
ASCII編碼可以看成UTF-8編碼的一部分
計算機內存中,統一使用Unicode編碼,在需要保存到硬盤或者傳輸的時候,就轉化爲UTF-8編碼

ASCII碼的範圍是:0-255或-128-+127

純英文的str可以用ASCII編碼爲bytes,,中文的str可以用UTF-8編碼爲bytes

中文的編碼超過了ASCII的編碼範圍,好像是句廢話

3.變量命名

  1. 標識符中可以含有字母、數字、_,但是不能使用數字開頭
  2. 標識符不能是Python中的關鍵字和保留字,不使用Python中的函數名作爲標識符
  3. 命名規範:
  • 在Python中注意遵循兩種命名規範:

    • 下劃線命名法

      所有字母小寫,單詞之間使用_分割

    • 帕斯卡命名法(大駝峯命名法)

      首字母大寫,每個單詞開頭字母大寫,其餘字母小寫

4. 註釋

  1. #號開頭,註釋掉一行代碼
  2. """或者'''三對引號,註釋掉多行代碼
  3. 中文註釋#coding = utf-8

python區分大小寫,使用縮進來組織代碼塊(4個縮進)

Python的基本數據類型:數字、字符串、列表、字典、元組

5. 簡單數據類型和變量

1、數值:
  1. 整數

    Python的整數沒有大小限制

    如果數字的長度過大,可以使用下劃線作爲分隔符

  2. 浮點數(用e表示10,如:1.23e9)

    Python中所有的小數都是float類型,沒有大小限制,但超出一定範圍就直接表示爲inf(無限大)

  3. 複數

2、字符串(在Python 3中,是以Unicode編碼的)
  • 以單引號或者雙引號括起來的內容

  • ord()函數:獲取字符的整數表示

  • chr()函數:把編碼轉換成對應的字符

  • 轉義字符\,python內部允許使用r''表示''內的字符串默認不轉義

  • 允許用'''...'''的格式表示多行內容

  • 輸出格式化字符串

    • 與c語言相同,用%引導

      例:print('Hi,%s have %d' %('you',1000))

      %s會把任意數據類型轉化爲字符串

      %%表示一個%

    • format()函數

      它會用傳入的參數依次替換字符串內的佔位符{0}{1}……需要從0開始

      例:print('{0} and {1}'.format(12,21))

3、布爾值(turefalse

布爾值可以用and (與運算)or(或運算) not(非運算) 運算

4、空值

空值用None表示

5、變量

變量名必須是數字、英文和下劃_線的組合,不能用數字開頭

6、常量

通常用大寫的變量名錶示常量(實際仍是變量)

7、bytes

如果需要在網絡上傳輸,或者保存到磁盤上,就需要把str轉換爲以字節爲單位的bytes

在網上或磁盤上讀取數字流,讀到的數據是bytes

bytes的每個字符都只佔一個字節。

表示:b''
例:x = b'abc'

(1) 將str轉化爲bytes

以Unicode表示的str通過encode()可以編碼爲指定的bytes

例:'abc'.encode('ascii')

(2) 將bytes轉化爲str

通過decode()方法

例:b'abc'.decode('ascii')

bytes中包含無法解碼的字節,decode()會報錯,若bytes中只有一小部分無效,可以傳入 errors='ignore'忽略錯誤的字節

計算字符數的長度

len()函數,str計算的是字節數,bytes計算的是字節數

例:len('abc') len(b'abc')

在保存源代碼時,保存爲UTF-8編碼

取源代碼時,爲了讓它按UTF-8編碼讀取,通常在文件開頭加上

#!/usr/bin/env python3  //告訴Linux/OS X系統,這是一個Python可執行程序
#-*- coding: utf-8 -*-	//告訴python解釋器,按照UTF-8編碼讀取源代碼
保存時也需保存爲UTF-8編碼

三、序列

list和tuple(內置的有序集合)

1. 列表:list:[]

有序列表(像數組與結構體的結合)

內置的一種數據類型,list是一種有序的集合,可以隨時添加和刪除其中的元素

列表裏面的數據類型可以不同,也可以含有列表(看成多維數組)

操作:

  • 增:

    a.append(elem)加到末尾

    a.insert(site,elem)添加到指定位置

  • 刪:

    a.pop(site)不加位置,默認末尾

  • 改:

    賦值給對應的索位置

  • 查:

    索引與數組相同是從0開始

a[site],查看site處元素,site可以爲-1,即查詢最後一個元素

2. 元組: tuple:()

(有序列表)

tuple一旦初始化就不能更改,查詢與list相同

  • 只有一個元素的tuple

    ==定義時必須加一個逗號,==以消除歧義a = (1,)

    a = (1)定義的是1這個數

  • “可變的”tuple(實際是list在變):

    tuple中包含list:a = tuple(‘a’,‘b’,[‘A’,‘B’])tuple包含三個元素,a,b和list

四、字典 dic:{}

1. 特點

  1. 字典是一種可變的容器,可以存儲任意類型的數據
  2. 字典中每個數據都是用‘鍵’(key)進行索引,而不像序列可以用下標進行索引
  3. 字典的數據沒有先後順序關係,字典的存儲是無序
  4. 字典中的數據以鍵(key)-值(value)隊進行映射存儲,查找速度快
  5. 字典的鍵不能重複,且只能用不可變類型作爲字典的鍵。

表示方法:用{}括起來,以冒號(:)分割鍵-值對,各鍵值對用分號分隔開

例:d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}

2. 創建

**(1)創建空字典: **

  • d = {}

(2)創建非空字典:

  • d = {'name':'tarena','age':'15'}

(3)字典的構造函數 dict:

  • dict() 創建一個空字典,等同於{}
  • dict(iterable) 用可迭代對象初始化一個字典
  • dict(**kwargs) 關鍵字傳參形式生成一個字典

3. 增

即把數據放入dict的方法:

  • (1)除了初始化時指定外

  • (2)通過key放入

    d['Adam'] = 67

一個key只能對應一個value

4. 刪

刪除一個key:

  • pop(key)方法,對應的value也會從dict中刪除

5. 要避免key不存在的錯誤:

  • (1)通過in/not in判斷key是否存在:

    'Thomas' in d #如果存在返回True,否則返回False;not in 與in返回值相反

  • (2)通過dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

    d.get('Thomas', -1)

dict的key必須是不可變對象

通過key計算位置的算法稱爲哈希算法(Hash)

五、集合set

1. 特點

  1. 集合是可變的容器
  2. 集合內的數據對象是唯一的,即沒有重複的key,重複元素在set中自動被過濾
  3. 集合是無序的存儲結構,集合中的數據沒有先後關係
  4. set的原理和dict一樣,集合內的元素必須是不可變對象
  5. 集合是可迭代的
  6. 集合是相當於只有鍵沒有值的字典(是一組key的集合,但不存儲value)

對於不變對象來說,調用對象自身的任意方法,也不會改變該對象自身的內容這些方法會創建新的對象並返回

2. 創建

要創建一個set,需要提供一個list作爲輸入集合

(1)創建空的集合:
set() #set()創建一個空的集合

(2)創建非空集合:
s = {1,2,3} #集合中的三個整數1,2,3
(3)集合的構造函數 set:

  • set()創建空集合
  • set(iterable) 用可迭代對象創建一個新的集合對象

3. 增

  • 通過add(key)方法
  • s.add(4)

4. 刪

  • 通過remove(key)方法
  • s.remove(4)

5. 數學意義上的交集、並集等操作

  • 交集:s1 & s2
  • 並集:s1 | s2

五、判斷

if語句

  • python的if沒有括號,依靠縮進

  • ifelse後有冒號:

    if age >= 18:
    else:
    
  • elif:(else if)

六、循環

1. for…in循環

for x in ...:  #把每個元素帶入變量x,然後執行縮進語句
	print(x)

[x * x for x in range(1, 11)]

for循環後面加上if判斷:[x * x for x in range(1, 11) if x % 2 == 0]

兩層循環:[m + n for m in 'ABC' for n in 'XYZ']

for循環其實可以同時使用兩個甚至多個變量,比如dictitems()可以同時迭代key和value

for k, v in d.items(): print(k, '=', v)

2. while循環

與C語言同

3. 退出循環

  • break:退出循環
  • continue:退出當前循環

七、運算

1. 除法

10/3	#除法結果是浮點數
10//3	#除法結果是整數
10%3	#取餘運算,結果是整數
發佈了43 篇原創文章 · 獲贊 32 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章