Python中的函数(一)

函数是python中最重要,最基础的代码组织和代码复用方式。根据经验,如果你需要多次重复相同或类似的代码,就非常值得写一个可复用的函数。通过给一组python语句一个函数名,形成的函数可以使你的代码更加可读。
函数声明时使用def关键字,返回时使用return关键字

def function(x,y,z=1.5):
    if z > 1:
        return  z * (x+y)
    else:
        return  z / (x+y)

有多条返回语句是没有问题的。如果python达到函数的尾部时仍然没有遇到return语句,就会自动返回None。
每个函数都可以有位置参数和关键字参数。关键字参数最常用于指定默认值或者可选参数。在前面的函数中,x和y是位置参数,z是关键字参数。这意味着函数可以通过以下任意一种方式进行调用:

function(5,6,z=0.7)
0.06363636363636363

function(10,20)
45.0

function(3.14,7,3.5)
35.49

函数参数的主要限制是关键字参数必须跟在位置参数后。你可以按照任意顺序指定关键字参数,这可以让你不必强行记住函数参数的顺序,而只需要参数名指定。也可以使用关键字参数向位置参数传参,例如:

function(x = 5,y = 6, z = 7)
77

function(y = 6,x = 5, z = 7)
77

在部分场景中,这样做有助于代码可读性。

函数有两种连接变量的方式:全局本地。在python中另一种更贴切地描述变量作用于域的名称是命名空间。在函数内部,任意变量都默认分配到本地命名空间。本地命名空间是在函数被调用时生成的,并没有立即由函数的参数填充。当函数执行结束后,本地命名空间就会被销毁,例如以下函数:

def func():
    a = []
    for i in range(5):
        a.append(i)

a
NameError                                 Traceback (most recent call last)
<ipython-input-2-3f786850e387> in <module>()
----> 1 a

NameError: name 'a' is not defined

当调用func()时,空的列表a会被创建,五个元素被添加到列表,之后a会在函数退出时被销毁,假设我们像下面这样声明a:

a = []
def func():
    for i in range(5):
        a.append(i)
a
[]

在函数外部给变量赋值是可以的,但是那些变量必须使用global关键字声明为全局变量:

a = None
def a_variable():
    global a
    a = []
a_variable()

a
[]

global关键字的用法是通常全局变量用来存储系统中的某些状态。如果你发现你大量的使用了全局变量,可能表面你需要面向对象编程(使用类)
python编程时最方便的就是使用简单语法就可以从函数中返回多个值,例如:

def f():
    a =5
    b = 6
    c = 7
    return a,b,c
a,b,c = f()

a,b,c
(5, 6, 7)

在数据分析以及许多应用中,你可能会发现经常需要返回多个值。这里实质上是返回了一个对象,也就是元组,而元组之后又被拆包为多个结果变量。当然,我们也可以使用下面的代码来替代前面的例子:

return_value = f()

return_value
(5, 6, 7)

在这个例子中,return_value是一个包含3个元素的元组。像之前那样一次返回多个值还有一种潜在的,更有吸引力的实现:

def f():
    a = 5
    b = 6
    c = 7
    return {'a':a,'b':b,'c':c}
return_value = f()

return_value
{'a': 5, 'b': 6, 'c': 7}

具体用哪种技术取决于你需要做什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格陵Lan丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值