python中使用什么导入模块-python—模块导入和类

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux du 文件大小排序,du命令 实现Linux 某个文件夹下的文件按大小排序

1. df -lh2. du -s /usr/* | sort -rn这是按字节排序3. du -sh /usr/* | sort -rn这是按兆(M)来排序4.选出排在前面的10个du -s /usr/* | sort -rn | head5.选出排在后面的10个du -s /usr/* | sort -rn | taildu -h –-max-depth0 userdu -sh –-max-depth2 | more本文具体介绍…

Nature重磅:软硬分离、图灵完备,清华首次提出“类脑计算完备性”

来源 | 清华大学计算机系校友会北京时间10月14日,清华大学计算机科学与技术系(以下简称“计算机系”)张悠慧团队、精密仪器系(以下简称“精仪系”)施路平团队与合作者在《Nature》杂志发文,首次提出“类脑计…

Linux sublime设置中文,CentOS 8.1下Sublime Text 3设置中文与Python环境

Sublime Text是一个跨平台的源代码编辑器,设计简单,速度快,支持许多编程语言和标记语言,你可以使用数千个可用于安装的插件,在RHEL 8/CentOS 8上的Sublime Text 3上解锁更多功能,本文假设你已在CentOS/RHEL…

java 正则首位8或者9的8位数字_从零开始学Python - 第025课:正则表达式的应用

正则表达式相关知识在编写处理字符串的程时,经常会遇到在一段文本中查找符合某些规则的字符串的需求,正则表达式就是用于描述这些规则的工具,换句话说,我们可以使用正则表达式来定义字符串的匹配模式,即如何检查一个字…

c# 后台 添加datable 数据

public void AddRows(HtmlTable table(表名),DataTable dt(数据源), string i(自增长)){int j int.Parse(i);HtmlTableRow tr0 new HtmlTableRow();HtmlTableCell tc new HtmlTableCell();tc.Attributes…

蝴蝶扇了一下翅膀,混沌就诞生了

科学无国界我们是知识的搬运工认真阅读下面的文章,并思考文末互动提出的问题,严格按照 互动:你的答案 格式在评论区留言,就有机会获得由四川人民出版社提供的优质科普书籍《未来科学简史》一本。我们耳熟能详的“蝴蝶效应”&#…

前端八股文(js篇 )

目录 一.防抖,节流是什么,如何实现? 二.介绍下Set,Map,WeakSet和WeakMap的区别 三.setTimeout,Promise,Async/Await的区别 四.简述同步和异步的区别 五.怎么添加,移除,复制,创建…

linux定时器错误使用,linux下定时器的使用

Linux下定时器的使用主要用到两个函数:setitimer()和getitimer();注意:setitimer()一个进程中只能有一个,下一个会覆盖前一个的定时。Linux系统给每个进程提供了3个定时器,每个定时器在各自不同的域里面计数,当任何一个…

native.loadlibrary获取路径不对_【Python专题(三)】Python模块导入与路径管理

​前言Python项目的路径管理是一个让人头疼的问题。在写python项目的时候,明明 import了文件A,代码运行时却收到 ModuleNotFoundError,仔细一看,是引用路径不对,很是气人。又或者,当项目中出现了重名的pack…

前沿研究:21世纪工程领域的重大挑战 | 中国工程院院刊

本文选自中国工程院院刊《Engineering》2020年第7期作者:C.D. Mote Jr.来源:Engineering in the 21st Century: The Grand Challenges and the Grand Challenges Scholars Program[J].Engineering,2020,6(7):728-732.编者按近期,中国工程院外…

01-python中字符串的常见操作

(1)find 检测str是否包含在myStr中,如果存在则返回开始的索引值,否则返回-1。 In [1]: myStr "hello world tairan and tairanCity."In [2]: str "tairan"In [3]: myStr.find(str) Out[3]: 12In [7]: str …

centos双系统只有linux,Centos添加Windows/Centos双系统启动

1 在/etc/boot/gurb2/grub.cfg中### END /etc/grub.d/00_header ### 后添加:### BEGIN /etc/grub.d/30os_prober ###menuentry Windows 10(loader)(on /dev/sda1){insmod part_msdosinsmod ntfsset roothd0,msdos1chainloader 1}### END /etc/grub.d/30os_prober #…

linux网站目录在哪_果核建站教程【二】环境安装与搭建第一个网站

有问题加群,一起讨论,一起学习群号:664592923昨天大家都能理解,那么今天我们就要进入实战教程咯。这节教程讲在本地搭建环境和安装程序。1本地环境的搭建之前有教程讲如何在Windows开启Linux系统,本来想直接让大家在Li…

北斗定位2.0版来了!普通人手机可用,全免费!

◎ 科技日报记者 张佳星1.0版解决快的问题,2.0版解决又快又准的问题,是1.0基础上的一个巨大升级!10月14日,在北斗卫星导航系统高峰论坛上,中国信息通信研究院(下简称“信通院”)发布了北斗高精度…

做出明智的决策

无处不在的决策 在我们的一生中,会做出无数的决定或决策,有关于个人生活的,也有工作专业相关的,这发生在我们的每一天中。在这些决策中,有一些无关紧要,有一些却会产生长期影响,乃至导致颠覆性的…

如何看打印机的缓存区域_松下打印机好吗 松下打印机卡纸如何解决【详解】...

现在人们早已习惯了用手机记录下生活中的美好事物,因此拥有一台能打印照片的打印机成为这些人的选择,可随着现在人们对于打印机的需求量在不断的增加,市面上的打印机品牌也随之增多了起来。那么松下 打印机怎么样,松下打印机使用过…

Linux 蓝牙读写,实战Linux Bluetooth编程(三) HCI层编程

作者:Sam (甄峰)(HCI协议简介,HCI 在BlueZ中的实现以及HCI编程接口)1. HCI层协议概述:HCI提供一套统一的方法来访问Bluetooth底层。如图所示:从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Modul…

python xml

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口…

碰疼了会躲!这个植入“迷你大脑”的AI机器人,可感知疼痛,还能自我愈合...

来源:雷锋网人类为什么会产生痛觉?没错,是因为大脑中枢神经。和触觉、温度等感觉一样,我们对疼痛非常敏感,当受到外界“轻微”刺激时,体内的神经元产生相应的信号,并传输至大脑中的中枢神经系统…

哈佛大学惊人发现:新冠对人类未来影响巨大!

来源:北美观察家近日,哈佛大学公共卫生学院发了一篇Science:根据论文中的描述,无论是否能研发出疫苗,新冠病毒都可能会陪伴人类到2025年。那么,2025年以后人类能摆脱新冠病毒吗?不,只…