定义函数

Python中,定义函数是用def语句,一次写出函数名、括号、括号中的参数、和冒号:,然后在缩进模块中编写函数体,函数的返回值使用return语句返回。

我们以自定义一个求绝对值的my_abs函数为例:

def my_abs(x):

if x>=0:

return x

else:

return -x

注意,函数体内的语句在执行时,一旦执行到return,函数就执行完毕。并将结果返回。如果没有return语句,函数返回结果为none。return none可以简写为return。

在Python交互式命令行下,定义函数python会出现...的提示符,函数定义结束后需按两次会车回到>>>的提示符下。

如果已经把my_abs()的函数定义保存到abstest.py文件,那么可以在该文件当前目录下,使用from abstest import my_abs 导入my_abs()函数。注意abstest是文件名,不包含.py扩展名。

空函数

def nop():

pass

pass语句什么都不做,用作占位符,比如现没想好怎么写函数代码,就可以先放一个pass,让代码能运行起来。

pass还可以用在其他语句里:

if x >0:

pass

参数检查

函数调用的时候,如果函数的参数个数不对,Python解释器能自动检查出来。并抛出TypeError;

但是函数的参数类型不对,Python解释器无法帮我们查出。

>>> my_abs('A')Traceback (most recent call last):

File "", line 1, in

File "", line 2, in my_abs

TypeError: unorderable types: str() >= int()

>>> abs('A')

Traceback (most recent call last):

File "", line 1, in TypeError: bad operand type for abs(): 'str'

当传入了不恰当参数时,内置函数会检查出参数错误,而我们定义的my_abs()没有参数检查,会导致if语句出错。对参数类型做检查可以使用isinstance()函数实现。

def my_abs(x):

if not isinstance(x,(int,float)):

raise TypeError('bad operand type')

if x>=0:

return x

if x<0:

return -x

再次调用:>>> my_abs('A')

Traceback (most recent call last):

File "", line 1, in

File "", line 3, in my_abs

TypeError: bad operand type

返回多值

函数可以返回多个值。

比如这个计算坐标的函数:import mathdef move(x, y, step, angle=0):

nx = x + step * math.cos(angle)

ny = y - step * math.sin(angle)

return nx,ny

import math语句,导入math包,并允许后续代码引用math中的sin cos函数。

然后我们就可以同时获得返回值:>>> x, y = move(100, 100, 60, math.pi / 6)

>>> print(x, y)

151.96152422706632 70.0

但其实这是一个假象,Python返回的仍是一个单值:>>> r = move(100, 100, 60, math.pi / 6)>>> print(r)

(151.96152422706632, 70.0)

返回值是一个tuple。语法上,返回一个tuple可以省略括号,而多个变量可以同时接受一个tuple,按位置赋给对应的值,所以,Python的函数返回的多值就是返回的一个tuple,但写起来更方便。

小结:

定义函数时,需要确定函数名和参数个数;

如果有必要,可以对参数的数据类型做检查;

函数体内可以使用return随时返回函数结果;

函数执行完若没有return,自动return none;

函数可以同时返回多值,但其实就是返回一个tuple。

python定义空函数体_Python 2.2 定义函数相关推荐

  1. python 定义空集合_Python学习04.16:Python set集合详解

    Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同. 从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素之间 ...

  2. python基础入门笔记_Python基础入门笔记:函数

    函数 举些你可能已经使用过的函数例子:判断数据类型:type(str) 字符串类型数据转为整数型:int(str) ... 复制代码 通过观察规律不难发现,Python 中所谓的使用函数就是把你要处理 ...

  3. python主函数调用格式_Python的模块与函数

    一.概述Python的程序由包.模块和函数组成. 函数是一段可重用的有名称的代码.通过输入的参数值,返回需要的结果,并可存储在文件中供以后使用.几乎任何Python代码都可放在函数中.Python为函 ...

  4. python数据分析函数大全_python中数据分析常用函数整理

    一. apply函数 作用:对 DataFrame 的某行/列应用函数之后,Apply 返回一些值.函数既可以使用默认的,也可以自定义.注意:在第二个输出中应用 head() 函数,因为它包含了很多行 ...

  5. python 如何定义空字典_python字典中如何添加键值对

    添加键值对 首先定义一个空字典 1 >>> dic={} 直接对字典中不存在的key进行赋值来添加 1 2 3 >>> dic['name']='zhangsan' ...

  6. python定义空字典_python字典空值

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为defaul ...

  7. python怎么定义空矩阵_python 空矩阵

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 稀疏矩阵不必以标准矩阵形式表示. 有很多方法可以缓解这种标准形式给我们的计算系统 ...

  8. python定义空集合_Python 学习笔记 - 集合

    Python 集合 集合(set)是无序的.不重复的元素序列. 创建集合 使用花括号 { } 或者 set() 函数创建集合.但是,创建空的集合必须使用 set(),因为花括号是用于创建字典(Dict ...

  9. python怎么定义空矩阵_Python创建一个空的稀疏矩阵

    我试图将一些真实数据解析为一个.mat对象,以便在我的 matlab脚本中加载. 我收到此错误: TypeError: 'coo_matrix' object does not support ite ...

最新文章

  1. 用ASP.NET AJAX框架扩展HTML Map控件
  2. 新建文件的UID和GID
  3. Django 07. django框架模型之增删改查基本操作
  4. d3 v5 api select
  5. 独家 | 一文读懂语音识别(附学习资源)
  6. 1.2 Linux的网络配置和连接工具
  7. 使用linux批量引物设计,使用SSRMMD便捷、迅速与准确地进行:SSR位点检测,多态性SSR筛选,与批量SSR引物设计...
  8. 在Java编程中,为什么char类型数组可以直接用数组名打印,而其他类型数组打印结果而是地址值。
  9. 94 - 绘制谢尔宾斯基三角形
  10. 用自己的域名配置动态域名解析(DDNS)
  11. C++:乱码之字符串编码
  12. 天池比赛TASK3打卡
  13. linux搭建ssh服务器,并用xshell远程连接
  14. tensorflow:自定义op
  15. Fork/Join框架基本使用
  16. 某知名支付系统的架构演进权威分析
  17. .NET 5:.NET Framework和.NET Core的合并意味着什么
  18. JAVA实现输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
  19. mysql 中abs函数_Mysql常用函数
  20. {:0>5d} python format占位输出

热门文章

  1. Quill – 可以灵活自定义的开源的富文本编辑器
  2. 的clear会清空内存吗_Python内存分配时有哪些不为你知的小秘密?
  3. mount: 未知的文件系统类型“vboxsf”_好程序员云计算学习路线教程大纲课件:Mount 挂载详解...
  4. 调度失败:执行器地址为空_三千字带你搞懂XXL-JOB任务调度平台
  5. python 多线程读写文件_Python多线程同步---文件读写控制方法
  6. python有float行吗_python – 有什么方法可以在将pandas系列从str转换为float时跳过不可转换的行?...
  7. opus在arm的嵌入式平台上的移植和开发
  8. vs2017 Visual Studio 离线安装方法
  9. ecshop商品属性价不打折
  10. html兼容手机浏览器