函数

Python内置了很多有用的函数,我们可以直接调用。

要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs(),只有一个参数。可以直接从Python的官方网站查看文档:

也可以在交互式命令行通过help(abs)查看abs函数的帮助信息。

调用方法一:直接使用,填写参数

调用abs函数:

>>> abs(100)

100

>>> abs(-20)

20

>>> abs(12.34)

12.34

调用函数的时候,如果传入的参数数量不对,会报TypeError的错误,并且Python会明确地告诉你:abs()有且仅有1个参数,但给出了两个:

>>> abs(1, 2)

Traceback (most recent call last):

File "", line 1, in

TypeError: abs() takes exactly one argument (2 given)

如果传入的参数数量是对的,但参数类型不能被函数所接受,也会报TypeError的错误,并且给出错误信息:str是错误的参数类型:

>>> abs('a')

Traceback (most recent call last):

File "", line 1, in

TypeError: bad operand type for abs(): 'str'

而max函数max()可以接收任意多个参数,并返回最大的那个:

>>> max(1, 2)

2

>>> max(2, 3, 1, -5)

3

数据类型转换

Python内置的常用函数还包括数据类型转换函数,比如int()函数可以把其他数据类型转换为整数:

>>> int('123')

123

>>> int(12.34)

12

>>> float('12.34')

12.34

>>> str(1.23)

'1.23'

>>> str(100)

'100'

>>> bool(1)

True

>>> bool('')

False

调用方法二:函数对象引用,赋值变量,变量中写参数

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:

>>> a = abs # 变量a指向abs函数

>>> a(-1) # 所以也可以通过a调用abs函数

1

二、定义函数

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

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

请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。

在Python交互环境中定义函数时,注意Python会出现...的提示。函数定义结束后需要按两次回车重新回到>>>提示符下:

┌────────────────────────────────────────────────────────┐

│Command Prompt - python - □ x │

├────────────────────────────────────────────────────────┤

│>>> def my_abs(x): │

│... if x >= 0: │

│... return x │

│... else: │

│... return -x │

│... │

│>>> my_abs(-9) │

│9 │

│>>> _ │

│ │

│ │

└────────────────────────────────────────────────────────┘

把my_abs()的函数定义保存为abstest.py文件了,那么,可以在该文件的当前目录下启动Python解释器,

用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名):

┌────────────────────────────────────────────────────────┐

│Command Prompt - python - □ x │

├────────────────────────────────────────────────────────┤

│>>> from abstest import my_abs │

│>>> my_abs(-9) │

│9 │

│>>> _ │

│ │

└────────────────────────────────────────────────────────┘

空函数

如果想定义一个什么事也不做的空函数,可以用pass语句:

def nop():

pass

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

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

if age >= 18:

pass

缺少了pass,代码运行就会有语法错误。

错误输入:

    输出:

正确输入:

    输出:

错误输入:

    输出:

参数检查

调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError:

>>> my_abs(1, 2)

Traceback (most recent call last):

File "", line 1, in

TypeError: my_abs() takes 1 positional argument but 2 were given

但是如果参数类型不对,Python解释器就无法帮我们检查。试试my_abs和内置函数abs的差别:

>>> 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'

当传入了不恰当的参数时,内置函数abs会检查出参数错误,而我们定义的my_abs没有参数检查,会导致if语句出错,出错信息和abs不一样。所以,这个函数定义不够完善。

让我们修改一下my_abs的定义,对参数类型做检查,只允许整数和浮点数类型的参数。

数据类型检查可以用内置函数isinstance()实现:

添加了参数检查后,如果传入错误的参数类型,函数就可以抛出一个错误:

输入:

  输出:

返回多个值

函数可以返回多个值吗?答案是肯定的。

比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标:

import math

def 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,但写起来更方便。

