python基礎_2

7.other

Python模塊
認識Python模塊
字節編譯
from-import詳解
認識_name_屬性
自定義模塊
dir()函數

1).認識Python模塊

-什麼是模塊
-如何導入模塊
-sys模塊

什麼是模塊
模塊是函數功能的擴展,模塊是實現一項或多項功能的程序塊。在模塊裏面,可以重用多個函數。

2).字節編譯

-什麼是Python的.pyc文件
-字節編譯與編譯的區別
-.pyc文件的產生
-.pyc文件的使用

什麼是Python的.pyc文件
首先,.pyc文件是指以.pyc爲後綴名的這一類文件。在執行python模塊的時候,有兩種執行方式:一種是先將模塊裏面的內容編譯成二進制語言,然後執行這些二進制語言;另一種是直接執行對應模塊的二進制語言程序。第二種方式省略了編譯這一步,所以執行速度更快。而把模塊編譯成二進制語言程序的這個過程叫做字節編譯,這個過程會產生一個與編譯的模塊對應的.pyc文件。.pyc文件就是經過編譯後的模塊對應的二進制文件。

字節編譯與編譯的區別
把模塊編譯成二進制語言程序的這個過程就叫做字節編譯。python是一種解釋性語言,而不是一種編譯型語言,那麼爲什麼現在又說python中有字節編譯呢?很多人認爲,python中出現字節編譯,那麼python就應該是一種編譯型語言。其實這種觀點是錯誤的。python雖然出現了編譯這個過程,但是python編譯的過程是在python的解釋器中發生的。換句話說,其實每種程序要想讓計算機執行,都只能變成二進制形式,編譯型語言是指在軟件中就有一個獨立的編譯模塊去將程序編譯,而python中字節編譯這部分功能是由解釋器去完成的,所以python仍然是解釋型語言。

.pyc文件的產生
字節編譯這個過程會產生一個與編譯的模塊對應的.pyc文件,.pyc文件就是經過編譯後的模塊對應的二進制文件。

.pyc文件的使用
在python中,.pyc文件最大的作用就是加快了模塊的運行速度。當調用該模塊時,.pyc文件自動被調用。

3).from-import詳解
學會使用from—import
python中導入一個模塊的方法我們可以使用import,但是import只是導入了這個模塊,而並沒有導入該模塊的某個屬性或方法。而我們不僅要導入一個模塊,還要有導入模塊中的對應的一個功能,我們可以使用from—import語句。

學會使用from—import*
在python中使用from—import語句只能一次導入一個模塊的一個功能,我們如果要想一次性把這個模塊的所有功能,也就是所有屬性與方法都導入的話,我們可以使用from—import*語句。

4).認識name屬性

-認識主模塊
-認識name屬性
-name屬性的使用

認識主模塊
python函數中,如果一個函數調用其他函數完成一項功能,我們稱這個函數爲主函數,如果一個函數沒有調用其他函數,這種函數稱爲非主函數。模塊也是如此,如果一個模塊是被直接使用的,而沒有被別人調用,我們稱這個模塊爲主模塊,如果一個模塊被其他模塊調用,這種模塊稱爲非主模塊。
認識_name_屬性
如何區分主模塊和非主模塊之分。如果一個模塊的name屬性的值是main,那麼就說明這個模塊是主模塊,反之亦然。其實我們可以把name看作一個變量,這個變量是系統給出的,這個變量的功能是判斷一個模塊是否是主模塊。

5).自定義模塊

-什麼是自定義模塊
-自定義模塊使用詳解

6).dir()函數

-認識dir()函數
-dir()函數擴展詳解

認識dir()函數
python中有很多模塊,有時候我們會忘記一個模塊有哪些功能。這時,我們可以用dir()函數來查看指定模塊的功能列表

dir()函數擴展詳解
python中dir()函數不僅僅能查看模塊的功能列表,還能查看任意指定對象的功能列表

in:

import pandas as pd #as pd 是給pandas這個模塊引入了一個別名pd
df = pd.DataFrame({'key':['b','b','a','c','a','a','b'],'data1': range(7)})
df.head(5)

out:

in:

from pandas import DataFrame
df1 = DataFrame({'key':['b','b','a','c','a','a','b'],'data1': range(7)})
df1.head(2)

out:

in:

from pandas import *
df2 = DataFrame({'key':['b','b','a','c','a','a','b'],'data1': range(7)})
df2.head(2)

out:
這裏寫圖片描述

in:

#-*- coding:UTF-8 -*-
#首先我們分別看一下這個模塊在不同場景中的__name__的值
print (__name__)

out:

__main__

in:

#其次我們看一下__name__屬性的常用情況

if __name__=="__main__":
    print("It's main")
else:
    print("It's not main")

out:

It's main

in:

def myadd(i,j):
    k = i + j
    return k
#將這段語句保持在new_add.py文件中,並保存在"C:\Users\ben\Anaconda\Lib"這個目錄下即成爲模塊

out:
in:

import myadd as md
s = md.myadd(1,3)
print(s)

out:

in:

import pandas
dir(pandas.Expr.names.__hash__.__doc__)

