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

函数

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

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

1261674-20180824181336665-874211467.png

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

1261674-20180824180939286-1417076480.png

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

调用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

1261674-20180824181032125-304779534.png

数据类型转换

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函数为例:

1261674-20180824181936840-441207395.png

1261674-20180824185549979-1279840246.png

请注意,函数体内部的语句在执行时,一旦执行到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,代码运行就会有语法错误。

错误输入:

1261674-20180824183342719-1478757559.png    输出:

1261674-20180824183415972-724332291.png

正确输入:

1261674-20180824183431755-541852236.png    输出:

1261674-20180824183451459-2096209649.png

错误输入:

1261674-20180824183525619-102240559.png    输出:

1261674-20180824183542286-1521540280.png

参数检查

调用函数时,如果参数个数不对,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()

1261674-20180824184234225-2090658564.png

>>> abs('A')

Traceback (most recent call last):

File "", line 1, in

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

1261674-20180824184246164-1457064800.png

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

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

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

1261674-20180824184511517-892726340.png

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

输入:

1261674-20180824185854848-286200846.png  输出:

1261674-20180824184341809-1032155262.png

返回多个值

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

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

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

输入:

1261674-20180824185947593-2020126520.png  输出:

1261674-20180824185958334-1983726936.png

但其实这只是一种假象,Python函数返回的仍然是单一值:

>>> r = move(100, 100, 60, math.pi / 6)

>>> print(r)

(151.96152422706632, 70.0)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Android studio 的Glide 4.1.0第三方jar包如何导入libs目录

很多人在让自己的安卓实现导入外部的图片资源的时候遇到一系列的问题,今天就来好好解决 首先,相去github的官网下载这个jar包,下载任意一个即可,注意:你的网络可能会被墙,你可以换成手机的热点去下载&#…

没有显示屏怎么启动服务器,中关村xp系统提示“没有启动服务器服务”如何解决...

通常情况下,windowsxp系统电脑发生故障都会弹出警告提示,然后用户就可以利用这些信息判断出错来源从而解决问题。比如,一位中关村XP系统用户反馈自己的电脑发生故障,弹出警告提示:没有启动服务器服务。这该如何处理呢&…

python如何改变入参的值_从事数据分析3年后,发现用python入门数据分析这三本书必看!...

做数据分析为什么选择python?为什么选择python来做数据分析?先来看一下用python做数据分析有什么优势1、python在数据分析方面有非常专业的模块,很多常用功能,在做数据分析时非常方便。2、python相比于其他计算机编程,…

Android studio使用手册说明

Android studio project约是eclipse workspace Android studio module是eclipse project 首先,从eclipse到Android studio是一个必然的过程了,Android studio集成了eclipseADT插件开发安卓APK,所有人都是希望越方便越好,不会去自…

Android studio的设置界面介绍

1.编译按钮 2.运行选择按钮 3.运行按钮 4.设置界面 5.设置页面布局 6.系统保存设置 7.密码设置 8.下载按钮: 9.数据传递: 11.改色: 12.自定义完成指定代码的检查 13.Notifications 14.宏设置 15.SDK管理,可以直接导入自己的SDK&am…

打印机显示rpc服务器,win10打印机出现RPC服务器不可用的处理办法

win10打印机出现RPC服务器不可用的处理办法?大家在使用打印机打印的时候,多多少少都会碰到一些这样那样的故障。这不就有win10系统的网友,在使用打印机打印的时候,提示:RPC服务器不可用。出现这样的故障,大…

Android Studio的快捷键图文并茂

首先在设置界面可以看到很多快捷键,并支持将之前软件的快捷键习惯导入安卓开发中,默认的就是安卓开发的快捷键,所以基本不需要一些学习成本 双击shirf可以跳出查找界面 修改快捷键 按住ctrlshirftalt并用鼠标单击要添加代码的位置。就可以实现…

python中str和input_python中input()与raw_input()的区别分析

使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的 纯数字输入 当输入为纯数字时 input返回的是数值类型,如int,float raw_inpout返回的是字符串类型,string类型 输入字符串为表达式 input会计算在字符…

解决Android studio 加载不出网络图片的步骤

