一、理解函数

  举一个例子,当我们需要重复使用一个功能的时候,不可能每次都去复制一次代码,这个时候就需要用到函数了,所谓的函数,简单来说就是给函数取一个名字,当需要用到这个功能的时候,就可以通过这个名字去执行这个函数了。

  通常函数可以接受零或者多个参数,也能返回零个或多个值,对于函数的调用者,不需要了解函数内部的实现细节,只需要给函数传入参数和接受返回值就可以了。

函数调用如图:

  对于函数的定义者来说,需要注意以下几点:

  • 对于函数内部动态数据,应该被定义为函数的参数
  • 对于函数调用者需要得到的数据,应该被定义为返回值
  • 函数内部实现的过程

二、函数的定义与调用

定义函数的语法格式如下:

def 函数名(形参列表):
函数的内部实现过程
[return 返回值]
  • Python必须使用def声明函数。
  • 从语法来说,函数名只要是合法的标识符即可,但从可读性来说,函数名最好是由有意义的单词组成,单词之间用下划线分隔开,每个单词都是小写字母。
  • 形式列表,由多个形参名组成,形参名之间使用英文逗号隔开,只要在定义函数的时候指定了形参列表,调用者就必须为函数传入参数值。

例:

# 定义函数
def max_num(x = 1,y = 2):
z = x if x > y else y if y > x else (x,y)
return z def say_max(name):
  print ('函数执行中.....')
  return '最大值为:%s'%name # 调用函数
max_num()
# x默认值为1,y默认值为2,返回 2
# 重新对x,y赋值
max_num(3,2)
# 返回 3 # 把max_num返回值当做参数传入say_max
say_max(max_num(5,7))
# 打印 函数执行中..... 返回 '最大值为:7'

在函数体中,return可以返回表达式,也可以返回一个或多个值,上面max_num()函数可以简写成:

def max_num(x = 1,y = 2):
return x if x > y else y if y > x else (x,y)

如果程序中需要返回多个值,我们可以把多个值包装成list之后返回,也可以直接返回多个值,Python会自动的把多个返回值封装成元组tuple,例:

# 返回多个值
def send_num(x,y,z):
print ('函数运行中.....')
return x,y,z # 返回列表
def show_num(a,b,c):
  p = a,b,c
  return list(p) send_num(1,2,3)
# 打印 函数运行中..... 返回 (1, 2, 3)
show_num(1,2,3)
# 返回 [1, 2, 3]

三、递归函数

一个函数内调用自己本身,就是递归函数,递归函数包含一种隐式循环,重复去执行某一段代码,但无须循环控制。

例:

def sum_num(n):
if n == 0:
return 0
else:
return n + sum_num(n-1) sum_num(5)
# 返回 15  

上面的例子中,函数不断调用自己本身,当sum(0)确定时,就可以推算出sum(1),sum(1)又可以推算出sum(2).........如此类推,最后就可以推算出sum(5),过程如下:

sum(5) = 5 + sum(4) ----------> 5 + 10 = 15
sum(4) = 4 + sum(3) ----------> 4 + 6 = 10
sum(3) = 3 + sum(2) ----------> 3 + 3 = 6
sum(2) = 2 + sum(1) ----------> 2 + 1 = 3
sum(1) = 1 + sum(0) ----------> 1 + 0 = 1
sum(0) = 0 

总的来说,当一个函数体中,调用了函数本身,就是函数递归,注意,递归一定要向已知的方向进行。 

四、为函数提供文档

当我们要使用一个函数时,不知道该函数是用来做什么的,我们可以通过Python内置函数help()查看该函数的帮助信息。

我们可以在定义一个函数时,给函数添加说明文档,只需要把一段字符串放在函数声明之后,函数整体之前,这段字符串将被视为这个函数的一部分,这部分就是函数的说明文档,我们可以通过help()函数的__doc__属性访问函数的说明文档。

定义一个函数:

def test(n):
'''
这里是说明文档
'''
return n

通过help()函数查看test()函数说明文档,例:

help(test)
# 运行结果
Help on function test in module __main__: test(n)
这里是说明文档

通过函数的__doc__属性访问函数的说明文档,例:

print (test.__doc__)
# 运行结果 这里是说明文档

  

