【筆記】Python 3自學筆記之基礎知識

這些天跟着廖雪峯老師的python教程學習了一些知識,做一下筆記

1. Python簡介

先根據我的理解簡單介紹一下python。

特點:

  • 基於C的高級語言;
  • 功能強大;
  • 面向對象
  • 代碼量小;
  • 運行效率不如C;

應用領域:

  • 日常任務,腳本化機械重複的任務;
  • 做網站,比如youtube;
  • 網絡遊戲後臺;

2. Hello World

講一下我的安裝和運行。更多方法可以自行搜索。

  1. 先從python官網下載python 3中適用自己開發環境的安裝包。
  2. 安裝時注意勾選Add Python 3.5 to PATH
    python 3安裝
    可以避免手動配置windows path的步驟。
  3. 這個時候已經可以在windows cmd界面查看python 版本號,以及在集成的idle中進行開發了。
  4. 爲了方便開發,安裝好用的python ide: pycharm
    • 可以在官網申請到教育試用版

python編程一般分交互式環境和文本編輯器式。
在交互式環境中或者文本編輯器中(例如:notepad++)輸入

print('hello world')

第一行pthon代碼就完成了,運行試下。

3. 基本操作

3.1 輸入輸出

print()
輸出變量或字符串' '

格式化字符串
%運算符就是用來格式化字符串的。在字符串內部,%s表示用字符串替換,%d表示用整數替換,有幾個%?佔位符,後面就跟幾個變量或者值,順序要對應好。如果只有一個%?,括號可以省略。

常見的佔位符有:

%d 整數
%f 浮點數
%s 字符串
%x 十六進制整數

input()
注意輸入默認爲字符串

>>> a = input()
1
>>> a
'1'#這裏'1'爲字符串

3.2 條件判斷

if 後面接布爾值True(或者任意非空值) or False, 或者計算結果爲布爾值的表達式2 > 3

if Ture:#or False, 注意':'初學很容易忘
    pass
elif Ture:
    pass
else:
    pass

3.3 循環

for x in ... 循環能把... 中list或tuple中的每個元素迭代出來,這點能夠簡化工作和代碼量。

例如

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

輸出

Michael
Bob
Tracy

常用for x in range(i) 注意range(i, j, k) 生成從 i ~ j-1 的步長爲 k 的整數序列

還有while 循環

4. 數據類型

4.1 基本類型

  • 整數 int
  • 浮點數 float
  • 字符串 str
    • ' '" "表示
    • 轉義字符 \orr' '
  • 布爾值 TrueorFalse
  • 空值 None
  • 變量
  • 常量 習慣用大寫變量名PI = 3.14159275
  • 幾種除法
    • /結果爲浮點數
    • //地板除,取結果的整數部分
    • %求餘

Python支持多種數據類型,在計算機內部,可以把任何數據都看成一個“對象”,而變量就是在程序中用來指向這些數據對象的,對變量賦值就是把數據和變量給關聯起來。

4.2 字符串和編碼

最早只有127個字母被編碼到計算機裏,也就是大小寫英文字母、數字和一些符號,這個編碼表被稱爲ASCII編碼。

Unicode把所有語言都統一到一套編碼裏,這樣就不會再有亂碼問題了。

把Unicode編碼轉化爲“可變長編碼”的UTF-8編碼。

由於Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存爲UTF-8編碼。當Python解釋器讀取源代碼時,爲了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行註釋是爲了告訴Linux/OS X系統,這是一個Python可執行程序,Windows系統會忽略這個註釋;

第二行註釋是爲了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。

4.3 list, tuple, dict and set

list
['asdf', 1234, Ture, [12, 'aaa'], p, []]

  • len()獲取list元素個數
  • l[-1]指列表最後一個元素
  • l.append()添加元素到末尾
  • l.pop(i)刪除i位置元素
  • 直接賦值替換該位置元素

tuple
有序列表元組,初始化後不能修改。(tuple中元素指向永遠不變,內容可能改變)
('asdf', 1234, Ture, [12, 'aaa'], p, [])

# 定義空tuple
>>> t = ()
>>> t
()
# 定義只有元素'1'的tuple
>>> t = (1)
>>> t
1
# 定義只有一個元素的tuple
>>> t = (1,)
>>> t
(1,)

dict
dict全稱dictionary,在其他語言中也稱爲map,使用鍵-值(key-value)存儲,具有極快的查找速度。需要佔用大量的內存,內存浪費多。用空間來換取時間的一種方法。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} # 注意',' ':'的寫法
>>> d['Michael']
95

這種key-value存儲方式,在放進去的時候,必須根據key算出value的存放位置,這樣,取的時候才能根據key直接拿到value。

  1. 通過in判斷key是否存在
  2. 通過dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value

dict的key必須是不可變對象。因爲dict根據key來計算value的存儲位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的算法稱爲哈希算法(Hash)。

set
一組key的集合,但不存儲value。由於key不能重複,所以,在set中,沒有重複的key。set的原理和dict一樣,所以,同樣不可以放入可變對象

set可以看成數學意義上的無序無重複元素的集合。

  1. 通過add(key)方法可以添加元素到set中。
  2. 通過remove(key)方法可以刪除元素。

兩個set可以做數學意義上的交集&、並集|等操作。

不變對象
str是不變對象,而list是可變對象。

對於可變對象,比如list,對list進行操作,list內部的內容是會變化的。

要始終牢記的是,a是變量,而'abc'纔是字符串對象!有些時候,我們經常說,對象a的內容是'abc',但其實是指,a本身是一個變量,它指向的對象的內容纔是'abc'

對於不變對象來說,調用對象自身的任意方法,也不會改變該對象自身的內容。相反,這些方法會創建新的對象並返回,這樣,就保證了不可變對象本身永遠是不可變的。

發佈了22 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章