第一:网络问题,好像连家里的wifi没有手机的wifi能下载那个github的压缩包, 第二:版本问题,我把导入的包降低版本了,系统匹配成功, 第三:布局的时候需要把宽度高度的比例和加载的网…

现代操作系统初理解

1.现代操作系统是由中断驱动的:如果没有进程要执行,没有I/O 设备要服务,也没有用户请求要响应,操作系统将会静静地等待某件事件的发生。 2.操作系统和用户共享了计算机系统的硬件和软件:既然是共享了,就可…

python没有菜单栏_解决Jupyter Notebook开始菜单栏Anaconda下消失的问题

出现的问题状况是:在Anaconda文件下,少了Jupyter Notebook快捷键,不然每次都要打开Anaconda Navigator再打开Jupyter Noterbook,有点麻烦。为了避免将Anaconda软件卸载重装才出现Jupyter Notebook,就去寻找解决办法。首…

小米机顶盒显示网络无法连接服务器,小米盒子无线网络连接不上怎么回事 - 卡饭网...

无线网络连接不上怎么回事,如何解决无线网络连接不上怎么回事,如何解决 无线网络连接不上怎么回事,如何解决,很多电脑用户可能会遇到这个问题。 一:先检查下你的无线网络开关是否打开,没打开请打开 二:检查你的无线网络…

联想服务器忘记系统登录密码,联想路由器登陆密码忘记了怎么办

路由器是互联网系统中的重要组成部分,是连接因特网中局域网和广域网的设备,它可以根据信道实际的情况选择最合适的路径,那么你知道联想路由器登陆密码忘记了怎么办吗?下面是学习啦小编整理的一些关于联想路由器登陆密码忘记了的相关资料&…

编写五子棋的完整python代码_python实现五子棋游戏

本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 话不多说,直接上代码: 全部工程文件,在GitHub:五子棋 效果预览:#!/usr/bin/env python3 #-*- coding:utf-8 -*- …

服务器网站显示多协议,解决高防IIS8服务器https协议多个同时访问的解决方法

iis提示:至少一个其他网站正在使用同一个https绑定,而次绑定用另一个证书配置。确实要重用https绑定并将其他网站重新指定为使用新证书吗?网友解释:SNI指是一项用于改善SSL/TLS的技术,在SSLv3/TLSv1中被启用。它允许客户端在发起S…

如何计算实际物理地址?

1.确认物理地址: 2.由逻辑地址的页号去页表中查找对应的物理内存的页号 3.通过物理页号加上偏移量得到实际物理地址 例如:已知每页大小为1024byte(逻辑页表和实际内存分页的大小都是1024byte) 那么(3,1023&#xf…

python高效处理文件_使用Python语言高效地处理一个文本文件

使用Python语言高效地处理一个文本文件: # -- encoding: utf-8 -- # 脚本功能:在指定的文件中查找指定的字符串 # 此脚本接受两个参数 # 参数1:指定一个文件名,在这个文件中查找字符串 # 参数2:指定一个字符串用于查找…

zabbix加vm虚拟服务器,zabbix监控vmware exsi主机的图文步骤

1、进入虚拟化vcenter中,用浏览器登录(客户端没找到地方设置),新建一个只读用户zabbix。2、 登录vcenter客户端,将新建用户授权为只读授权过后可以使用新账号登录测试一下。3、开启exsi主机Managed Object Browser (MOB)功能,没有就默认开着的…

服务器开设虚拟主机,服务器自动开设虚拟主机

服务器自动开设虚拟主机 内容精选换一换Linux操作系统XEN实例变更为KVM实例前,必须已完成必要的驱动安装和配置。当您需要变更的Linux操作系统的XEN实例比较多时候,推荐您使用本节的批量自动配置的方法安装驱动,通过自动化脚本的方式批量为Li…

服务器c的环境配置文件,配置linux服务器环境(jdk+tomcat+mysql+nginx+redis+svn+nexus的maven私服)...

一.安装jdk:1.远程连接工具我用的是xshell6;切换到root用户2.创建安装目录:创建安装目录3.将jdk上传到目录下,并解压:上传文件解压tar zxvf jdk-8u191-linux-x64.tar.gz文件解压后4.修改配置文件:vim /etc/…