4.函数
参数带有一个`*`表示参数当作元组来处理
参数带有两个`*`表示参数当作元组来处理
使用def
创建一个函数
def add(x, y):
print("x is {} and y is {}".format(x, y))
return x + y # 返回值通过return
调用函数
add(5, 6) # => 打印 "x is 5 and y is 6" 并且返回 11
调用函数另外一种方法
add(y=6, x=5) # 不在乎顺序
参数数量可变
def varargs(*args):
return args
varargs(1, 2, 3) # => 返回(1, 2, 3)
参数数量可变的keyword参数
def keyword_args(**kwargs):
return kwargs
会得到什么样子的返回值?
keyword_args(big="foot", loch="ness") # => {"big": "foot", "loch": "ness"}
如果你愿意,你可以混用它们
def all_the_args(*args, **kwargs):
print(args)
print(kwargs)
打印结果
(1, 2)
{"a": 3, "b": 4}
直接使用字典和元组赋值
args = (1, 2, 3, 4)
kwargs = {"a": 3, "b": 4}
all_the_args(*args) # 相当于 all_the_args(1, 2, 3, 4)
all_the_args(**kwargs) # 相当于 all_the_args(a=3, b=4)
all_the_args(*args, **kwargs) # 相当于 all_the_args(1, 2, 3, 4, a=3, b=4)
返回多个值并且使用元组赋值
def swap(x, y):
return y, x
x = 1
y = 2
x, y = swap(x, y) # => x = 2, y = 1
Python 第一类函数
def create_adder(x):
def adder(y):
return x + y
return adder
add_10 = create_adder(10)
add_10(3) # => 13
匿名函数
(lambda x: x > 2)(3) # => True
(lambda x, y: x ** 2 + y ** 2)(2, 1) # => 5
# ps ** 是幂运算 不要记错了
内置高阶函数
list(map(add_10, [1, 2, 3])) # => [11, 12, 13]
list(map(max, [1, 2, 3], [4, 2, 1])) # => [4, 2, 3]
list(filter(lambda x: x > 5, [3, 4, 5, 6, 7])) # => [6, 7]
网友评论