Python教程系列 第一季

Python基础14

2020-10-24  本文已影响0人  粽子和小恺

第八章 函数

8.1 函数是什么

这一小节可以不看

从这一篇教程开始,我会让你明白Python没有你想象中的那么简单。
注意:Python的函数不同于数学函数。
数学函数:
定义:函数(function)的定义通常分为传统定义和近代定义,函数的两个定义本质是相同的,只是叙述概念的出发点不同,传统定义是从运动变化的观点出发,而近代定义是从集合、映射的观点出发。函数的近代定义是给定一个数集A,假设其中的元素为x,对A中的元素x施加对应法则f,记作f(x),得到另一数集B,假设B中的元素为y,则y与x之间的等量关系可以用y=f(x)表示,函数概念含有三个要素:定义域A、值域B和对应法则f。其中核心是对应法则f,它是函数关系的本质特征。
也即函数指一个量随着另一个量的变化而变化,或者说一个量中包含另一个量。
形式:

f(x) = kx
f(x) =  kx + b #直线
f(x) = ax² + bx + c #抛物线
f(x) = ax³ + bx² + cx + d #回归式抛物线
...

计算机函数:
定义:函数是指一段可以直接被另一段程序或代码引用的程序或代码。也叫做子程序、(OOP中)方法。

一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。在C语言中,子程序的作用是由一个主函数和若干个函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。
形式:

int main(){
#C
}

public static void main(String[] args){
#Java
}

def main():
    #Python

我们可以看出,Python中的函数定义是最简单的。

为什么要使用函数?百度百科中给出了如下结论:
在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。要善于利用函数,以减少重复编写程序段的工作量。

说句人话:函数有利于增强程序可读性,让程序更简洁。

8.2 定义函数的内容

在Python中,我们使用def()语句来定义函数,即:

def 函数名(*参数1,参数2...):
    函数的内容

正常的程序

例41:输出五个hello world:

 #方法1:
 print("hello world")
 print("hello world")
 print("hello world")
 print("hello world")
 print("hello world")
 #方法2:
 for i in range(0,5):
     print("hello world")
#方法3:
def hw(count):
     for i in range(0,count):
        print("hello world")
hw(5)

我觉得第3种方法更可读,你呢?

8.3 global和nonlocal关键字,内联和闭包函数

def f1():
    print("this is f1!")
    def f11():
        print("this is f11!")  

这时我们可以通过f1()调用,显示正常,但是我们调用f11时,却不会成功。因为Python无法在一级函数里找到f11()
这时,我们称f11()f1()的内联函数(Inline function)。
但如果我们的函数内有变量呢?我们可以使用nonlocal和global关键字。
它们的区别在哪里呢?我们来看一张图。


如果二级函数内有一个变量h,那么使用nonlocal h之后,我们可以在一级函数内使用h,使用global h之后,我们可以在主程序内使用h。
接着我们继续使用上面的例子,f1对f11内部作用域函数。使用一个变量赋值调用的方法称为闭包(closure)
不懂也没有关系,我们以后会举例子使你明白。
上一篇下一篇

猜你喜欢

热点阅读