python学习系列(七)函数和Lambda表达式

时间:2021-05-07 18:33:32

前面几章全是基础,语法和数据类型;这一章开始函数的学习~

函数,编程语言灵魂,函数的调用是重点,它是完成逻辑功能的工具,使我们的 code 逻辑清晰。

首先,函数语法格式:

def 函数名(参数列表):
    函数体

看个实例:

def fun(name, age="30"):
    print("我是:", name)
    print("今年: " + age)
    return
fun(name="laowang", age="40")  # 函数调用

这是函数申明以及调用的使用方法


值得一说的是,python 函数里的参数,不像C#,C++在函数声明时就定义好参数类型的,python里的参数有以下几类:

必须参数:在某些函数里,如果不传参数,就会报错,如:

# 打印任何传入的参数
def printme(str):
    print(str);
    return;
# 调用printme函数
printme();
没有传参的运行结果:

Traceback (most recent call last):
  File "H:/徐远军/Pythpn_Learn_Projects/Learn_01/Learn_01_Loop", line 75, in <module>
    printme();
TypeError: printme() missing 1 required positional argument: 'str'

正确结果:

printme("hello老王")

hello老王

默认参数:

# 函数声明 def 关键字
def fun(name, age="30"):
    print("我是:", name)
    print("今年: " + age)
    return
fun(name="laowang")  # 函数调用

运行结果:

我是: laowang
今年: 30
可以看到,在函数调用时候,传参只传进了一个 name = "laowang",age 参数没有传,结果却显示了 age:30,所以在函数声明时已经初始化过的变量参数就是默认参数,在函数调用时候就不用再次传参;


关键字参数:

def printme(str):
    print(str);
    return;
# 调用printme函数
printme("hello老王")

运行结果:

hello老王 
str 是 python 里基本数据类型之一的 字符串 关键字,在 printme(str)函数里当作参数使用,此时 str 就是关键字参数;

不定长参数:

def fun1(a,*b):
    print("定长参数a:",a)
    print("下面是不定长参数C:")
    for c in b:
        print(c,end=" ")
    return
fun1(1,2,4,5,6,7,8)
运行结果:

定长参数a: 1
下面是不定长参数C:
2 4 5 6 7 8 

*b 就是一个不定长参数,使用 " * " 标记的参数变量名可以存放多个未命名的变量,在没有指定参数时,这个 *b 相当于一个空元组,在函数调用时,可以指定多个变量,也可以不指定变量;


Lambda 表达式:

lambda 用于创建匿名函数,即:不适用 def 关键字的格式来创建函数;

lambda 只是一个表达式,不是代码块(区别于C#:C# 中 lambda 表达式可省略方法名,参数,直接接入代码块

()=> { . . .} 也称作箭头表达式)

lambda 表达式拥有自己的引用空间,不能访问表达式之外 或 全局变量的参数变量;

lambda 表达式格式:

lambda [arg1 [,arg2,.....argn]]:expression
注意:代码块不能换行写,必须跟在 " :" 后面写


实例:

sum = lambda num1,num2:num1+num2
print(sum(2,4))
运行结果:

6