out:

in:

help(pandas.DataFrame)

out:

in:

d=['a','d']
help(d)

out:


Python 異常處理與文件操作

處理python異常
異常的引發
Finally的使用
文件的操作

1.處理python異常
什麼是python的異常
比如沒有正確縮進會出現異常錯誤,這種狀態就是異常的以一種情形。當發生python異常時,
會把異常的類型和異常的位置打印出來,便於程序員處理。
Print(“錯誤的大寫”)
python異常的處理
假如我們在編程時,知道某些語句可能會導致某種錯誤的發生,而現在我們想在編程的時候就把發生的這種錯誤解決掉,這個時候,我們可以用except語句對可能出錯的部分進行處理。

2.異常的引發
在python中,要想實現讓某種情況下引發某種自定義的異常,可以使用raise語句實現。
3.Finally的使用
什麼是try…finally語句
當一段程序,出現異常的時候,就不會繼續執行下去了。但有時,我們希望不管某段程序發沒發生異常,逗得執行某些操作的時候我們就可以使用try…finally語句實現。
4.文件的操作
創建文件、打開文件、關閉文件、將指定內容寫入文件、讀取文件等

in:

#python異常的處理
#使用try_except語句,假如try出現了某種異常,則執行except下面的語句
#i =77
try:
    print(i)
except:   #這裏一定要指明異常類型
    i = 9
    i += 10
    print("剛纔i沒定義,處理了異常之後,i的值爲:"+str(i))

out:

剛纔i沒定義,處理了異常之後,i的值爲:19

in:

#處理多種異常,下面的NameError和NameError都是系統裏面定義好了的異常
i =  10
j = 'a'
try:
    print (i + j)
except NameError:
    i = j =0
    print("剛剛i或j沒有進行初始化數據,現在我們將其都初始化爲0,結果是:")
    print(i + j)
except NameError:
    print("剛剛i與j類型對應不上,我們轉換一下類型即可處理異常,處理後結果是:"+str(i)+str(j))

out:

剛剛ij類型對應不上,我們轉換一下類型即可處理異常,處理後結果是:10a

in:

#2自定義一個異常並用raise引發
class RhhError(Exception):    #按照命名規範,以Error結尾,並且自定義異常需要繼承Exception類
    def _init_(self):
        Exception._init_(self)
try:
    i = 8
    if i > 7:
        raise RhhError()
except RhhError:
    print("RhhError:錯了就是錯了") 

out:

RhhError:錯了就是錯了

in:

#try...finally的使用
#假如要實現不管中間是否發生異常,都要輸出一串字符串
try:
    print(i)
finally:
    print("不管上面是否發生異常,我都必須要輸出")

#第二個例子:要實現一串字符串輸出10次,加入異常發生,需要判斷前面已經輸出了多少次
try:
    for i in range(10):
        print("我也輸出10次,現在正在輸出中")
finally:
    print("此時i的值時:"+str(i)+"--並未完成全部輸出")

out:

8
不管上面是否發生異常,我都必須要輸出
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
我也輸出10次,現在正在輸出中
此時i的值時:9--並未完成全部輸出

in:

#創建某個文件
import os
os.mkdir(r"E:\temp\newdir")

out:
//寫入和關閉文件——寫入文件分四步:先做好內容,然後建立文件,再寫入,最後關閉

in:

content = '''我是文件的內容
文件內容
待會而要把我寫到文件裏進去'''

out:

in:

#創建txt文件,用open的w模式(可寫),文件不存在就會自動創建
file_robin = open(r"E:\temp\newdir\py1.txt",'w')
#寫入內容
file_robin.write(content)
file_robin.close()

#讀取文件,關鍵點:先打開文件,再進入while循環依次讀取每行
fr = open(r"E:\temp\newdir\py1.txt",'r')
while True:
    line = fr.readline()
    if len(line) == 0:
        break
    print(line)
    fr.close

#用for方式讀取文件
fr2 = open(r"E:\temp\newdir\py1.txt",'r')
for u in fr2:
    print(u)
fr2.close

out:

我是文件的內容

文件內容

待會而要把我寫到文件裏進去
我是文件的內容

文件內容

待會而要把我寫到文件裏進去

<function TextIOWrapper.close>

numpy小例子

in:

import numpy as np
#定義變量
x = np.array([1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0,11.0])
y = np.array([2.10,3.90,8.20,1.96,6.30,4.40,7.70,4.30,5.40,8.70,2.50])

#進行轉置,因爲計量經濟學中的向量均爲列向量
X = np.vstack([np.ones(len(x)),x]).T    #帶截距的迴歸,這裏使用了捆綁,把len(x)個值爲1的數據捆綁到x數組裏(壓入棧),使得x變成二維數組
Y = y.T

#按步驟計算迴歸係數beta
XX = np.dot(X.T,X)    #點乘取逆
XX_inv = np.linalg.inv(XX)    #取逆
XY = np.dot(X.T,Y)
beta = np.dot(XX_inv,XY)
beta

out:

array([ 4.012     ,  0.17163636])

截圖

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

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