函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
# 定义一个函数
def say_hi(name):
print('Hi~'+name);# print是python的一个内置函数
函数的参数
- 必需参数:必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
- 关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用
关键字参数允许函数调用时参数的顺序与声明时不一致
,因为 Python 解释器能够用参数名匹配参数值。- 默认参数: 调用函数时,如果没有传递参数,则会使用默认参数。
- 不定长参数: 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 3 种参数不同,声明时不会命名。
# 必需参数
def say_hi(name):
print('Hi~'+name);# name是必须传的参数
say_hi('Tom') # 结果 Hi~Tom
# 关键字参数
def say_hi(name):
print('Hi~'+name);
say_hi(name='Tom') # 结果 Hi~Tom
# 默认参数
def say_hi(name='Tom'):
print('Hi~'+name); # 如果不传参数,则使用默认参数
say_hi() # 结果 Hi~Tom
# 不定长参数
def say_hi(name,*keys):
print(name)
print(keys)
say_hi('Tom',1,2,3)
'''
结果是
Tom
(1, 2, 3) 第二个可变参数会以元组的形式传递进来
'''
匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
# lambda关键字的使用
sum = lambda arg1, arg2: arg1 + arg2
sum(1,2) # 结果返回为3
lambda关键字的使用非常的灵活,它也是函数式编程的核心所在。在python的一些内置函数map/filter等都可以传递匿名函数为参数,从而达到预期效果。灵活的使用可以事半功倍~
return语句和序列解包
return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。
序列解包:当return返回多个结果时,会以元组的形式返回,在接受返回值时可以设置多个变量来接收。
# 之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:
def sum( arg1, arg2 ):
# 返回2个参数的和."
total = arg1 + arg2
print ("函数内 : ", total)
return total
print(sum(1,2)) # 打印返回的结果3
# 序列解包
def apples(name,*keys):
return name,keys
a,b = apples('苹果','香蕉','橘子') # a的结果是'苹果' b的结果是('香蕉','橘子')