python基础教程之自定义函数介绍


Posted in Python onAugust 29, 2014

函数最重要的目的是方便我们重复使用相同的一段程序。

将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句。

函数的定义

首先,我们要定义一个函数, 以说明这个函数的功能。

def square_sum(a,b):

    c = a**2 + b**2

    return c

这个函数的功能是求两个数的平方和。

首先,def,这个关键字通知python:我在定义一个函数。square_sum是函数名。

括号中的a, b是函数的参数,是对函数的输入。参数可以有多个,也可以完全没有(但括号要保留)。

我们已经在循环和选择中见过冒号和缩进来表示的隶属关系。

c = a**2 + b**2        # 这一句是函数内部进行的运算
return c               # 返回c的值,也就是输出的功能。Python的函数允许不返回值,也就是不用return。
return可以返回多个值,以逗号分隔。相当于返回一个tuple(定值表)。
return a,b,c          # 相当于 return (a,b,c)

在Python中,当程序执行到return的时候,程序将停止执行函数内余下的语句。return并不是必须的,当没有return, 或者return后面没有返回值时,函数将自动返回None。None是Python中的一个特别的数据类型,用来表示什么都没有,相当于C中的NULL。None多用于关键字参数传递的默认值。

函数调用和参数传递

定义过函数后,就可以在后面程序中使用这一函数

print square_sum(3,4)

Python通过位置,知道3对应的是函数定义中的第一个参数a, 4对应第二个参数b,然后把参数传递给函数square_sum。

(Python有丰富的参数传递方式,还有关键字传递、表传递、字典传递等,基础教程将只涉及位置传递)

函数经过运算,返回值25, 这个25被print打印出来。

我们再看下面两个例子

a = 1
def change_integer(a):

    a = a + 1

    return a
print change_integer(a)

print a
#===(Python中 "#" 后面跟的内容是注释,不执行 )
b = [1,2,3]
def change_list(b):

    b[0] = b[0] + 1

    return b
print change_list(b)

print b

第一个例子,我们将一个整数变量传递给函数,函数对它进行操作,但原整数变量a不发生变化。

第二个例子,我们将一个表传递给函数,函数进行操作,原来的表b发生变化。

对于基本数据类型的变量,变量传递给函数后,函数会在内存中复制一个新的变量,从而不影响原来的变量。(我们称此为值传递)

但是对于表来说,表传递给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操作将在原有内存中进行,从而影响原有变量。 (我们称此为指针传递)

总结

def function_name(a,b,c):

    statement

    return something  # return不是必须的

函数的目的: 提高程序的重复可用性。
return     None

通过位置,传递参数。

基本数据类型的参数:值传递

表作为参数:指针传递

练习:

写一个判断闰年的函数,参数为年、月、日。若是是闰年,返回True

Python 相关文章推荐
python生成器的使用方法
Nov 21 Python
numpy中以文本的方式存储以及读取数据方法
Jun 04 Python
python3.x 将byte转成字符串的方法
Jul 17 Python
如何基于python生成list的所有的子集
Nov 11 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
Django模型验证器介绍与源码分析
Sep 08 Python
python中的测试框架
Nov 13 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
python爬虫常用的模块分析
Aug 29 #Python
python基础教程之循环介绍
Aug 29 #Python
Python中optionParser模块的使用方法实例教程
Aug 29 #Python
python基础教程之缩进介绍
Aug 29 #Python
python基础教程之常用运算符
Aug 29 #Python
python基础教程之序列详解
Aug 29 #Python
Python获取电脑硬件信息及状态的实现方法
Aug 29 #Python
You might like
PHP持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
2014/06/27 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
javascript 显示当前系统时间代码
2009/12/28 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
Bootstrap入门书籍之(三)栅格系统
2016/02/17 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
el-select 下拉框多选实现全选的实现
2019/08/02 Javascript
JavaScript实现简单计算器
2020/03/19 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
pycharm 使用心得(四)显示行号
2014/06/05 Python
python中import reload __import__的区别详解
2017/10/16 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
PyQt5实现下载进度条效果
2018/04/19 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
利用Python过滤相似文本的简单方法示例
2021/02/03 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
前处理班长职位说明书
2014/03/01 职场文书
前台文员职责范本
2014/03/07 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
物理课外活动总结
2014/08/27 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
毕业实习单位意见
2015/06/04 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL