python调用函数怎么表示_Python---7函数(调用定义函数)
函数
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函数(调用定义函数)相关推荐
- 《从问题到程序:用Python学编程和计算》——3.4 定义函数
本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第3章,第3.4节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3. ...
- python中property方法有用_python中@property和property函数常见使用方法示例
本文实例讲述了python中@property和property函数常见使用方法.分享给大家供大家参考,具体如下: 1.基本的@property使用,可以把函数当做属性用 class Person(o ...
- python函数的作用域_python学习第五篇 函数 变量作用域
原博文 2019-07-18 23:40 − 函数 函数是组合好的,可以重复使用的,用来实现单一或相关联功能的代码片段作用 能提高应用的模块性和代码的重复利用率函数的创建 第一函数的规则 1.函数代码 ...
- python高阶函数看不懂_Python进阶:高阶函数的详细说明
这篇文章讲述了Python进阶:高阶函数的详细说明有需要的朋友可以参考 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单 ...
- python在匿名函数作和_python之路——内置函数和匿名函数
阅读目录 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的 ...
- python函数定义语句可执行_python学习笔记-定义函数
python中定义函数的关键词是def,例如定义一个叫my_function的函数我们可以这么定义, 其中括号内的x,y为传入的参数. def my_function(): # function bo ...
- python计算复数的辐角_Python 自定义类中的函数和运算符重载
如果你曾在字符串(str)对象上进行过 + 或 * 运算,你一定注意到它跟整数或浮点数对象的行为差异: >>> # 加法 >>> 1 + 2 3 >>& ...
- python map函数的作用_python语言基础之map函数,urlib.request,多线程
1.map函数 map 是 Python 自带的内置函数,它的作用是把一个函数应用在一个(或多个)序列上,把列表中的每一项作为函数输入进行计算,再把计算的结果以列表的形式返回. map 的第一个参数是 ...
- python函数递归年龄_Python学习笔记4-递归函数
一开始知道这个递归函数的时候,我的内心是崩溃的... 什么?还能自己调用自己?这是什么骚操作? 在数据结构与算法里有专门提到过这个递归思想. 那究竟什么样的问题可以用递归来解决呢? 我总结了三个条件: ...
- python中demo函数是什么意思_Python学习09:定义函数
这次我们在上一次创建的com.second.function下创建Demo02.py 在Python中,定义一个函数要使用 def 语句,依次使用函数名.括号.括号中的参数和冒号 : ,然后在缩进块中 ...
最新文章
- Thinkphp 3.2.2 利用phpexcel完成excel导出功能
- win10只有edge浏览器能上网的解决方法
- 【转】C#中使用TransactionScope类(分布式事务) 和 锁
- qqbot python_Python3.6 QQBot 机器人 - 注册响应函数
- Delphi编程分割图片的方法
- 进化算法之粒子群算法介绍附代码——PSO
- C4D的几大主流渲染器!看完你就知道选择学习哪款了
- GAN (Generative Adversarial Nets 生成对抗网络)
- 银行业务系统(c/s架构、socket网络编程、多线程)
- 技术人要学会自我营销
- python中求差的函数_Python编程基础11:函数和模块
- ps中如何批量修改图片
- SpringBoot实现微信登录
- C语言-arc画一弧线功能
- web应用票据打印实现(四)
- 物联无线自动窗帘:窗帘收放更自如-智能家居
- 如何学习数据分析(总结自网易及B站up主)
- ios 9 10 11 air mirror 交互协议
- 刷脸支付服务商注定掀起一场商业革命
- scrapy 爬取壁纸
热门文章
- Python 模块(二)
- 用css、html编写一个两列布局的网页,名称为css.html ,要求左侧宽度为200px ,右侧自动扩展...
- 对PostgreSQL cmin和cmax的理解
- [转载] 财经郎眼20120423:长点心吧“两桶油”!
- Python的bool类型
- 网页html语言怎么看,怎样查看网页的css代码?
- python日期格式转换_python中有关时间日期格式转换问题
- git撤销分支上代码的修改
- C++数组指针不能自增1/自减1
- [FPGA]基于FPGA的数字跑表