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

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

函数的定义

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

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基础教程之自定义函数介绍相关推荐

  1. python雷达图详解_Python基础教程 - matplotlib实现雷达图和柱状图

    原标题:Python基础教程 - matplotlib实现雷达图和柱状图 Python基础教程记录 - 使用matplotlib实现雷达图和柱状图. 注:主要是设置add_subplot(133),分 ...

  2. python average函数详解_python基础之函数详解

    Python基础之函数详解 一.函数的定义 到现在为止,我们已经掌握了Python的基本语法和数据类型等相关基础知识了,以进行一个项目的编写了,这个时候,就会发现,很多代码需要我们进行复制粘贴,这简直 ...

  3. python变量详解_python基础教程-03-变量详解

    变量就像一个小罐子,里面是存放着各种数据类型的数据,并且在程序运行过程中会发生变化.变量名在一个工作空间内是唯一的,通过变量的名字就能找到对应的数据. 变量的赋值 变量的赋值就可以理解为往小罐子里存放 ...

  4. python stringstrip方法详解_Python 基础知识全篇-字符串(Strings)

    字符串是字符的集合. 单引号和双引号 字符串可以包含在单引号或双引号中. my_string = "This is a double-quoted string." my_stri ...

  5. python中getattr详解_Python中如何使用getattr()函数

    Python中如何使用getattr()函数 发布时间:2020-08-12 14:57:55 来源:亿速云 阅读:74 作者:小新 这篇文章将为大家详细讲解有关Python中如何使用getattr( ...

  6. python递归调用详解_Python递归调用自己的函数

    原博文 2019-11-16 10:36 − def fact(x): if x == 1: return 1 else: return x * fact(x-1) ... 0 191 相关推荐 20 ...

  7. python100个内置函数详解_Python 63个内置函数详解

    Python 内置函数最全汇总: 1 abs() 绝对值或复数的模 In [1]: abs(-6) Out[1]: 6 2 all() 接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否 ...

  8. java注解 源码_详解Java注解教程及自定义注解

    详解Java注解教程及自定义注解 更新时间:2016-02-26 11:47:06   作者:佚名   我要评论(0) Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个 ...

  9. python中globals用法_Python基础教程之内置函数locals()和globals()用法分析

    本文实例讲述了Python基础教程之内置函数locals()和globals()用法.分享给大家供大家参考,具体如下: 1. 这两个函数主要提供,基于字典的访问局部变量和全局变量的方式. python ...

最新文章

  1. Centos 7 安装 ifconfig 管理命令
  2. mysql——JDBC
  3. freemarker 转义字符
  4. cad 打开硬件加速卡_CAD卡顿?电脑带不动?几个简单实用的方法,解决CAD运行卡顿问题...
  5. java字符串截取指定下标位置的字符串
  6. 干加个偏旁可以变成什么字_字好看的孩子,都是用了这些小学生学写字的方法...
  7. 使用自制ADempiere 3.6.0 LTS安装软件进行安装(基于Ubuntu Desktop 12.04 LTS)
  8. wsdl2java maven_maven wsdl2java配置无法正常工作
  9. css3 图标效果,css3图标_纯CSS3图标旋转效果代码
  10. 2022年湖北省房地产经纪人(房地产经纪业务操作)练习题及答案
  11. 【语音信号处理课程设计】基于MATLAB的隐马尔可夫和矢量量化的语音识别研究
  12. 服务器远程桌面连接不上(远程桌面连接服务器之超级VPS管理器)
  13. 高分一号二号PMS数据处理
  14. 给你一台大疆无人机,你能用来做点啥?(一)----------获取正射影像
  15. 能力提升的僵化、优化、固化过程
  16. 希望计算机专业同学都知道这些宝藏博主
  17. 网络信息安全攻防学习平台——基础关
  18. 用Rust实现区块链 - 3 持久化
  19. 深入解析go依赖注入库go.uber.org/fx
  20. ajax mvc 服务器 怎么设置,ajax mvc 服务器 怎么设置

热门文章

  1. 攻防世界(Pwn) forgot---栈溢出;(方法二)
  2. Python基础教程:字典和Json
  3. python的dir()和__dict__属性的区别
  4. 穷学计算机富学金融家里有矿,穷学IT,富学金融?亲身体验告诉你IT真的是一个不用拼爹的行业...
  5. idea2020 需要热部署吗_小微制造企业需要部署MES系统吗?
  6. C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)
  7. 黑马程序员C语言基础(第七天)内存管理
  8. html div标签的 class属性是干嘛用的?
  9. pycharm 运行.py文件如何像控制台那样传参?
  10. python的yield和yield from