iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python—模块导入和类
  • 566
分享到

python—模块导入和类

模块python 2023-01-31 06:01:09 566人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

1.查询模块:按目录依次查找需要导入的模块,模块目录一般在:/usr/lib64/python2.7In [2]: sys.path Out[2]: ['', '/usr/bin', '/usr/lib64/python2.7/site-p

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("\n")
    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("\n")
    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


--结束END--

本文标题: python—模块导入和类

本文链接: https://www.lsjlt.com/news/189416.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python—模块导入和类
    1.查询模块:按目录依次查找需要导入的模块,模块目录一般在:/usr/lib64/python2.7In [2]: sys.path Out[2]: ['', '/usr/bin', '/usr/lib64/python2.7/site-p...
    99+
    2023-01-31
    模块 python
  • python模块导入
    [seemmo@RegionServer1 duwen]$ pythonPython 2.6.6 (r266:84292, Nov 22 2013, 12:16:22) [GCC 4.4.7 20120313 (Red Hat 4.4.7-...
    99+
    2023-01-31
    模块 python
  • Python 之模块导入
       Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:import module from module.xx.xx import xx fro...
    99+
    2023-01-31
    模块 Python
  • Python怎么导入模块
    这篇文章主要讲解了“Python怎么导入模块”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么导入模块”吧!常规导入常规导入应该是最常使用的导入方式,大概是这样的:import&...
    99+
    2023-06-16
  • python导入模块--import--1
        python前面写的程序,后面就可以将它当成一个模块导入,取其精华舍弃不用的随意使用,最理想的情况是任何一个功能,只要写一次,以后所有人都可以任意调用,代码重用性高的可怕,而且python还可以根据需求将C,C+...
    99+
    2023-01-30
    模块 python import
  • python导入模块--import--2
    调用之前写的彩色打印,写个简单的脚本testimport.py实验下在跟之前test_import_color_print.py同级目录下创建testimport.py文件,不然导模块会有问题代码如下#!/usr/bin/python #&...
    99+
    2023-01-30
    模块 python import
  • python模块导入细节
    官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: 用于执行的可执行程序文件 不用与执行,仅用于被其它pyt...
    99+
    2023-01-30
    模块 细节 python
  • python如何导入numpy模块
    要导入numpy模块,可以使用以下语句:```pythonimport numpy```或者使用以下语句并为模块指定一个别名:```...
    99+
    2023-09-08
    python numpy
  • python导入模块的步骤
    这篇文章主要介绍“python导入模块的步骤”,在日常操作中,相信很多人在python导入模块的步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python导入模块的步骤”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-20
  • python怎么导入pil模块
    在Python中,可以使用`import`语句导入PIL模块。PIL(Python Imaging Library)是一个用于打开、...
    99+
    2023-08-15
    python pil
  • python如何导入pygame模块
    这篇文章将为大家详细讲解有关python如何导入pygame模块,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pytho...
    99+
    2023-06-14
  • python导入自定义模块
    >>> import sys >>> print sys.path ['', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/...
    99+
    2023-01-31
    自定义 模块 python
  • Python导入模块的方法
    Python导入模块的方法有两种:import module 和 from module import a,区别是前者所有导入的东西使用时需加上模块名的限定(module.a),而后者不需要。 导入一个模块,Python 解析器对模块位置...
    99+
    2023-01-30
    模块 方法 Python
  • python如何导入sklearn模块
    要导入sklearn模块,可以使用以下代码: from sklearn import 模块名 或者可以导入具体的子模块或函数: f...
    99+
    2024-02-29
    python sklearn
  • python中模块导入模式详解
    目录模块导入1.1 import导入模块1.2 from 模块名 import 导入模板的方法1.3 as 关键字OS模块操作文件OS模块的作用模块的制作、发布、安装3.1 模块制作...
    99+
    2024-04-02
  • 模块的导入
    一.模块导入的过程 (1).先从sys.modules里查看模块是否已经被导入 (2).如果没有被导入,就依据sys.path路径寻找模块 (3).找到了模块就导入 (4).创建这个模块的命名空间 (5).执行文件,把文件中的名字都放到...
    99+
    2023-01-30
    模块
  • JavaScript ES6模块怎么导入和导出
    本篇内容介绍了“JavaScript ES6模块怎么导入和导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言:ES6模块化导入...
    99+
    2023-07-02
  • python如何重新导入模块
    在Python中重新导入模块可以使用importlib模块的reload函数。例如: import importlib import...
    99+
    2024-04-03
    Python
  • python中如何导入os模块
    python中导入os模块的方法:1、在win操作系统中找到python程序目录;2、打开idle工具;3、在idle中新建一个shell脚本;4、输入“import os”指令导入os模块即可具体操作方法:在win系统的开始菜单中找到py...
    99+
    2024-04-02
  • python基础之模块的导入
    import导入模块 import time #导入的时模块中的所有内容 print(time.ctime()) #调用模块中的函数 # import 到首次导入模块的时候...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作