學PYTHON的思路與筆記
從11月中開始猴子老師的教學,到現在python入門已經有近20天了,其中有各種過程,比如看菜鳥教程,到圖書館補大數據的一些知識與概念,以及看菜鳥教程很多地方的不通順然後求教於各個視頻,終於能夠搞清楚問題所在。
其中呢,猴子老師推薦的一本叫父與子的編程之旅很不錯,然後我在網上還發現了類似的系統的視頻教程,給大家介紹一下叫做「零基礎入門學習Python」,是網易雲課堂的免費課程,這個跟菜鳥教程合起來學的特別容易,還有各類實踐,少走不少彎路。
以下是我個人學習過程里的總結與筆記來促進我思考與記憶的,提供給大家參考,謝謝大家:
基礎操作入門
alt+n 回到上一條語句(複製粘貼差不多吧跟)
alt+p 去掉
轉義符 這是轉n 另外含義是轉行
IDLE是一個Python Shell,shell的意思就是「外殼」,基本上來說,就是一個通過鍵入文本與程序
Tab 縮進快捷鍵 前面的語句以:結尾 後縮進的語句就是代碼塊
(eol while scanning string literal 字元串出錯 『』缺一個)
bif 內置函數
查內置函數代碼 dir(__builtins__)
查內置函數功能 help(內置函數代碼如input)
input()接收用戶輸入
字元串是str()
python中的變數只是一個名,它只是個貼在具體價值上的牌子 如果參數傳入的數據類型是可變的類型,當函數內部修改該數據時,原始的數據也改變了。
條件判斷
if elif來處理多個條件 最後是else
continue同於跳出當前循環 break用於退出整個循環
type()查類型 help()能看所有的類型
布爾類型的只有兩個值 0 1 或者True False
if not (money < 100)相當於if money >= 100
三元操作符 某變數=x if x < y else y 斷言 accert
for 目標 in 表達式 循環 for i in 容器: for i in range(0, 10, 2) 其中一般沒有第三個,而第三個表示步進, 即取值的距離 for循環,是對每一個容器里的元素進行循環處理,i表示的是容器中的每一個數據 當容器里所有的數據被訪問過循環才會停下
列表
列表的基本特徵是[] 賦予一個變數列表可以為空列表
向列表添加元素 append() extend() insert()
從列表刪除元素 remove() del pop() del+ 空格 列表與序列號 修改就是列表序列號=
dir()函數 不帶參數時,返回當前範圍內的變數、方法和定義的類型列表;帶參數時,返回參數的屬性、方法列表
list1 = list2[;]與list1=list2不同 注意,提取列表元素只能用{}而不是()
list.reverse() 列表反過來 list.sort()從小到大list.sort(reverse=true)從大到小
元組
元組的基本特徵是,而不是小括弧
元組 不能更改 只能這樣temp = temp[;2] + [你要加的元素] + temp[2;] 即完全拆開
刪除元組 del temp
%c % 97 %c %c %c % (97,98,99) 轉譯ASCELL碼 相當於後面是對象,轉譯到前面的地方
函數
定義函數
def 函數名稱(參數1,參數2):
縮進 函數體
return 輸出
def asdas()自己定義函數 變數可以有多個即(a,b,c)
使用函數先傳入變數值,然後將函數輸出結果f(a,b)賦值給一個變數來保存輸出結果
global local變數 相應的處理nonlocal 還有任意別定義函數fas()中有內嵌函數可以fas(a)(b) 大環境與內外函數相同變數會有一個屏蔽處理,即不完全相等 這裡(b)是內嵌函數的變數
全局作用域與局部作用域 函數內部的變數是擁有局部作用域 函數外面是全局作用域 而內嵌函數的外部函數則是相對的全局作用域 內部的變數無法訪問
d=lambda x,y : x*y 最後要輸出就是d(1,2)定義的匿名函數 後面是輸出的值 更精簡 一條直線 省略定義函數的過程
filter(function or none,可迭代的數列什麼的) 篩選出為ture(1)的值
map(a,b),把b作為a的值一個個放到函數的參數里 a是函數
字典
大括弧是字典的基本特徵
dict.fromkeys(a,b),重新定義一個字典,把b賦a,這裡b是整體不能分開一個個對應的賦予 如(1,2,3),而a是鍵,同時可以不要b 然後a對應的顯示為none
而keys()是dict.keys() 表示立面所有的鍵 同樣的對應是values()對應值 還有items 就是象,也就是合起來作為元祖 dict.get(a,b)如果a本就存在並有對應的值,就沒有b 如果a不存在,那麼會自動生成這個a和b,如果沒有b,只輸入a,就出現一個None對應 同樣的函數還有setdefailt 可以用in或者not in來判斷是否在字典中 而清空字典是用的clear() 這也是內置函數 即打點放後面 它會直接清空字典 最後就是指向它的所有變數都是空 字典里的內置函數拷貝.copy()前拷貝,不是指向同一個字典 而是另外一個一樣的字典
字典的for循環寫法 for key,value in dict.items()
字典popitem()方法作用是:隨機返回並刪除字典中的一對鍵和值(項)。為什麼是隨機刪除呢?因為字典是無序的 當然pop()也是刪除,指定鍵
update(),更新字典,即a,b都是字典,用a.update(b)來更新a裡面的值
字典的b位置可以是一個列表[] 字典的增加操作是 字典[004]=[] 修改跟增加一樣 鍵不變
集合
集合也是大括弧,只是沒有映射關係,而且如果其中的值重複會被清理掉,具有唯一性 set set() 它的增減有add() remove() discard() 而可以定義一個不可變集合 frozenset
文件對象
打開一個文件 open(D:\大數據\練習2\fdg.text,) b位置的w是可寫入狀態,如果沒有這個文件會創建出來,如果open()的a位置是個變數,那麼會創建對應值的名字的文件 並賦予給文件對象f 即f=open() 操作完要記得f.close() 因為不關閉就不會把操作寫入文件保存
一般格式為open(file, mode=r)
文件對象方法:f.read() read(size=)size個字元 readline()是調用一行 f.tell()書籤位置 返回當前在文件中的位置,因為你現在調用了文件的一部分
f.seek(offset.from)在文件中移動文件指針,從from(0代表文件起始位置,1代表當前位置,2待變末尾)偏移offset個位元組
修改是f.write(str) 將字元串寫入文件 f.writelines(seq) 在文件寫入字元串序列seq
split(step=None,maxsplit=-1)字元串的內置函數,分割(默認沒設置就以空格來分割),能夠去掉字元串的一部分 (a,b)=f.split() 即左右切的分別保存
模塊
random是一個模塊,或者是函數 使用先得引入 import random 其中的內置函數randint(1,10)是隨機出其中的數
模塊是一個包含所有你定義的函數和變數的文件,其後綴是.py。模塊可以被別的程序引入,以實用該模塊中的函數等功能
OS模塊(操作系統),調用它不需要關心在什麼操作系統下使用什麼模塊,它會幫你選擇正確的模塊調用,即OS模塊的函數能應對各大操作系統的模塊來調用
OS模塊和OS.path模塊不是一個模塊 要用OS.path.
import 模塊 導入模塊 使用模塊就是 模塊.對應函數名稱()
pickle(泡菜)模塊 存放與讀取 這是二進位的方法存取 pickle.dump(a,b)將a倒入b 最後記得要關閉文件 open第一次b位置是wb 寫入 第二次是rb 讀取 這種方法其實就是把一整個龐大的程序變成主程序與數據包 更專業化 齊整
包就是用文件夾的方法把模塊組織在一起,避免重複衝突 導入一個包 import pandas as pd 即重新取名字 再取函數用pd來代替包名就會方便
模塊使用總結: import包名稱 import 包名稱 as 別名 from 包名稱 import 函數(這不是導入整個模塊,而是只導入一個函數)
關於異常
try-except 檢測異常
try:
檢測範圍
except Exception(異常)[as reason]:
出現異常後的處理代碼 這樣就沒有紅色報錯而取而代之 如果加上as reason 後面的引用就可以用reason打出原因 同時except可以有多個 接不同錯誤 也可以except後面什麼都不加,也能轉換 只是沒有原因
finally:
無論如何都會被執行的代碼 這個是可以加在try後面的,和except可以共存
try: except: else:
with open() as f 這樣不用finally去加close 自動回關閉文件
類
class 建立與定義『類』 類首字母大寫區別於函數 類和對象的關係就如同模具和用這個模具製作出的物品之間的關係。 即對象=屬性+方法 屬性即變數 方法即函數 類里的函數一般都是f(self)而一個類在實現的時候必須f=某類 有一個引用對象
self.變數 會返回那個變數給self 它相當於C++的this指針 可能用一張圖紙造了很多一樣的房子,但是主人不同,而self就是指進去的門 不同的類針對不同的變數有不同的生成對象 saelf是一個屬性類型的定義,是認定一個變數的屬性,之後根據這個屬性繼續 所以在定義類的時候,把self默認寫進第一個參數 self.變數
self參數的作用是什麼? 答:綁定方法,據說有了這個參數,Python 再也不會傻傻分不清是哪個對象在調用方法了,你可以認為方法中的 self 其實就是實例對象的唯一標誌。
__init__(self) 在python中定義私有變數只需要在變數名或者函數名前加兩個下劃線__ 出去就訪問不到了 私有變數只是被python改了名字,成了_類名__變數名了,所以無法訪問到
還可以用class讓一個變數繼承一個類的屬性 比如一個列表 class ma(mad) mad是父類: pass 當程序員不想把同一段代碼寫幾次,他們發明了函數解決了這種情況。當程序員已經有了一個類,而又想建立一個非常相近的新類,他們會定義一個新類繼承已有的這個類,這樣子就只需要簡單添加和重寫需要的方法即可
在子類里如果重新定義可以用super.+需要的父類方法既可以調用被重新定義的部分
數據類型總結
字元串『』 數字 容器(表列,元組,集合,字典) 布爾 None
也就是說漢字標點等要歸類進去,比如到字元串里 否則不是數據 字元串 元組 數值是不可變數據
數據結構(高級容器)
collections是python內建的集合模塊 雙向鏈表queue:隊列,棧 排序字典:OrderedDict 計數器Counter
queue 用append加尾部 用popleft即pop最左邊刪除頭部元素
deque模塊是python標準庫collections中的一項,它提供了兩端都可以操作的序列 deque提供了類似list的操作方法
棧呢 就是入與出都是最頂的元素 即最前端
排序字典:OrderedDict 一般字典是key無序的 而排序字典是key有序的
計數器Counter: 它返回一個字典對象 value是對應次數
推薦閱讀:
※國內有哪些 Django 牛人?
※Python從零開始系列連載(12)——Python的基本運算和表達式(下)
※為什麼感覺django裡面class based view很難呢?
※關於python Django與Flask學習的一些疑惑?
※用django建一個簡單的購物網站需要多久?
TAG:Python |