一、概述Python的程序由包、模块和函数组成。

函数是一段可重用的有名称的代码。通过输入的参数值,返回需要的结果,并可存储在文件中供以后使用。几乎任何Python代码都可放在函数中。Python为函数提供了强大支持。

模块是处理某一类问题的集合,模块由函数和类组成。模块和常规Python程序之间的唯一区别是用途不同:模块用于编写其他程序。因此,模块通常没有main函数。

包是一个完成特定任务的工具箱,Python提供了许多有用的工具包,如字符串处理、图形用户接口、Web应用、图像处理等。使用自带的工具包,可以提高程序开发效率、减少编程复杂度,达到代码重用的效果。

Python的程序结构:

说明:

Python自带的工具包和模块安装在其安装目录的Lib子目录中。

例如:Lib目录中的xml文件夹。xml文件夹就是一个包,该包用于完成XML的应用开发,xml包中包含四个子包:dom、sax、etree和parsers。文件__init__.py是xml包的注册文件,若无此文件,Python将不能识别xml包。

注意:包必须至少含有一个__init__.py文件。

__init__.py文件的内容可以为空,它用于标识当前文件夹是一个包。

二、函数

1、函数的定义及调用

格式:def 函数名(形参表):

函数体语句序列

[return 表达式] #可选项,即有的函数可以没有返回值。函数调用:

函数名(实参表)

说明:

函数必须先定义,后使用;

函数名与变量名的命名规则相同,只能包含字母、数字和下划线_,且不能以数字打头。

例:定义计算圆面积的函数

执行结果:

2、函数的参数在C、C++中,参数的传递有值传递和引用传递两种方式。Python中任何东西都是对象,所以参数只支持引用传递的方式。

Python通过名称绑定的机制,把实际参数的值和形式参数的名称绑定在一起,即把形式参数传递到函数所在的局部命名空间中,形式参数和实际参数指向内存中同一个存储空间。

(1)按引用传递参数

向函数传递参数时,Python采用按引用传递的方式。这意味着当传递参数时,函数将使用新变量名来引用原始值。

例:求任意两个数的和。

执行结果:

内存状态:

刚调用add(x,y)后的内存状态,a和b分别指向x和y指向的值。

(2)默认值函数的参数支持默认值。当某个参数没有传递实际的值时,函数将使用默认参数计算。

带默认值的参数不能位于没有默认值的参数前面。

默认值参数示例。

执行结果:

(3)关键字参数关键字参数有两大好处:清晰地指出了参数值,有助于提高程序的可读性;

关键字参数的顺序无关紧要。

调用使用关键字参数的函数时,以param=value的方式传递参数

例:关键字参数示例

执行结果:

3、函数的嵌套C、C++都支持函数的嵌套调用,Python不仅支持函数的嵌套调用,还支持函数的嵌套定义。

当然,尽量不要在函数内部定义函数,这种方式不便于程序维护,容易造成逻辑上的混乱,且嵌套定义的函数层次越多,程序维护的代价就越大。

例:分别使用函数的嵌套调用、函数的嵌套定义以及函数嵌套定义时直接引用外部函数的变量等三种方式,计算表达式(x+y)*(m-n)的值

嵌套调用函数:

嵌套定义函数:

函数嵌套定义,内部函数直接引用外部函数的变量:

4、递归函数

(1)递归的概念递归函数可以在函数主体内直接或间接地调用自己,即函数的嵌套是函数本身。

递归是一种程序设计方法,使用递归可以减少重复的代码,使程序变得简洁。

递归的过程分为两个阶段:递推和回归。

递归函数的原理:第一阶段,递归函数在内部调用自己。每一次函数调用又重新开始执行此函数的代码,直到某一级递归程序结束。

第二阶段,递归函数从后往前返回。递归函数从最后一级开始返回,一直返回到第一次调用的函数体内。即递归函数逐级调用完毕后,再按相反的顺序逐级返回。

(2)递归的实现一个问题能否用递归实现,看其是否具有下面的特点:需有完成任务的递推公式。

结束递归的条件。

编写递归函数时,程序中必须有相应的语句:一个递归调用语句。

测试结束语句。先测试,后递归调用。

例:用递归方法求n!

递归公式:

例如,使用递归计算5!的过程:

源程序及执行结果:

例:编程求出Fibonacci数列的第n项。

Fibonacci数列定义如下:

假定求出第八项。

分析:Fibonacci数列的计算具备递归的条件。首先有递推公式F(n)=F(n-1)+F(n-2),第二有结束递归的条件即n=0或n=1时不再递归。

源程序及执行结果:

(3)递归的评价与消除递归递归程序虽然易读、易编,但需要占用额外的内存空间,并且执行速度也受影响。

是否利用递归编程要看实际问题,如果要节约内存就用循环语句实现。若对内存要求并不高,可以用递归编程。

如果不用递归程序很难实现,则只能选择递归算法。

5、lambda函数Lambda函数用于创建一个匿名函数,函数名未和标识符进行绑定。

使用lambda函数可以返回一些简单的运算结果。

