Python06——函数与lambda表达式

函数心得

在编程过程中,通常可以将某一种常用的方法编写成函数的形式。使用不同的编程语言,函数会有不同的表达形式,例如:

关于格式

C/C++/C#格式:

void Fun(void* arg)
{
	// do something
}

Python格式:

def fun(arg):
	# do something
	pass	

Matlab格式:

function fun(arg)
% do something
end

关于注释

良好的注释可以很好的帮助使用者理解和运用程序,是方便人与人之间沟通交流使用的文本。

Python提供了内置的函数帮助文档。只要按照既定格式输入注释,便可以使用help函数进行查询。

C/C#使用其他程序编辑器,例如VSCode或者Visual Studio过程中,按照既定的格式输入注释,可以在运行过程中通过智能联想功能,实时查看函数的说明,以及输入形参的介绍。

关于形参

形参是函数运行过程中,外界输入的必要数据。

C/C#中的形参类型离不开常用的数据类型。在Python中的形参具有以下类型:

  1. 位置参数。这类参数可以理解为常用的数据类型,其值未知,需要用户或者调用这个函数的函数提供。
  2. 默认参数。这类参数有其默认值,第三方可选输入参数。
  3. 可变参数。这类参数的个数是可以变化的,其实其本质是将n个参数组装为元组,然后在内部调用过程中进行固定格式解包的参数。
  4. 关键字参数。这类参数的使用方法与可变参数类似,但是在封装过程中采用了不同的数据类型,可变参数使用元组进行封装,关键字参数使用字典类型进行封装。
  5. 命名关键字参数。这类参数的特点是需要在使用过程中明确其参数名字。
  6. 参数组合。

关于返回值

当函数运行完毕后,可以返回一个变量。

在Python函数中,当函数运行完毕后直接使用return即可返回任意的函数类型。

在C中,由于数据指针的灵活使用,也可以通过形参作为返回值。

在C#中,出于运行安全的考虑,C#通常不允许直接操作指针,不过其提供了ref关键字,可以通过该关键字作为返回值。

关于变量作用域

Python中的变量作用域分为两层,分别是:全局变量、局部作用域。在访问过程中分三种情况:访问全局变量需要通过global关键字进行声明、局部变量可以直接进行访问、内嵌函数使用闭包中的变量时,需要使用nonlocal关键字。

这里涉及到一个闭包的概念,闭包操作是一个重要的语法结构,是一种特殊的内嵌函数。这种结构很有意思,需要深入了解。

Lambda表达式心得

lambda表达式可以理解为函数的简写形式。有大量的函数并不需要很长的变成行数或者尽在少量的地方进行调用,因此为方便,将函数以lambda形式进行表示,可以达到函数简写,编程格式简化的特点。

Python:

odd = lambda x: x % 2 == 1

C#:

bool Odd(int x) => x % 2 == 1;

习题

'''
利用python解决汉诺塔问题?
有a、b、c三根柱子,在a柱子上从下往上按照大小顺序摞着64片圆盘,把圆盘从下面开始按大小顺序重新摆放在c
柱子上,尝试用函数来模拟解决的过程。(提示:将问题简化为已经成功地将a柱上面的63个盘子移到了b柱)
'''
'''
@Author: your name
@Date: 2020-08-02 18:47:03
@LastEditTime: 2020-08-02 19:03:03
@LastEditors: Please set LastEditors
@Description: In User Settings Edit
@FilePath: \python\fun07.py
'''
def Hanoi():
    a = dict()
    for i in range(1,64):
        a[str(i)] = i
    print(a)
    
    b = dict()
    for i in range(1,64):
        b[str(64 - i)] = a.pop(str(i))
    print(b)
    c = dict()
    for i in range(1,64):
        c[str(64 - i)] = b.pop(str(i))
    print(c)

Hanoi()
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页