Python——函数入门(一)的更多相关文章

  1. Python函数(入门6)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6407970.html 本文出自:[Edwin博客园] Python函数 1. Python之调用函数 pri ...

  2. python函数入门

    知识内容: 1.函数的作用 2.函数的定义与调用 3.函数的返回值 4.函数的参数 5.局部变量与全局变量 6.作用域 一.函数的作用 1.复用代码 将可能重复执行的代码封装成函数,并在需要执行的地方 ...

  3. python函数入门到高级

    函数的定义: def test(x): "The function definitions" x+=1 return x def:定义函数的关键字 test:函数名 ():内可定义 ...

  4. Python——函数入门(三)

    一.变量作用域 当程序定义一个变量时,这个变量是有它的作用范围的,变量的作用范围称为变量的作用域.根据变量的位置,分为两种: 局部变量:局部变量就是在函数中定义的变量,包括参数,都是局部变量,局部离开 ...

  5. Python——函数入门(二)

    一.函数的参数 我们在定义函数时,可以定义形式参数(简称形参),这些形参的值在函数调用的时候才会确定,形参的值由调用者负责传入. 1.关键字参数 在Python中,函数的参数名并不是没有意义的,在调用 ...

  6. 实验与作业(Python)-02 Python函数入门与温度转换程序

    截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...

  7. 实验与作业(Python)-02 Python函数入门与温度转换程序(函数、input、eval、int、float、列表)

    截止日期 实验目标 学会定义函数,使用函数.学会导入在某个文件中定义的函数. input获得值,然后通过eval或者int.float将其转换为相应的类型. 学会使用列表:访问列表.append.遍历 ...

  8. python之函数入门

    python之函数入门 一. 什么是函数 二. 函数定义, 函数名, 函数体以及函数的调用 三. 函数的返回值 四. 函数的参数 五.函数名->第一类对象 六.闭包 一,什么是函数 函数: 对代 ...

  9. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

随机推荐

  1. vue-cli 3.0安装和使用

    零. 前言 公司最近开发项目使用的是vue-cli 3.0版本开发,但是对于vue-cli 3.0版本一直没有研究过如何使用,公司使用配置:pug + ts + stylus + eslint:编辑器 ...

  2. VMware Workstation “无法连接 MKS: 套接字连接尝试次数太多;正在放弃。” 解决方法【转】

    今天和往常一样打开电脑,打开VMware Workstation,打开其中的一台虚拟机,以前都是这么打开没有问题,今天打开虚拟机突然提示“无法连接 MKS: 套接字连接尝试次数太多:正在放弃.”. 经 ...

  3. 蓝桥杯T126(xjb&大数开方)

    题目链接:http://lx.lanqiao.cn/problem.page?gpid=T126 题意:中文题诶- 思路:显然被翻转了奇数次的硬币为反面朝上,但是本题的数据量很大,所以O(n^2)枚举 ...

  4. poj1088(記憶化搜索)

    題目鏈接:http://poj.org/problem?id=1088 題意:中文題誒- 思路:dfs,不過直接dfs因該會超時,那我們給他加個記錄路徑就好了... 代碼: #include < ...

  5. 部署开发以太坊dapp的四种方式

    我们已经学习了4种开发和部署智能合约的方法: 第1种是使用 Truffle 和 Ganache .由于我们从上一篇教程中复制了代码,所以我想告诉你,有些插件可用于目前最流行的文本编辑器和 IDEs.有 ...

  6. 6.Python初窥门径(小数据池,集合,深浅拷贝)

    Python(小数据池,集合,深浅拷贝) 一.小数据池 什么是小数据池 小数据池就是python中一种提高效率的方式,固定数据类型,使用同一个内存地址 小数据池 is和==的区别 == 判断等号俩边的 ...

  7. 《机器学习实战》-k近邻算法

    目录 K-近邻算法 k-近邻算法概述 解析和导入数据 使用 Python 导入数据 实施 kNN 分类算法 测试分类器 使用 k-近邻算法改进约会网站的配对效果 收集数据 准备数据:使用 Python ...

  8. QDU第一届程序设计大赛——E到I题解法(非官方题解)

    题目链接https://qduoj.com/contest/28/problems,密码:qdu1230 E题: 思路:先进行排序,然后去暴力模拟就可以,但可能WA了几次,导致此题没解出来,有点可惜 ...

  9. mysql 5.1 在Windows下重置root 用户密码

    在windows下:打开命令行窗口,停止mysql服务(这里不用进入mysql目录): net stop mysql 进入mysql安装目录的bin文件夹下 执行: mysqld --skip-gra ...

  10. RHEL/CentOS 7.X 安装笔记

    配置vim # 配置 vim 编辑器 yum install vim rm /usr/bin/vi ln -s /usr/bin/vim /usr/bin/vi vi /etc/vimrc # 开启语 ...