1.查询模块:按目录依次查找需要导入的模块,模块目录一般在:/usr/lib64/python2.7

In [2]: sys.path

Out[2]:

["",

"/usr/bin",

"/usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg",

"/usr/lib64/python27.zip",

"/usr/lib64/python2.7",

"/usr/lib64/python2.7/plat-linux2",

"/usr/lib64/python2.7/lib-tk",

"/usr/lib64/python2.7/lib-old",

"/usr/lib64/python2.7/lib-dynload",

"/usr/lib64/python2.7/site-packages",

"/usr/lib/python2.7/site-packages",

"/usr/lib/python2.7/site-packages/python_memcached-1.58-py2.7.egg",

"/usr/lib/python2.7/site-packages/IPython/extensions",

"/root/.ipython"]

2.自定义模块目录

方法一:sys.path.append(),一般加在目录列表最后

In [3]: sys.path.append("/root/python/")

In [4]: sys.path

Out[4]:

["",

"/usr/bin",

"/usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg",

"/usr/lib64/python27.zip",

"/usr/lib64/python2.7",

"/usr/lib64/python2.7/plat-linux2",

"/usr/lib64/python2.7/lib-tk",

"/usr/lib64/python2.7/lib-old",

"/usr/lib64/python2.7/lib-dynload",

"/usr/lib64/python2.7/site-packages",

"/usr/lib/python2.7/site-packages",

"/usr/lib/python2.7/site-packages/python_memcached-1.58-py2.7.egg",

"/usr/lib/python2.7/site-packages/IPython/extensions",

"/root/.ipython",

"/root/python/"]

方法二:修改环境变量,一般加在目录列表前面vim /root/.bashrc # 加入 export PYTHONPATH=/root/python

source /root/.bashrc # 刷新

例子:统计一个文件,行数、单词数、字符数(和wc命令相同效果)

说明:为了避免使用split切割之后,最后多出一个空字符串,而使用count()#/usr/bin/env python

def count(s):

char = len(s)

words = len(s.split())

lines = s.count(" ")

print lines,words,char

file1 = open("/etc/passwd","r")

s = file1.read()

count(s)

3.脚本形式,导入模块,脚本名字不能是数字,会产生一个编译文件

例子:

#!/usr/bin/env python

import wc

说明:目录下生产编译文件:wc.pyc

4.py和wc.py的__name__内置变量不一样,前者是wc,或者是__main__,修改wc.py,执行自己时,输出自己的结果,被调用时,执行不显示源结果:

wc.py:

#/usr/bin/env python

def count(s):

char = len(s)

words = len(s.split())

lines = s.count(" ")

print lines,words,char

if __name__ == "__main__":

file1 = open("/etc/passwd","r")

s = file1.read()

count(s)

test.py:

#!/usr/bin/env python

import wc

s = open("/root/python/10.py","r").read()

wc.count(s)

5.包的形式,导入模块

四种导入方法:在包目录dir下创建一个__init__.py空文件

方法一:

from dir import wc

wc.count("abc")

方法二:

import dir.wc

dir.wc.count("abc")

方法三:

from dir.wc import count

count("abc")

方法四:别名from dir.wc import count as count

count("abc")

6.面向对象编程:python、java、C++;面向过程编程:C、函数式编程、shell

类的(静态)属性:(人类的五官,理解为变量)

类的(动态)方法:(人类吃穿住行,理解为一个函数)

对象:类的实例化,之后才能有属性和方法

7.类的创建

类的方法中,至少有一个参数self

调用属性时,不带括号

调用方法时,使用括号;方法调用属性时,至少有一个self参数

属性调用其他方法:类名.属性名

例子:class People():

color = "yellow"

def think(self): # 加上self表示是类的方法,不加则表示函数

self.color = "black" # 加上self表示是类的属性

print ("My color is %s "% (self.color))

ren = People() # 类的实例化

print ren.color # 类的属性外部调用

ren.think() # 类的方法外部调用,如加上print,则多一个默认return值none

运行结果:

yellow

My color is black

8.私有属性在定义的类中的内部函数中被调用

例子:class People():

color = "yellow"

__age = 27

def think(self):

self.color = "black"

print self.__age # 内部函数调用类的私有属性,外部函数不能直接调用

print ("My color is %s "% (self.color))

ren = People()

print ren.color

ren.think()

9.外部调用私有属性(格式:实例化名._类名属性名),一般只是测试用

例子:class People():

color = "yellow"

__age = 27

def think(self):

self.color = "black"

