Python | 函数

本文来自我的公众号wx_codingworld(编码世界)

函数定义

在编码世界中,函数经常被使用,而且几乎无处不在。看下面使用Python语言定义的一个函数:

#打印任意边界的斐波那契数列
def fib(n):
    """打印斐波那契数列"""
    a, b = 0, 1
    while a < n:
        print(b, end=" ")
        a, b = b, a + b
    print()

通过上面的例子,来学习一下如何定义一个函数:

  • def是定义一个函数的所使用的关键字。用来引入函数的,后面跟着定义函数名,形式参数(形式参数要用圆括号括起来),然后是冒号:。紧接着在下一行开始编写函数体,函数体是这个函数所要实现的功能代码。
  • 函数名,形式参数必须遵循Python的命名规则。
  • 函数体必须从定义函数名的下一行开始,而且必须缩进。
  • """打印斐波那契数列""",这个是函数的注释文档,说明函数的作用,可有可无,建议大家还是把这个注释加上,方便以后代码维护,尤其是在工程开发上,代码注释尤为重要,是评价代码质量的一个标准。

形式参数:也称作形参或者参数。他在函数中的作用就相当于定义一个变量,可以在函数体中使用。当调用函数的时候,需要为这个参数赋值。

函数的调用

定义函数,目的在于使用这个函数来做一些想做的事情,那么我们如何使用这个函数呢?其实很简单,如下:

#打印100以内的斐波那契数列
fib(100)

使用函数名,在圆括号内写入一个值,这个值我们称为实体参数,也称实参,实参的意义就是为函数中的形参赋值。

运行结果如下:

1 1 2 3 5 8 13 21 34 55 89 144 

在某些情况下,我们需要为函数起另外一个名字,可以这样写:

f = fib
f(100)

此时f就相当于fib这个函数的函数名,通过这两个名字,都可以调用这个函数。

函数的返回值

上文中定义的fib函数,调用后只打印了一个斐波那契数列,在实际开发中,我们更多的是想让函数做某些处理,并将处理后的结果返回,这个结果,我们称为函数的返回值。例如:

def fib2(n):
    """返回斐波那契数列"""
    result = []
    a, b = 0, 1
    while a < n:
        result.append(b)
        a, b = b, a + b
    return result

使用这个函数:

f100 = fib2(100)
print(f100)

结果:

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]

我们来解释一下这个函数,

  • 首先,定义函数要使用def关键字,然后定义函数名及参数;
  • result=[],定义一个list;
  • result.append(b),向result内追加一个值;
  • return result,从这个函数中,返回result里面的值,到此函数执行完毕。

return语句,就是函数返回值的关键,意思是从这个函数中返回一个值,如果return后面没有任何表达式或者值,则返回None。函数运行到return语句,则函数执行完毕。

多形参函数定义

在函数定义的时候,我们可以使用多个形参,每个形参之间使用逗号隔开,在调用的时候,注意实参的顺序,一定是按照形参定义的顺序。例如:

#长方形计算
def perimeter(width, height):
    """计算长方形周长"""
    per = (width + height) * 2
    return per
    
#调用
w60 = perimeter(60 , 50 )
print(w60)

上例中,60是width,50是height,要注意参数的顺序。

在定义函数形参的时候,可以为形参指定默认值,在函数调用时,可以不必为有默认值的形参写实参。例如:

def perimeter2(width, height=5):
    """计算长方形周长"""
    per = (width + height) * 2
    return per
    
#调用    
w10 = perimeter2(10)
w20 = perimeter2(20,10)
print(w10)
print(w20)

关键字参数

在多参数,并且参数有默认值的情况下,我们只想更改其中某一个参数,这个时候,我们就可以使用关键字参数。

关键字参数,其实函数的定义没有什么太大的变化,只是在函数调用的时候使用键值对的形式来作为实参。例如:

def perimeter3(width = 10 , height=5):
    """计算长方形周长"""
    per = (width + height) * 2
    return per
    
perimeter3(height=6)

例子中,为参数widthheight都定义了默认值,在调用的时候,我们只更改height,不想更改width,所以调用的时候,实参形式就是height=6

「 可变参数 」🔻

可变参数,意指在调用函数的时候,可以传递任意数量的参数。例如:

def concat(*args , sep="\\"):
    return sep.join(args)

#调用
print(concat("c:" , "Windows","Fonts"))

结果:

c:\Windows\Fonts

拥有可变参数的函数,在定义的时候,在参数前加*,如*args

总结

  • 定义函数,使用def关键字;
  • 函数名及参数要遵守Python的命名规则;
  • 形参和实参统称为参数;
  • 在参数传递的时候,要注意参数的类型,以及参数的顺序,特殊情况可以是用关键字参数的形式。
  • 带返回值的函数,使用return关键字,当函数运行到return语句,则函数执行结束;
  • 使用可变参数的时候,在参数前加*,例如*args
    原文作者:憨厚的老菜鸟
    原文地址: https://www.jianshu.com/p/9277c6d753c9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