07 Python 函数
函数
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# def func, snake case
# return value
# no args, no return
def add_two_number():
print('a')
# 1 arg
def add_two_number_1(x):
return x + 5 # return value
# return multiple value
def two_number_2(x, y):
c = x + y
d = x - y
return c, d
# args
def add_number(x, y, *args):
print(f'x = {x}')
print(f'y = {y}')
print(f'args = {args} ')
# kwargs
#
def add_number_1(x, y, *args, **kwargs):
print(f'x = {x}')
print(f'y = {y}') # f-string f'this is string, {x}'
print(f'args = {args} ')
print(f'kwargs = {kwargs} ')
# wrong
# def add_number_2(**kwargs, *args, x, y)
# pass
# default
def add_number_3(x, y, c=10, d = True):
print(c)
if __name__ == '__main__':
# add_two_number()
# print(add_two_number_1(6))
# print(two_number_2(10, 5))
# add_number(1,2, 3, 4, 5, 6)
# add_number_1(1,2,3,4,5, total=5, ok=6)
add_number_3(1,2, 20)
##高级用法
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from datetime import datetime
# lambda
b1 = lambda : print('ok')
b2 = lambda x : print('ok')
b3 = lambda x, y : x * y
sum_1 = lambda x, y: x+y
sub_1 = lambda x, y:x-y
# 函数作为参数
def call_func_demo(func, *args, **kwargs):
''' call another function
Args:
func the function
args arguments
kwargs key work arguments
Returns:
new function
'''
return func(*args, **kwargs)
# 偏函数
def sum_5(y):
'''add 5 to y
'''
return sum_1(5, y)
# 函数作为返回值
def log_time(func):
''' the decorator to log the function spent time
'''
# 1 define a function
def inner(*args, **kwargs):
t1 = datetime.now()
res = func(*args, **kwargs)
t2 = datetime.now()
print(t2 - t1)
return res
# 2 return it
return inner
# decorator
@log_time
def call_func(func, *args, **kwargs):
return func(*args, **kwargs)
if __name__ == '__main__':
a = [5, 7]
print(call_func(sum_1, *tuple(a)))
print(call_func(sub_1, *tuple(a)))