返回介绍

3.1 创建函数

发布于 2024-01-21 22:13:25 字数 2003 浏览 0 评论 0 收藏 0

1.def语句

我们可以用def语句创建函数,格式为:def fun_name(par1,pa2,…):由def关键字,函数名和参数表组成。先举一个简单的例子:

def  fun():
print  'hello,world'

这样就定义了一个fun函数,它没有参数,也没有返回值,仅仅打印出“hello,world”。下面再定义一个有参数也有返回值的函数。

def  hello(your_name):
    # your_name表示你的名字,格式是字符串
    return  'Hello '+your_name

这个函数称为hello,输入参数是your_name,返回加上hello的字符串。程序创建函数后,执行s=hello('Tom')即得到一个新的字符串“Hello Tom”并赋值给s。Python的简洁性可以从函数中体现,Python的参数也不需要声明数据类型,但这也有一定的弊端,程序员可能会因不清楚参数的数据类型而输入错误的参数,例如上面的函数若执行hello(1)就会报错。所以一般在函数的开头注明函数的用途、输入和输出。

return语句用于返回一个结果对象。Python可以没有返回值,可以有一个返回值,也可以有多个返回值,返回值的数据类型没有限制。当程序执行到函数中的return语句时,就会将指定的值返回并结束函数,如果return后面还有语句,那些语句将不会被执行。所以也可以仅仅用一个return结束函数。在其他语言中很少允许多个返回值,举一个Python有多个返回值函数的例子:

def     maxmin(a,b)
    # a,b为两个数值数据,程序返回它们从大到小排列的结果
    if a>b:
        return  a,b
    else:
        return  b,a执行
big,
small = maxmin(
2,
4)后,
big=4,
small=2。

2.lambda语句

Python允许使用lambda语句创建匿名函数 ,也就是说函数没有具体的名称。可能读者会产生疑惑,函数没有了名称应该不会是一件好事。但实际上,使用Python编写一些执行脚本时,使用lambda省去了定义函数的过程,代码变得精简。对于一些抽象的、不会在其他地方复用的函数,有时候给函数命名也是个难题(需要避免函数重名),而使用lambda则不需要考虑函数命名的问题。

lamber语句中,冒号前是函数参数,若有多个函数使用逗号分隔,冒号右边是返回值。如此便构建了一个函数对象,def语句也是创建一个函数对象,只是lambda创建的函数对象没有名字。

>>>g = lambda x : x+1
>>>print g
<function <lambda> at 0x030EAEF0>
>>>g(1)
2

使用lamber函数应该注意下面4点:

1)lambda定义的是单行函数,如果需要复杂的函数,应使用def语句。

2)lamdda参数列表可以包含多个函数,如lambda x,y:x+y。

3)lambda语句有且只有一个返回值。

4)lambda语句中的表达式不能含有命令,而且仅限一条表达式。

举一个例子,Python的数学库中只有以自然底数e和10为底的对数函数,下面我们使用lambda函数创建指定某个数为底的对数函数,如代码清单3-1所示。

代码清单3-1 匿名函数

from math import log  # 引入
Python数学库的对数函数
# 此函数用于返回一个以
base为底的匿名对数函数
def make_logarithmic_function(base):
    return lambda x:log(x,base)  
# 创建了一个以
3为底的匿名对数函数,并赋值给了
My_LF
My_LF = make_logarithmic_function(3)
# 使用
My_LF调用匿名函数,参数只需要真数即可,底数已设置为
3。而使用
log()函数需要同时指定真数和对数。如果我们每次都是求以
3为底数的对数,使用
My_LF更方便。
print My_LF(9)
# result: 2.0

*代码详见:示例程序/code/3-1.py

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文