python调用函数怎么表示_Python---7函数(调用定义函数)相关推荐

  1. 《从问题到程序:用Python学编程和计算》——3.4 定义函数

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第3章,第3.4节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3. ...

  2. python中property方法有用_python中@property和property函数常见使用方法示例

    本文实例讲述了python中@property和property函数常见使用方法.分享给大家供大家参考,具体如下: 1.基本的@property使用,可以把函数当做属性用 class Person(o ...

  3. python函数的作用域_python学习第五篇 函数 变量作用域

    原博文 2019-07-18 23:40 − 函数 函数是组合好的,可以重复使用的,用来实现单一或相关联功能的代码片段作用 能提高应用的模块性和代码的重复利用率函数的创建 第一函数的规则 1.函数代码 ...

  4. python高阶函数看不懂_Python进阶:高阶函数的详细说明

    这篇文章讲述了Python进阶:高阶函数的详细说明有需要的朋友可以参考 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单 ...

  5. python在匿名函数作和_python之路——内置函数和匿名函数

    阅读目录 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的 ...

  6. python函数定义语句可执行_python学习笔记-定义函数

    python中定义函数的关键词是def,例如定义一个叫my_function的函数我们可以这么定义, 其中括号内的x,y为传入的参数. def my_function(): # function bo ...

  7. python计算复数的辐角_Python 自定义类中的函数和运算符重载

    如果你曾在字符串(str)对象上进行过 + 或 * 运算,你一定注意到它跟整数或浮点数对象的行为差异: >>> # 加法 >>> 1 + 2 3 >>& ...

  8. python map函数的作用_python语言基础之map函数,urlib.request,多线程

    1.map函数 map 是 Python 自带的内置函数,它的作用是把一个函数应用在一个(或多个)序列上,把列表中的每一项作为函数输入进行计算,再把计算的结果以列表的形式返回. map 的第一个参数是 ...

  9. python函数递归年龄_Python学习笔记4-递归函数

    一开始知道这个递归函数的时候,我的内心是崩溃的... 什么?还能自己调用自己?这是什么骚操作? 在数据结构与算法里有专门提到过这个递归思想. 那究竟什么样的问题可以用递归来解决呢? 我总结了三个条件: ...

  10. python中demo函数是什么意思_Python学习09:定义函数

    这次我们在上一次创建的com.second.function下创建Demo02.py 在Python中,定义一个函数要使用 def 语句,依次使用函数名.括号.括号中的参数和冒号 : ,然后在缩进块中 ...

最新文章

  1. Thinkphp 3.2.2 利用phpexcel完成excel导出功能
  2. win10只有edge浏览器能上网的解决方法
  3. 【转】C#中使用TransactionScope类(分布式事务) 和 锁
  4. qqbot python_Python3.6 QQBot 机器人 - 注册响应函数
  5. Delphi编程分割图片的方法
  6. 进化算法之粒子群算法介绍附代码——PSO
  7. C4D的几大主流渲染器!看完你就知道选择学习哪款了
  8. GAN (Generative Adversarial Nets 生成对抗网络)
  9. 银行业务系统(c/s架构、socket网络编程、多线程)
  10. 技术人要学会自我营销
  11. python中求差的函数_Python编程基础11:函数和模块
  12. ps中如何批量修改图片
  13. SpringBoot实现微信登录
  14. C语言-arc画一弧线功能
  15. web应用票据打印实现(四)
  16. 物联无线自动窗帘:窗帘收放更自如-智能家居
  17. 如何学习数据分析(总结自网易及B站up主)
  18. ios 9 10 11 air mirror 交互协议
  19. 刷脸支付服务商注定掀起一场商业革命
  20. scrapy 爬取壁纸

热门文章

  1. Python 模块(二)
  2. 用css、html编写一个两列布局的网页,名称为css.html ,要求左侧宽度为200px ,右侧自动扩展...
  3. 对PostgreSQL cmin和cmax的理解
  4. [转载] 财经郎眼20120423:长点心吧“两桶油”!
  5. Python的bool类型
  6. 网页html语言怎么看,怎样查看网页的css代码?
  7. python日期格式转换_python中有关时间日期格式转换问题
  8. git撤销分支上代码的修改
  9. C++数组指针不能自增1/自减1
  10. [FPGA]基于FPGA的数字跑表