print self.__age

print ("My color is %s "% (self.color))

ren = People()

print ren.color

ren.think()

print ren._People__age # 外部调用私有属性

10.类的方法

公有方法:内部和外部都可以调用

私有方法:内部函数调用

动态方法:classmethod()函数处理,没有被调用的类的其他参数不会加载进内存中

静态方法:

方法的定义和函数一样,但是需要把self作为第一个参数,如果还是有其他参数,继续加上;类实例化之后,采用“类名.方法名()”调用

例子1:私有方法调用class People():

color = "yellow"

__age = 27

def __think(self):

self.color = "black"

print self.__age

print ("My color is %s "% (self.color))

def test(self):

self.__think() # 类的私有方法调用

ren = People()

ren.test() # 类的私有方法调用

例子2:动态方法调用

class People():

color = "yellow"

__age = 27

def __think(self):

self.color = "black"

print self.__age

print ("My color is %s "% (self.color))

def test(self):

print ("Testing...")

cm = classmethod(test) # 动态方法定义

ren = People()

ren.cm() # 动态方法调用

例子3:静态方法调用:

类函数不带self参数,该函数使用staticmethod()函数处理(如果不处理,缺少self,,调用时会报错),加载关于这个类的所有东西

class People():

color = "yellow"

__age = 27

def __think(self):

self.color = "black"

print self.__age

print ("My color is %s "% (self.color))

def test(): # 内部函数,不带self

print ("Testing...")

#print People.color # 因为没有self,不能调用该类的属性

cm = staticmethod(test) # 静态方法定义

ren = People()

ren.cm() # 静态方法调用

例子4:加装饰器,只对下面的一个函数起作用,就可以使用类的方法调用了

class People():

color = "yellow"

__age = 27

def __think(self):

self.color = "black"

print self.__age

print ("My color is %s "% (self.color))

@classmethod # 加装饰器,可以通过类来调用

def test(self): # 动态方法,带self

print ("Testing...")

@staticmethod # 加装饰器

def test1(): # 静态方法,不带self

print ("Testing1..")

ren = People()

People.test() # 类的方法调用

People.test1() # 类的方法调用

11.定义内部类

方法一:

class People():

color = "yellow"

__age = 27

class Chinese(object): # 定义内部类

country = "I am chinese"

hzp = People.Chinese() # 外部类.内部类实例化

print hzp.country # 实例化后,调用内部类的属性

方法二:

class People():

color = "yellow"

__age = 27

class Chinese(object):

country = "I am chinese"

hzp = People() # 先外部类实例化

hzp2 = hzp.Chinese() # 再内部类实例化

print hzp2.country

方法三:

class People():

color = "yellow"

__age = 27

class Chinese(object):

country = "I am chinese"

print People.Chinese.country # 类的方法

print People.Chinese().country # 相当于People.Chinese()实例化,最后调用属性

12.构造函数和析构函数

构造函数用于初始化类的内部状态,提供的函数是__init__(),不给出则会提供默认方法

析构函数用于释放占用的资源,提供的函数是__del__(),不给出则会提供默认方法

1)__str__(self):只能使用return,不能使用print,无需调用和打印,会自动调用

例子1:

class People():

color = "yellow"

__age = 27

class Chinese(object):

country = "I am chinese"

def __str__(self): # 定义__str__(self)

return("This is a test") # return返回结果,不能使用print

ren = People()

print ren # 类实例化后,自动调用

运行结果:

This is a test

2)__init__():初始化值,不需调用,实例化后,自动执行,也可以传值

例子2:

class People():

color = "yellow"

__age = 27

class Chinese(object):

country = "I am chinese"

def __str__(self):

return("This is a test")

def __init__(self):

self.color = "black"

ren = People()

print ren.color # 实例化后,变成“black”

print People.color # 类直接调用,color值不变

运行结果:

black

yellow

3)__del__():在脚本最后执行,释放资源;如果没有析构函数释放资源,也没关系,python通过gc模块,实现垃圾回收机制

例子3:

class People():

def __init__(self): # 构造函数,打开文件

print("Initing...")

self.fd = open("/etc/hosts","r"):

def __del__(self): # 析构函数,关掉文件

print("End")

self.fd.close()

ren = People()

ren

运行结果:

Initing...

End

