Python函数(函数定义、函数调用)用法详解 - C语言中文网
文章推薦指數: 80 %
函数是Python 程序的重要组成单位,一个Python 程序可以由很多个函数组成。
前面我们己经用过大量函数,如len()、max() 等,使用函数是真正开始编程的第一步。
首页
教程
VIP会员
一对一答疑
辅导班
公众号
首页
C语言教程
C++教程
Python教程
Java教程
Linux入门
更多>>
目录
Python
1
Python编程基础
2
Python编程环境搭建
3
变量类型和运算符
4
列表、元组、字典和集合
5
Python字符串常用方法
6
Python流程控制
7函数和lambda表达式7.1Python函数7.2Python函数值传递和引用传递(包括形式参数和实际参数)7.3深度剖析Python函数参数传递的内部机制7.4Python位置参数7.5Python关键字参数7.6Python默认参数7.7Python函数如何传入任意个参数?7.8Python如何用序列中元素给函数传递参数?7.9PythonNone(空值)7.10Pythonreturn函数返回值7.11Python函数怎样返回多个值?7.12Pythonpartial偏函数7.13从实例出发,攻克Python函数递归7.14Python变量作用域(全局变量和局部变量)7.15Python如何在函数中使用同名的全局变量?7.16Python局部函数7.17更高级的Python函数用法,玩转Python函数!7.18Python闭包函数7.19Pythonlambda表达式(匿名函数)7.20Pythoneval()和exec()函数7.21使用exec()和eval(),不要犯这样的低级错误!7.22Python函数式编程(map()、filter()和reduce())详解7.23函数注解,号称Python3新增的最独特的功能!7.24如何才能提高代码颜值,让代码变得有逼格?
8
Python类和对象
9
类特殊成员(属性和方法)
10
Python异常处理机制
11
Python模块和包
12
Python文件操作(I/O)
首页>Python>函数和lambda表达式
Python函数(函数定义、函数调用)用法详解
Python中函数的应用非常广泛,前面章节中我们已经接触过多个函数,比如input()、print()、range()、len()函数等等,这些都是Python的内置函数,可以直接使用。
除了可以直接使用的内置函数外,Python还支持自定义函数,即将一段有规律的、可重复使用的代码定义成函数,从而达到一次编写、多次调用的目的。
举个例子,前面学习了len()函数,通过它我们可以直接获得一个字符串的长度。
我们不妨设想一下,如果没有len()函数,要想获取一个字符串的长度,该如何实现呢?请看下面的代码:
n=0
forcin"http://c.biancheng.net/python/":
n=n+1
print(n)
程序执行结果为:
30
要知道,获取一个字符串长度是常用的功能,一个程序中就可能用到很多次,如果每次都写这样一段重复的代码,不但费时费力、容易出错,而且交给别人时也很麻烦。
所以Python提供了一个功能,即允许我们将常用的代码以固定的格式封装(包装)成一个独立的模块,只要知道这个模块的名字就可以重复使用它,这个模块就叫做函数(Function)。
比如,在程序中定义了一段代码,这段代码用于实现一个特定的功能。
问题来了,如果下次需要实现同样的功能,难道要把前面定义的代码复制一次?如果这样做实在太傻了,这意味着每次当程序需要实现该功能时,都要将前面定义的代码复制一次。
正确的做法是,将实现特定功能的代码定义成一个函数,每次当程序需要实现该功能时,只要执行(调用)该函数即可。
其实,函数的本质就是一段有特定功能、可以重复使用的代码,这段代码已经被提前编写好了,并且为其起一个“好听”的名字。
在后续编写程序过程中,如果需要同样的功能,直接通过起好的名字就可以调用这段代码。
下面演示了如何将我们自己实现的len()函数封装成一个函数:
#自定义len()函数
defmy_len(str):
length=0
forcinstr:
length=length+1
returnlength
#调用自定义的my_len()函数
length=my_len("http://c.biancheng.net/python/")
print(length)
#再次调用my_len()函数
length=my_len("http://c.biancheng.net/shell/")
print(length)
程序执行结果为:
30
29
如果读者接触过其他编程语言中的函数,以上对于函数的描述,肯定不会陌生。
但需要注意的一点是,和其他编程语言中函数相同的是,Python函数支持接收多个(≥0)参数,不同之处在于,Python函数还支持返回多个(≥0)值。
比如,上面程序中,我们自己封装的my_len(str)函数,在定义此函数时,我们为其设置了1个str参数,同时该函数经过内部处理,会返回给我们1个length值。
通过分析my_len()函数这个实例不难看出,函数的使用大致分为2步,分别是定义函数和调用函数。
接下来一一为读者进行详细的讲解。
Python函数的定义
定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具。
定义函数需要用def关键字实现,具体的语法格式如下:
def函数名(参数列表):
//实现特定功能的多行代码
[return[返回值]]
其中,用[]括起来的为可选择部分,即可以使用,也可以省略。
此格式中,各部分参数的含义如下:
函数名:其实就是一个符合Python语法的标识符,但不建议读者使用a、b、c这类简单的标识符作为函数名,函数名最好能够体现出该函数的功能(如上面的my_len,即表示我们自定义的len()函数)。
形参列表:设置该函数可以接收多少个参数,多个参数之间用逗号(,)分隔。
[return[返回值]]:整体作为函数的可选参参数,用于设置该函数的返回值。
也就是说,一个函数,可以用返回值,也可以没有返回值,是否需要根据实际情况而定。
注意,在创建函数时,即使函数不需要参数,也必须保留一对空的“()”,否则Python解释器将提示“invaildsyntax”错误。
另外,如果想定义一个没有任何功能的空函数,可以使用pass语句作为占位符。
例如,下面定义了2个函数:
#定义个空函数,没有实际意义
defpass_dis():
pass
#定义一个比较字符串大小的函数
defstr_max(str1,str2):
str=str1ifstr1>str2elsestr2
returnstr
虽然Python语言允许定义个空函数,但空函数本身并没有实际意义。
另外值得一提的是,函数中的return语句可以直接返回一个表达式的值,例如修改上面的str_max()函数:
defstr_max(str1,str2):
returnstr1ifstr1>str2elsestr2
该函数的功能,和上面的str_max()函数是完全一样的,只是省略了创建str变量,因此函数代码更加简洁。
Python函数的调用
调用函数也就是执行函数。
如果把创建的函数理解为一个具有某种用途的工具,那么调用函数就相当于使用该工具。
函数调用的基本语法格式如下所示:
[返回值]=函数名([形参值])
其中,函数名即指的是要调用的函数的名称;形参值指的是当初创建函数时要求传入的各个形参的值。
如果该函数有返回值,我们可以通过一个变量来接收该值,当然也可以不接受。
需要注意的是,创建函数有多少个形参,那么调用时就需要传入多少个值,且顺序必须和创建函数时一致。
即便该函数没有参数,函数名后的小括号也不能省略。
例如,我们可以调用上面创建的pass_dis()和str_max()函数:
pass_dis()
strmax=str_max("http://c.biancheng.net/python","http://c.biancheng.net/shell");
print(strmax)
首先,对于调用空函数来说,由于函数本身并不包含任何有价值的执行代码,也没有返回值,应该调用空函数不会有任何效果。
其次,对于上面程序中调用str_max()函数,由于当初定义该函数为其设置了2个参数,因此这里在调用该参数,就必须传入2个参数。
同时,由于该函数内部还使用了return语句,因此我们可以使用strmax变量来接收该函数的返回值。
因此,程序执行结果为:
http://c.biancheng.net/shell
为函数提供说明文档
前面章节讲过,通过调用Python的help()内置函数或者__doc__属性,我们可以查看某个函数的使用说明文档。
事实上,无论是Python提供给我们的函数,还是自定义的函数,其说明文档都需要设计该函数的程序员自己编写。
其实,函数的说明文档,本质就是一段字符串,只不过作为说明文档,字符串的放置位置是有讲究的,函数的说明文档通常位于函数内部、所有代码的最前面。
以上面程序中的str_max()函数为例,下面演示了如何为其设置说明文档:
#定义一个比较字符串大小的函数
defstr_max(str1,str2):
'''
比较2个字符串的大小
'''
str=str1ifstr1>str2elsestr2
returnstr
help(str_max)
#print(str_max.__doc__)
程序执行结果为:
Helponfunctionstr_maxinmodule__main__:
str_max(str1,str2)
比较2个字符串的大小
上面程序中,还可以使用__doc__属性来获取str_max()函数的说明文档,即使用最后一行的输出语句,其输出结果为:
比较2个字符串的大小
关注公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。
本公众号由站长亲自运营,长期更新,坚持原创,专注于分享创业故事+学习历程+工作记录+生活日常+编程资料。
微信扫码关注公众号
精美而实用的网站,分享优质编程教程,帮助有志青年。
千锤百炼,只为大作;精益求精,处处斟酌;这种教程,看一眼就倾心。
关于网站|
关于站长|
如何完成一部教程|
公众号|
联系我们|
网站地图
Copyright©2012-2022biancheng.net,冀ICP备2022013920号,冀公网安备13110202001352号
↑
延伸文章資訊
- 1Python 入門筆記:函式基礎,什麼是函式?什麼是回傳值return?
定義函式
- 2[Python教學]5個必知的Python Function觀念整理
今天要來教大家如何建構自己的 Python函式(Function),就是能夠讓你的程式 ... 預設值參數(Default Argument):在函式定義的參數中,將可以選擇性傳入 ...
- 3Python 函数 - 菜鸟教程
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数你 ...
- 4Python :: 定義函式
def 函式. 這時可以定義函式來封裝程式片段,將流程中引用不同數值或變數的部份設計為參數,例如 ...
- 5Python入門(二)函數基礎 - 數據分析那些事- Medium
函數(Functions)是指可重複使用的程式片段。它們允許你為某個程式碼塊賦予名字,允許你透過這一特殊的名字在你的程式任何地方來運行代碼塊 ...