【Python之旅】第三篇(四):Pythoh模块

说明:

函数可以将代码的实现细节隐藏起来,而模块则可以在一个py文件中放置多个函数,通过模块的导入,即可调用这多个函数,当然也可以将一个函数作为一个py文件,无论是哪一种方式,这个py文件,都可以称为一个模块。更普遍来说,py文件都可以作为一个模块,通过import导入来进行使用。

这里说的模块应该是类似于sys或者os之类的模块,而不是普通的py文件。可以将多个python包放在一个目录中,通过__init__的初始化方法制作一个python包,import导入之后即可以使用。

因此,这里需要提及的应该是下面的内容:

1.模块的制作与调试方法
2.包的制作
3.常用模块的使用方法


1.模块的制作与调试方法

(1)模块的制作

·模块制作如下:

#!/usr/bin/env python

print ‘This module is made by xpleaf.‘

def sayHi():
	print "Hello, I‘m xpleaf"

def Work(work):
	print "Your work is %s" % work

def Salary(money):
	print ‘Your salary is %s‘ % money

·如果直接执行,则只会显示非函数部分:

[email protected]:/mnt/hgfs/Python/day3$ python my_module1.py
This module is made by xpleaf.

(2)模块调试方法

-在交互器中调试

·可以在交互器中导入模块,使用上面的函数功能:

