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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章