Python 学习笔记12 函数模块
函数的优点之一,使用它们可将代码块与主程序分离。通过给函数指定描述性的名称。可以让主程序非常好理解。但是如果将过多的函数和主程序放置在一起,会让文件显得非常凌乱。太多的代码混杂在一起,不方便管理。我们可以将相关的、类似的、一个对象的先关函数编写在一个py文件里。主程序根据需要通过导入这些文件,由选择的调用一些函数。这样既方便管理,也使主程序更加简洁明了。
通过将程序存储在独立的文件中,我们可以隐藏程序代码的相关细节,将注意力放在主程序的逻辑实现上。而且我们也可以在许多程序中重用这些函数。独立的文件,也方便我们以其他人员分享这些文件,而不是主程序。我们还可以使用其他程序员编写的模块简历函数库。
Python提供了许多种方式来导入模块。
首先我们要先创建模块。模块的扩展名是.py,其实就是一个python文件。我们在文件中建立各种函数,为其他程序调用做准备。比如我们建立一个叫greet的模块,一个打招呼的模块:
#-*- coding:utf-8 -*-
'''
Define a module to greet others with parmater:
''' def say_hello(name):
str_message = "hello, " + str(name) + "!"
return str_message def say_bye(name):
str_message = "Bye, " + str(name) + "!"
return str_message
我们把它存为greet.py文件,以此同时我们在同一文件目录下新加一个主程序文件,就可以导入和使用模块了。方式有多种,我们来一一介绍下:
1. 导入整个模块
#-*- coding:utf-8 -*-
import greet s_message = greet.say_hello('Ralf')
print(s_message) '''
输出:hello, Ralf!
'''
我们使用import + 模块名 直接导入整个模块。python会打开整个模块,并将整个函数代码复制到主程序中。我们并不会看到这些代码。但是实际上这些代码会在后台编译时运行。而我们在调用函数时,需要使用 【模块名称】.【函数名称】的形式来使用函数体。
我们也可以使用*来一次性导入模块中的所有函数:
#-*- coding:utf-8 -*-
from greet import * s_message = say_hello('Ralf')
print(s_message) s_message = say_bye('Ralf')
print(s_message) '''
输出:
hello, Ralf!
Bye, Ralf!
'''
使用这种方式,不需要指定模块名称,直接调用相关函数即可。
但是一次性导入整个模块,会让编译后的程序显得臃肿不堪,我们也可以根据需要,只导入模块中的部分函数给我们使用:
2. 导入部分函数:
#-*- coding:utf-8 -*-
from greet import say_hello s_message = say_hello('Ralf')
print(s_message) '''
输出:hello, Ralf!
'''
我们可以看到我们只导入了模块 greet中的say_hello()的函数,并且函数可以正确的运行。需要注意的是因为我们是显示的导入了函数,则不需要在函数名称前面再加模块的名称,直接调用函数即可。
我们也可以导入多个函数:
#-*- coding:utf-8 -*-
from greet import say_hello, say_bye s_message = say_hello('Ralf')
print(s_message) s_message = say_bye('Ralf')
print(s_message) '''
输出:
hello, Ralf!
Bye, Ralf!
'''
我们在导入模块和调用函数的时候,有时候会遇到模块名称或者函数名称和代码中的变量,函数名称相冲突,或者函数、模块名称过于复杂。我们可以将模块、函数名称用as指定别名,来区别。
1. 模块别名:
#-*- coding:utf-8 -*-
import greet as gt s_message = gt.say_hello('Ralf')
print(s_message) s_message = gt.say_bye('Ralf')
print(s_message) '''
输出:
hello, Ralf!
Bye, Ralf!
'''
2. 函数别名
#-*- coding:utf-8 -*-
from greet import say_bye as bye, say_hello as hello s_message = hello('Ralf')
print(s_message) s_message = bye('Ralf')
print(s_message) '''
输出:
hello, Ralf!
Bye, Ralf!
'''
Python 学习笔记12 函数模块的更多相关文章
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
近期在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么可以显示后最重要的就是显示什么的问题了. 最easy想到的就是显示时间啊,CPU利用率啊.IP地址之类的.那么我认为呢,假设可以显示当 ...
- Python学习笔记之函数
这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...
- Python 学习笔记(6)--常用模块(2)
一.下载安装 下载安装有两种方式: yum\pip\apt-get 或者源码 下载源码 解压源码 进入目录 编译源码 python setup.py build 安装源码 python setup.p ...
- python学习笔记之常用模块(第五天)
参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...
- Python学习笔记:time模块的使用
在使用python的过程中,很多情况下会使用到日期时间,在Python的自建函数中,包含time模块,用来处理与日期时间相关的功能. 1.time.time() time():不能传参数 用来获取时间 ...
- python学习笔记13(模块、包)
在Python中有一个概念叫做模块(module),比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一下Python中的模块. 模块文件以.py后缀结 ...
- Python学习笔记十_模块、第三方模块安装、模块导入
一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,packa ...
- Python学习笔记:bisect模块实现二分搜索
在Python中可以利用bisect模块来实现二分搜索,该模块包含函数只有几个: import bisect L = [1,3,4,5,5,5,8,10] x = 5 bisect.bisect_le ...
- python学习笔记(六):常用模块
一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...
随机推荐
- Java负整数的左移、右移、无符号右移
转自 Java负整数的左移.右移.无符号右移 Java负整数的左移.右移.无符号右移.正数的位移没有涉及到符号,而且正数的原码.反码.补码都是一样的,所以相对简单,但是对于负整数的位移,往往容易混淆 ...
- Oracle安装client客户端报错Environment variable: "PATH"
安装时出行这个错误 Environment variable: "PATH" 解决方法 1.找到你的安装包里的这个路径下的这两个文件 2.用文本方式打开 将里两个文件面所有的102 ...
- GeneXus笔记本—常用函数(中)
这篇文章是接着上一篇 常用函数(上)来写的 上次写到了Format 这个函数 我们继续接着这个往下来好了(づ ̄ 3 ̄)づ 还是一样 函数列表在此 https://wiki.genexus.com/c ...
- 转载他人的efk搭建文章后边有链接和地址
EFK教程 - EFK快速入门指南 通过部署elasticsearch(三节点)+filebeat+kibana快速入门EFK,并搭建起可用的demo环境测试效果 目录 ▪ 用途▪ 实验架构▪ E ...
- 微信小程序(13)--页面滚动到某个位置添加类效果
微信小程序页面滚动到某个位置添加类,盒子置顶效果. <!-- vh,是指CSS中相对长度单位,表示相对视口高度(Viewport Height),1vh = % * 视口高度 --> &l ...
- vue,一路走来(12)--父与子之间传参
今天想起一直没有记录父组件与子组件的传参问题,这在项目中一直用到. 父向子组件传参 Index.vue父组件中 <component-a :msgfromfa="(positionno ...
- https原理和如何配置https
参考:https://blog.51cto.com/11883699/2160032 上面说的已经很好地,我这里简单做个总结: 在网上我们做数据交互时候一般用的http协议,但是这种方式会使得交互内容 ...
- centos 6.5 配置 DNS
编辑 vi /etc/resolv.conf 修改 DNS nameserver 202.96.134.133 nameserver 202.96.128.86 nameserver 8.8.8.8 ...
- controllerpom
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> &l ...
- 英语单词profile
profile 来源——linux系统文件名 [root@centos71 ~]# cat /etc/profile # /etc/profile # System wide environment ...