格式: lambda 变量1,变量2…:表达式

功能:通常lambda赋值给一个变量,变量即可作为函数使用;也可以把lambda直接作为函数使用。

例:用lambda函数

6、Generator函数

Generator函数的作用是一次产生一个数据项,并把数据项输出。

格式: def 函数名(参数列表):

… yield 表达式

说明:Generator函数的定义与普通函数的区别只是在函数体内使用yield生成数据项。 Generator函数可以被for循环中遍历,且可以通过__next__()方法(Python 2是next方法)获得yield生成的数据项。

例:用三种方法求斐波那契(Fibonacci)数列的前N项

方法一:简单输出斐波那契数列前 N 项

说明: 结果没有问题,但直接在 fab 函数中用 print 打印数字会导致该函数可复用性较差,因为 fab 函数返回 None,其他函数无法获得该函数生成的数列。 要提高 fab 函数的可复用性,最好不要直接打印出数列,而是返回一个 list(Python中的数据结构之一,是序列之一,由一组元素组成,值可改变。后续详细介绍)

方法二:定义一个函数,返回一个列表,列表中包含了斐波那契数列前 N 项

方法三:使用yield

说明: 方法三与方法一相比,仅仅把 print b 改为了 yield b,就在保持简洁性的同时获得了 iterable 的效果。 也可以手动调用 fab(5) 的 next() 方法,这样可以更清楚地看到 fab 的执行流程。 当函数执行结束时,generator 自动抛出 StopIteration 异常,表示迭代完成。在 for 循环里,无需处理 StopIteration 异常,循环会正常结束。

三、模块模块实际上是将一组函数放在一起共享公共的主题;

将这些函数存储于一个.py文件中;

使用import命令导入。

1、模块的创建及导入创建模块,即创建一个.py文件,在其中包含用于完成任务的变量、类和函数,不包括main函数。

模块使用之前要导入该模块,导入方法之前已做过介绍。

例5-11:创建模块,用于在屏幕上打印各种形状。

定义的模块shapes及使用模块的源程序:

执行结果:

例:创建一个求圆面积、圆周长、圆表面积和圆体积的模块

调用方式一:

调用方式二:

2、模块的属性模块有一些内置属性,用于完成特定的任务。

__doc__:模块中用于描述的文档字符串__name__:模块名__file__:模块保存的路径

3、模块的内置函数Python提供了一个内联模块buildin。该模块定义了一些常用函数,利用这些函数可以实现数据类型的转换、数据的计算、序列的处理等功能。

(1)filter()

声明:

class filter(object)

filter(function or None, iterable)-->filter object功能:filter()可以对某个序列做过滤处理,根据自定义函数返回的结果是否为真来过滤,并一次性返回处理结果。返回结果是filter对象。

例:filter()函数应用

(2)reduce()

声明:

reduce(func,squence[,initial])->value

功能:对序列中的元素进行连续操作。例如:可对某个序列中的元素进行累加、累乘和阶乘等操作。

说明:在Python 2中,reduce存在于全局空间中,可直接调用。而在Python 3中将其移到了functools模块中,所以使用之前要先引入。

例:reduce()函数应用

(3)map()

声明:

class map(object)

map(func, iterables)-->map object功能:对多个序列的每个元素都执行相同的操作,并返回一个map对象。

例:map()函数应用。求列表中数字的幂运算。

常用内置模块函数(一):

函 数描 述abs(x)返回x的绝对值bool([x])将一个值或表达式转换为bool类型。如果表达式x为真返回True,否则返回Falsedelatrr(obj.name)等价于del obj.nameeval(s[,globals,locals])计算表达式的值float(x)将数字或字符串转换为float类型hash(object)返回一个对象的hash值help([object])返回内置函数的帮助说明id(x)返回一个对象的标识input([prompt])接收控制台的输入,并将输入的值转换为字符串(Python 3)int(x)将数字或字符串转换为整型

常用内置模块函数(二):

