前面几章全是基础,语法和数据类型;这一章开始函数的学习~
函数,编程语言灵魂,函数的调用是重点,它是完成逻辑功能的工具,使我们的 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 用于创建匿名函数,即:不适用 def 关键字的格式来创建函数;
lambda 只是一个表达式,不是代码块(区别于C#:C# 中 lambda 表达式可省略方法名,参数,直接接入代码块
()=> { . . .} 也称作箭头表达式)
lambda 表达式拥有自己的引用空间,不能访问表达式之外 或 全局变量的参数变量;
lambda 表达式格式:
lambda [arg1 [,arg2,.....argn]]:expression注意:代码块不能换行写,必须跟在 " :" 后面写
实例:
sum = lambda num1,num2:num1+num2 print(sum(2,4))运行结果:
6