Python基础学习笔记(十一)函数、模块与包
参考资料:
1. 《Python基础教程》
2. http://www.runoob.com/python/python-functions.html
3. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000
4. http://www.runoob.com/python/python-modules.html
6. http://blog.csdn.net/leexide/article/details/39908279
7. 包机制
▶ 函数
Python的参数都是引用传递。
函数语法如下:
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
实例:
def printme( str ):
"打印传入的字符串到标准显示设备上"
print str
return
Python支持缺省参数和不定长参数,缺省参数的定义与使用同其它编程语言。不定长参数的使用实例如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*- # 可写函数说明
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return; # 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );
Python使用Lambda表达式来创建匿名参数:
Lambda语法:
lambda [arg1 [,arg2,.....argn]]:expression
实例:
sum = lambda x, y = 5: x + y
sum(3)
▶ 模块
模块是一个保存了Python代码的(如:.py)文件,也是Python对象,具有随机的名字属性用来绑定或引用。其中,可定义函数、类和变量,以及可执行代码。
import语句语法:
import module1[, module2[,... moduleN]
from...import语句语法:
from modname import name1[, name2[, ... nameN]]
from modname import *
全局变量的使用:
#!/usr/bin/python
# -*- coding: UTF-8 -*- Money = 2000
def AddMoney():
global Money
Money = Money + 1 print Money
AddMoney()
print Money
dir(module_name)函数,返回一个module中定义的所有模块,变量和函数组成的一个列表。
globals()和locals()函数,分别返回全局或局部命令空间的名字。
reload(module_name)函数,重新导入一个模块。
▶ 包
为了避免将文件夹名当作普通的字符串,包是一个至少要包含__init__.py文件的文件夹。
__init__.py的内容可为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。
__all__ = ['module_1', 'module_2']

图1 包、模块、函数和类的关系

图2 实例组织结构
parent文件夹中的__init__.py
#!/usr/bin/env python
# -*- coding=utf-8 -*- if __name__ == '__main__':
print 'Run as main in parent...'
else:
print __name__
print 'pack 1 or pack 2 init...'
pack_1文件夹中的__init__.py:
#!/usr/bin/env python
# -*- coding=utf-8 -*- __all__ = ["module_1"] if __name__ == '__main__':
print 'Run as main in pack 1...'
else:
print __name__
print 'pack 1 init...'
pack_2文件夹中的__init__.py:
#!/usr/bin/env python
# -*- coding=utf-8 -*- __all__ = ["module_2"] if __name__ == '__main__':
print 'Run as main in pack 2...'
else:
print __name__
print 'pack 2 init...'
使用实例:
#!/usr/bin/env python
# -*- coding=utf-8 -*- from parent.pack_1 import *
from parent.pack_2 import * module_1.func1()
module_2.func2()
结果:
parent
pack 1 or pack 2 init...
parent.pack_1
pack 1 init...
parent.pack_2
pack 2 init...
pack_1.module_1.func1()
pack_2.module_2.func2()
如果直接运行__init__.py,则__name__是main。
Python基础学习笔记(十一)函数、模块与包的更多相关文章
- python基础学习笔记——初识函数
什么是函数 我们目前为止,已经可以完成一些软件的基本功能了,那么我们来完成这样一个功能:约x 1 2 3 4 5 pint("拿出手机") print("打开陌陌&quo ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Python基础学习笔记(九)常用数据类型转换函数
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-variable-types.html 3. http://www ...
- Python基础学习笔记(八)常用字典内置函数和方法
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-dictionary.html 3. http://www.lia ...
- Python基础学习笔记(七)常用元组内置函数
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-tuples.html 3. http://www.liaoxue ...
- Python基础学习笔记(六)常用列表操作函数和方法
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-lists.html 3. http://www.liaoxuef ...
- Python 基础学习笔记(超详细版)
1.变量 python中变量很简单,不需要指定数据类型,直接使用等号定义就好.python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前 ...
- python 基础学习笔记(1)
声明: 本人是在校学生,自学python,也是刚刚开始学习,写博客纯属为了让自己整理知识点和关键内容,当然也希望可以通过我都博客来提醒一些零基础学习python的人们.若有什么不对,请大家及时指出, ...
- Python基础学习笔记(十)日期Calendar和时间Timer
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...
随机推荐
- is_user_logged_in()
function is_user_logged_in() { $user = wp_get_current_user(); return $user->exists(); } wp_get_cu ...
- javaWeb 使用 jsp 和 javaBean 实现计算器功能
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- 【原创】Nexus搭建Maven私服
前言: 公司一般都有个自己的私服来管理各种jar包,原因大概有这么3个,分别是: 1.有的公司不能访问外网,只能通过私服来管理jar包和插件: 2.公司网速比较慢,通过公司的私服来获取jar包比较快: ...
- 10、会话管理/编程实战分析/Jsp
1 会话管理回顾 会话管理 1)会话管理: 管理浏览器和服务器之间的会话过程中产生的会话数据 2)Cookie技术: 会话数据保存在浏览器客户端. Cookie核心的API: 2.1 在服务器端创建C ...
- C#:WPF绘制问题
1.问题描述:切换画笔后,鼠标呈现画笔,但绘制界面需要点击后才能绘制,体验比较差 注:如果将切换为画笔或橡皮擦的功能放在二级菜单中则无次问题 解决方法(大体如此): 1)在第三方中,先创建完绘制画面和 ...
- python day6 面向对象
把一个类变成具体的实例化的过程叫做类 实例化:把一个类变成一个具体对象的过程 __init__ 构造函数,在实例化时初始化数据 __init__方法的第一个参数永远是self,表示创建的实例本身,因 ...
- coco2dx服务器简单例子
实现的单个socket例子,了解socket原理. 先创建一个win32的项目(命令行的),作为服务端 // SocketServer.cpp : 定义控制台应用程序的入口点.// #include ...
- jdbc连接集合
JDBC里统一的使用方法: Class.for(jdbcDriverName); Connection conn=DriverManager.getConnection(url,u ...
- hdu5681 zxa and wifi
这道题目是不太好想的,尽管很容易看出来应该是dp,但是状态转移总觉得无从下手. 其实我们可以将状态分层,比如设$dp(i, j)$为用$i$个路由器覆盖前$j$个点所需的最小代价 我们先不考虑状态,而 ...
- Stars(树状数组或线段树)
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37323 Accepted: 16278 Description A ...