函 数描 述len(obj)对象包含的元素个数range([start,]end[,step)生成一个列表并返回reduce(func,sequence[,initial])对序列的值进行累计计算round(x,n=0)四舍五入函数set([iterable])返回一个set集合sorted(iterable[,cmp[,key[,reverse]]])返回一个排序后的列表sum(iterable[,start=0])返回一个序列的和type(obj)返回一个对象的类型zip(iter1[,iter2[…]])将n个序列作为列表的元素返回

4、自定义包除了系统自带的包之外,还可以自定义包。

之前已经介绍过,包至少含有一个__init__.py文件。 init.py文件的内容可以为空,它用于标识当前文件夹是一个包。

包的作用是为了程序的重用,把实现一些特定功能的代码组合到一个包中,调用包提供的功能从而实现重用。

例:一个包与模块的树形关系

定义一个包parent。在parent包中创建两个子包pack和pack2。pack包中定义了一个模块myModule,pack2包中定义了一个模块myModule2。

最后在包parent中定义一个模块main,调用包pack和pack2。

包pack的初始化程序及myModule模块:

包pack2的初始化程序及myModule2模块:

包parent中的main模块及执行结果:

main模块执行结果:

4、第三方模块的导入

(1)单文件模块

直接把文件拷贝到 python的安装目录的Lib子目录下。

(2)多文件模块,带setup.py

python setup.py install

例:导入第三方模块requestsrequests简介:requests是python的一个HTTP客户端库。支持 HTTP 连接保持和连接池,支持使用 cookie 保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

步骤1: 去第三方库的网站( https://pypi.python.org )下载安装包,解压在python的安装目录。注意第三方库的文件夹的位置以及setup.py的位置。 本例在Python 2.7下安装的。步骤2: 运行cmd,进入命令行。利用cd命令进入第三方库文件夹的位置。

步骤3: 执行命令:python setup.py install

步骤4: 最后进入命令行,import库名称,观察第三方库是否安装成功。

python主函数调用格式_Python的模块与函数相关推荐

  1. python主函数调用格式_python函数介绍

    1.函数定义与调用 函数是为了实现特定功能而封装起来的一组语句块,可以被用户调用 使用函数可以降低编程难度,将大问题分解成若干小问题:实现代码重用,函数可被多次调用 格式: def 函数名(参数列表) ...

  2. python主函数调用格式_Python入门基础中怎么定义函数,函数调用,函数传递参数...

    什么是函数和为什么要用函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.已经知道Python提供了许多内建函数,比如print(). ...

  3. python findall返回值_Python re 模块findall() 函数返回值展现方式解析

    findall 函数: 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表. 注意: match 和 search 是匹配一次 findall 匹配所有,mat ...

  4. python 逐行读取文件_Python fileinput模块:逐行读取多个文件

    前面章节中,我们学会了使用 open() 和 read()(或者 readline().readlines() )组合,来读取单个文件中的数据.但在某些场景中,可能需要读取多个文件的数据,这种情况下, ...

  5. python 函数参数传递 格式_Python学习6.1_函数参数及参数传递

    大多数编程语言都绕不开一个名词,那就是--函数(function).而函数很重要的部分则是参数(arguments)的使用.Python的参数传递总体来说是根据位置,传递对应的参数.阐述如下: 1.位 ...

  6. python tempfile自动删除_Python tempfile模块生成临时文件和临时目录

    tempfile 模块专门用于创建临时文件和临时目录,它既可以在 UNIX 平台上运行良好,也可以在 Windows 平台上运行良好. tempfile 模块中常用的函数,如表 1 所示. 表 1 t ...

  7. python中text格式_python读取各种格式的文本

    1. 读取word文本 Python可以利用python-docx模块处理word文档,处理方式是面向对象的,python-docx模块会把word文档中的段落.文本.字体等都看做对象,对对象进行处理 ...

  8. python随机选取字符串_Python random模块sample、randint、shuffle、choice随机函数概念和应用...

    Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序 列中的一个元素,打乱一组数据等. random中的一些重要函数的用法: 1 ).random() 返 ...

  9. python tkinter控件_Python——Tkinter窗口的函数,Pythontkinter,视窗,功能,部件

    tkinter简介 Tkinter 是使用 python 进行窗口视窗设计的模块.Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.作为 pytho ...

最新文章

  1. php返回结果判断,老司机在判断返回结果时翻了个身(ThinkPHP)
  2. MyBatis之传入参数
  3. movsb movsw movsd 指令详解
  4. ubuntu文件权限解析
  5. OpenCV:判定曲线为弧线的简单方法
  6. hadoop启动后,9000端口无法连接,netstat -tpnl中找不到该端口
  7. 以太坊上已有十个DeFi协议的锁仓量超过10亿美元
  8. BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支( 二分答案 )
  9. 增选54位院士,京东副总裁梅涛等18位华人入选!
  10. 计算机二本院校排名民办河北,2020年河北民办二本大学及分数线-河北最好的民办大学学费...
  11. PS将一张图片裁剪/划分为多块
  12. Vue实现简单列表无限循环滚动(鼠标悬停)
  13. 目标跟踪算法_Camshift函数(学习笔记)
  14. 卷土重来的FCoin日本站,你被割了吗?
  15. ibaits中进行log4j控制台输出
  16. Port Forwarding(端口转发)简单介绍
  17. Docker中创建nginx容器出现docker: Error response from daemon: driver failed programming exter...解决
  18. 2023什么蓝牙耳机好?经销商盘点新手必入蓝牙耳机品牌
  19. bash中文手册在线pdf
  20. android wifi显示网络受限的问题

热门文章

  1. 光电耦合器的参数大全
  2. 运维小白的python之路(一)
  3. jQuery+PHP实现微信大转盘抽奖 v1.0
  4. 进程间通信: 进程间通信都有哪些方法?
  5. Docker 容器技术,让你不再为环境而烦恼
  6. 关于onKeyDown方法
  7. 51单片机-WIFI模块
  8. Linux 安装Oracle11g完整安装图文教程另附基本操作 (分享)
  9. 互联网金融之应用系统安全开发规范
  10. 在线查看相机快门次数