>>> import tab
>>> import my_module1    ===>导入模块不用加.py后缀
This module is made by xpleaf.    ===>非函数部分会直接执行
>>> my_module1.    ===>按tab键会显示该模块下可以执行的方法
my_module1.Salary(            my_module1.__name__
my_module1.Work(              my_module1.__new__(
my_module1.__class__(         my_module1.__package__
my_module1.__delattr__(       my_module1.__reduce__(
my_module1.__dict__           my_module1.__reduce_ex__(
my_module1.__doc__            my_module1.__repr__(
my_module1.__file__           my_module1.__setattr__(
my_module1.__format__(        my_module1.__sizeof__(
my_module1.__getattribute__(  my_module1.__str__(
my_module1.__hash__(          my_module1.__subclasshook__(
my_module1.__init__(          my_module1.sayHi(
>>> my_module1.sayHi()    ===>执行模块中的函数
Hello, I‘m xpleaf
>>> my_module1.Work(‘CEO‘)
Your work is CEO
>>> my_module1.Work(‘Student‘)
Your work is Student
>>> my_module1.Salary(‘None‘)
Your salary is None

·也可以只导入该模块中的某个函数:

>>> from my_module1 import sayHi
This module is made by xpleaf.
>>> sayHi()
Hello, I‘m xpleaf

-直接在bash中调试

·每次都要进入交互器并且import调试显然有些麻烦;

·可以在模块文件中添加name方法直接在bash中调试;

·上面代码修改如下:

#!/usr/bin/env python

print ‘This module is made by xpleaf.‘

def sayHi():
	print "Hello, I‘m xpleaf"

def Work(work):
	print "Your work is %s" % work

def Salary(money):
	print ‘Your salary is %s‘ % money

if __name__ == ‘__main__‘:    #判断被主动执行还被import导入调用
	sayHi()               #主动执行时,将会执行该name语句块后面的内容
	Work(‘Student‘)       #import导入调用时,将不会执行该name语句块后面的内容
	Salary(‘None‘)

·执行结果如下:

a.直接在bash中执行
[email protected]:/mnt/hgfs/Python/day3$ python my_module1.py
This module is made by xpleaf.
Hello, I‘m xpleaf
Your work is Student
Your salary is None

·在交互器中执行与第一种调试方法是一样的;



2.包的制作

·将多个模块文件打包在一起时,考虑使用包;

·my_packets目录下有下面几个模块:

[email protected]:/mnt/hgfs/Python/day3$ ls my_packets/
caculate.py  my_module1.py

·my_dule1.py内容与上面一样,caculate.py代码如下:

#!/usr/bin/env python

print ‘This modules can help you to do some caculates.‘

def add(num1,num2):
	print ‘%s + %s is:%s‘ % (num1,num2,num1+num2)

def cut(num1,num2):
	print ‘%s - %s is:%s‘ % (num1,num2,num1-num2)

def multiply(num1,num2):
	print ‘%s * %s is:%s‘ % (num1,num2,num1*num2)

def div(num1,num2):
	print ‘%s / %s is:%s‘ % (num1,num2,num1/num2)

·要想通过import方法就能导入my_packets包,需要在该目录下创建__init__.py文件,并添加相应内容,演示如下:

[email protected]:/mnt/hgfs/Python/day3$ touch my_packets/__init__.py
[email protected]:/mnt/hgfs/Python/day3$ vim my_packets/__init__.py
__all__ = [‘my_module1‘,‘caculate‘]    #使用该包下的模块,需要在这里添加,否则无法使用

·在交互器中演示如下:

>>> import tab
>>> from my_packets import *    ===>导入my_packets包下的所有模块
This module is made by xpleaf.
This modules can help you to do some caculates.
>>> caculate.    ===>便可以使用caculate模块下的相应函数功能
caculate.__class__(         caculate.__reduce__(
caculate.__delattr__(       caculate.__reduce_ex__(
caculate.__dict__           caculate.__repr__(
caculate.__doc__            caculate.__setattr__(
caculate.__file__           caculate.__sizeof__(
caculate.__format__(        caculate.__str__(
caculate.__getattribute__(  caculate.__subclasshook__(
caculate.__hash__(          caculate.add(
caculate.__init__(          caculate.cut(
caculate.__name__           caculate.div(
caculate.__new__(           caculate.multiply(
caculate.__package__        
>>> my_module1.    ===>便可以使用my_module1模块下的相应功能
my_module1.Salary(            my_module1.__name__
my_module1.Work(              my_module1.__new__(
my_module1.__class__(         my_module1.__package__
my_module1.__delattr__(       my_module1.__reduce__(
my_module1.__dict__           my_module1.__reduce_ex__(
my_module1.__doc__            my_module1.__repr__(
my_module1.__file__           my_module1.__setattr__(
my_module1.__format__(        my_module1.__sizeof__(
my_module1.__getattribute__(  my_module1.__str__(
my_module1.__hash__(          my_module1.__subclasshook__(
my_module1.__init__(          my_module1.sayHi(


3.常用模块的使用方法

·可以参考个人相关文档,这里先不作提及。

时间: 2024-12-25 03:58:21

【Python之旅】第三篇(四):Pythoh模块的相关文章

JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接,可以看到什么样的效果 package com.lgl.socket; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; publ

Objective-C学习之旅 第三篇

Objective-C学习之旅 第三篇 Objective-C 类声明,定义,实例,初始化 类声明 //类声明的编译处理指令以@interface开始,以@end结尾,在这之间代码便是类变量的定义和方法的声明. //类的声明和定义比其他语言复杂,这会让刚开始学习Objective-C的人非常困惑 //准确的说,其他语言如Java只需定义类而不用声明,而Objective-C需要先声明再定义. @interface 类名 : 父类名 { 声明成员变量 ... } 声明方法 @end 实例: @in

Python开发【第六篇】:模块

模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块. 如:os 是系统相关的模块:file是文件操作相关的模块 模块分为三种: 自定义模块 第三方模块 内置模块 自定义模块 1.定义模块 情景一: 情景二: 情景三: 2.导入模块 Python之所以应用越来越广泛,

python学习【第五篇】 常用模块

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,使用代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py

【Python之旅】第二篇(四):字典

说明: 显然Python中字典的学习过程与列表是一样的,主要是围绕下面的函数来进行重点学习: >>> xpleaf. xpleaf.clear( xpleaf.copy( xpleaf.get( xpleaf.has_key( xpleaf.items( xpleaf.keys( xpleaf.pop( xpleaf.popitem( xpleaf.setdefault( xpleaf.update( 1.基本操作 --创建一个字典 >>> xpleaf = { ...

【Python之旅】第二篇(三):基于列表处理的购物清单程序

1.基本需求 编写一个购物小程序,要求实现如下功能: (1)让用户输入工资: (2)输出购物菜单及产品价格: (3)计算用户是否可支付: (4)输出用户剩余的钱,问用户是否继续购物,如果选择继续,则继续进行,否则退出程序: (5)若钱不够,输出用户还需要工作多久才能买得起(这里暂不实现此功能). 2.实现基本思路 基本思路可如下所示: 在编写程序的时候即以该思路为主线,具体细节下面再提及. 3.实现细节 基于友好用户界面的原则,实现的细节可总结如下: (1)用户输入工资时,如果输入的是非数字或没

Python学习之旅(三十四)

Python基础知识(33):网络编程(Ⅱ) UDP编程 相对TCP,UDP则是面向无连接的协议 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包 虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议 服务端 1.创建Socket #创建基于UDP的socket连接 import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #绑定

python之路第三篇

python文件目录操作 python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来删除一个文件:os.remove() 删除多个目录:os.removedirs(r“c:\python”) 检验给出的路径是否是一个文件:os.path.isfile() 检验给出的路径是否是一个目录:os.path.isdir()

Python之旅.第三章.函数3.28

一.命名关键字参数: 什么是命名关键字参数?格式:在*后面参数都是命名关键字参数特点:1 必须被传值1 约束函数的调用者必须按照key=value的形式传值2 约束函数的调用者必须用我们指定的key名 def foo(x,y,*,z): #创建foo函数,z为命名关键字参数 print(x,y,z)#foo(1,2,aaa=3) #报错,z为命名关键字参数,只能用用关键字z=值foo(1,2,z=3) ------------------------------def auth(*args,na

Python之旅.第三章.函数3.30

一.迭代器 1.什么是迭代?:迭代是一个重复的过程,并且每次重复都是基于上一次的结果而来 2.要想了解迭代器到底是什么?必须先了解一个概念,即什么是可迭代的对象?可迭代的对象:在python中,但凡内置有__iter__方法的对象,都是可迭代的对象num=1 以下都是可迭代的对象str1='hello'list1=[1,2,3]tup1=(1,2,3)dic={'x':1}s1={'a','b','c'}f=open('a.txt','w',encoding='utf-8') 3.迭代器:迭代取