python中使用什么导入模块-python—模块导入和类相关推荐

  1. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  2. python中使用sys模板和logging模块获取行号和函数名的方法

    From: http://www.jb51.net/article/49026.htm 这篇文章主要介绍了python中使用sys模板和logging模块获取行号和函数名的方法,需要的朋友可以参考下 ...

  3. python中一共有多少个关键字-Python中所有的关键字

    在python中若想查询python中有哪些关键字可以先导入keyword模块 import keyword #导入关键字模块 print(keyword.kwlist) #查询所有关键字 查询结果: ...

  4. python中一共有多少个关键字-Python中关键字有多少个?

    Python中关键词有多少个?Python中关键词目前有31个,可以利用Python的内置的keyword模块进行输出查看. keyword模块Help on module keyword: NAME ...

  5. python中一共有多少个关键字-Python中有几个关键字

    Python中关键词有多少个?Python中关键词目前有31个,可以利用Python的内置的keyword模块进行输出查看. keyword模块 Help on module keyword: NAM ...

  6. python中with是什么意思,Python中With的用法

    在看Dive Into Python中有关描述文件读写那章节的时候,看到了有关with的用法,查阅下相关资料,记录下来,以备后用. 官方的reference上有关with statement是这样说的 ...

  7. linux 移除python_第16 p,PYthon中的用户交互,Python GUI编程

    大家好,我是杨数Tos,这是<从零基础到大神>系列课程的第16篇文章,第二阶段的课程:Python基础知识:PYthon中的用户交互.Python GUI编程实现方式介绍. 学习本课程,建 ...

  8. float在python_如何在python中读取.float文件? - python

    Improve this question 我正在处理大脑MRI数据,它是.float数据. 您知道如何在python中使用它吗? 与 with open('[43x25520].float') as ...

  9. 如何在Python中获取图片分辨率?——Python实现获取图片分辨率的代码及详解。

    如何在Python中获取图片分辨率?--Python实现获取图片分辨率的代码及详解. 在进行图片处理或者图片分析的时候,获取图片的分辨率信息是必不可少的.Python提供了许多库可以方便地获取图片的分 ...

  10. python 定义函数方法,python中函数如何定义?python函数的调用方法介绍

    本篇文章给大家带来的内容是关于python中函数如何定义?python函数的调用方法介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 函数的概念,函数是将具有独立功能的代码块 ...

最新文章

  1. 寄存器和存储器的区别_寄存器、累加器、暂存器都是什么?它们有什么区别?...
  2. Hibernate(九)HQL查询
  3. 怎样调整XenServer下面Linux虚拟机的磁盘大小
  4. 【Prometheus + Grafana】 使用 topk 在 grafana 绘制 前 n 个时间序列
  5. Entity Framework 实体框架的形成之旅--为基础类库接口增加单元测试,对基类接口进行正确性校验(10)...
  6. c语言画谢宾斯基三角形
  7. Win7旗舰版系统0x0000007f蓝屏怎么办
  8. 揭秘ASP.NET 2.0的Eval方法
  9. 谈谈浮动和清除浮动?
  10. POJ 2149 ZOJ 2267UVA 1337UVALive 3192 Inherit the Spheres
  11. STM32 CANFD波特率计算器
  12. 类文件解析及引申的一系列仇怨
  13. 小心微信被封号,这码千万不要扫!
  14. SLAM【十一】建图
  15. 学区摇号软件设计_重学 Java 设计模式:实战观察者模式「模拟类似小客车指标摇号过程,监听消息通知用户中签场景」...
  16. LBS-----基站轨迹定位算法
  17. android里面字体的设置,Android中字体设置Font
  18. int bool str (索引,切片) for 循环
  19. 传说中的b站mac客户端(支持M1芯片、适配Big Sur)-bilibili mac客户端
  20. 业务需求——Excel转 Json 以及相关优化

热门文章

  1. 程序员面试金典 - 面试题 01.07. 旋转矩阵(一次遍历+位运算)
  2. LeetCode 96. 不同的二叉搜索树(DP)
  3. css样式子绝父相,子绝父相_HTML+CSS前端基础知识教程_腾讯视频
  4. gradle 上传jar包_Gradle学习记录014 关于依赖的声明
  5. Codeforces Round #693 (Div. 3)A~G解题报告
  6. linux futex 进程同步,Linux的新式线程同步原语——Futex
  7. vue 接口节流_vue输入节流,避免实时请求接口的实例代码
  8. libsvm回归参数寻优cgp_【lightgbm/xgboost/nn代码整理二】xgboost做二分类,多分类以及回归任务...
  9. 论文浅尝 | TANDA: Transfer and Adapt Pre-Trained Transformer Models
  10. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构