0
点赞
收藏
分享

微信扫一扫

python 函数进阶

得一道人 2022-02-01 阅读 41
#设计一个生成验证码的函数
import random
import string

ALL_CHARS = string.digits + string.ascii_letters
print(ALL_CHARS)

def generate_code(code_len = 4):
    return ''.join(random.choices(ALL_CHARS, k = code_len))

def get_suffix(filename):
    pos = filename.rfind('.')
    if pos <= 0:
        return ''
    return filename[pos + 1:]

print(get_suffix('maxiaoyang.mahuan'))

#可变参数
def calc(*args):
    result = 0
    for arg in args:
        if(type(arg) in (int, float)):
            result += arg
    return result

print(calc(1, 2, 3))

#可变参数 + 关键字参数

def cal(*args, **kwargs):
    result = 0
    for arg in args:
        if type(arg) in (int, float):
            result += arg
    for value in kwargs.values():
        if type(value) in (int, float):
            result += value
    return result

print(calc())
print(cal(1, 2, 3))
print(cal(1, 2, d=4, a=2))

#高阶函数
def ca(*args, init_value, op, **kwargs):
    result = init_value
    for arg in args:
        if type(arg) in (int, float):
            result = op(result, arg)
    for value in kwargs.values():
        if type(value) in (int, float):
            result = op(result, value)
    return result

def add(x, y):
    return x + y
def mul(x, y):
    return x * y

print(ca(1, 2, 3, init_value=0, op=mul, x=6))

def is_even(num):
    return num % 2 == 0

def square(num):
    return num ** 2

numbers1 = [35, 12, 8, 99, 60, 52]
numbers2 = list(map(square, filter(is_even, numbers1)))
print(numbers2)

#列表生成式同样的功能
numbers2 = [num ** 2 for num in numbers1 if num % 2 == 0]
print(numbers2)

#Lambda函数
numbers1 = [35, 12, 8, 99, 60, 52]
numbers2 = list(map(lambda x: x ** 2, filter(lambda x: x % 2 == 0, numbers1)))
print(numbers2)

def calc1(*args, init_value=0, op=lambda x, y: x + y, **kwargs):
    result = init_value
    for arg in args:
        if type(arg) in (int, float):
            result = op(result, arg)
    for value in kwargs.values():
        if type(value) in (int, float):
            result = op(result, value)
    return result

print(calc1(1, 2, 3, x=4, y=5))
print(calc1(1, 2, 3, x=4, y=5, init_value=1, op=lambda x, y: x * y))


举报

相关推荐

0 条评论