Python 函数定义、lambda表达式及变量委托

Python 函数定义:

@desc:函数 变量作用域:Built-in Global Enclosure Local,及 基本数据类型存储 原位改变问题
"""


def intersect(seq1, seq2):
    res = []
    for x in seq1:
        if x in seq2:
            res.append(x)
    return res


s1 = 'uk.cc'
s2 = 'mjfdfcac.c'

ls = intersect(s1, s2)
print(ls)


# 封装 Enclosure
def func():
    x = 100

    def nest():
        nonlocal x
        x = 99
        print(x)

    nest()
    print(x)


func()


def change_str(l):
    l = '99'


sl = 'ckkvdllvd,'

print('原始:', sl)
change_str(sl)
print('操作后列表:', sl)


def change_list(l):
    l[0] = 99


l = ['ckkvdllvd,']

print('原始:', l)
change_list(l)
print('操作后列表:', l)

# 区别:字符串本来不支持原位改变,所以复制副本,不会受函数影响
# 区别:列表本支持原位改变(间接地址的二次操作),所以复制副本,受函数影响
l = ['ckkvdllvd,']

print('原始:', l)
change_list(l.copy())  # 这样不受函数影响
print('操作后列表:', l)

Python 函数任意参数的声明:

def avg(*scores):  # *scores 表示可添加任意长度的元组,*表示将scores解包
    return sum(scores) / len(scores)


res = avg(88, 95, 63)
print(res)

sso = 45, 85, 42
res = avg(*sso)
print(res)


def dispaly(**employee):  # **表示可添加任意长度的字典表,**解两个包
    print(employee)


dispaly(name='Tom', age=20, dep='dev')
# 等同
print(dict(name='Tom', age=20, dep='dev'))
print({'name': 'Tom', 'age': 20, 'dep': 'dev'})

Python 函数 lambda表达式:

f = lambda x, y: x + y
print(f(5, 3))


def hello_chinese(name):
    print('您好:', name)


def hello_English(name):
    print('Hello', name)


# while True:
#    name = input('请输入您的姓名:\n')
#    if name == 'stop':
#        break
#    language = input('请选择语言:\nc => 中文版\ne => 英文版\nj => 日文版\n')
#
#    if language == 'c':
#        hello_chinese(name)
#    elif language == 'e':
#       hello_English(name)
#    elif language == 'j':
#        (lambda xin_name: print('日语不会', xin_name))(name)

while True:
    name = input('请输入您的姓名:\n')
    if name == 'stop':
        break
    language = input('请选择语言:\nc => 中文版\ne => 英文版\nj => 日文版\n')

    if language == 'c':
        action = hello_chinese  # action(变量) = 函数,类似于委托,起到 指针作用
    elif language == 'e':
        action = hello_English  # action(变量) = 函数,类似于委托,起到 指针作用
    elif language == 'j':
        action = lambda xin_name: print('日语不会', xin_name)
    action(name)

Python 函数 变量委托:

f = lambda x, y: x + y
print(f(5, 3))


def hello_chinese(name):
    print('您好:', name)


def hello_English(name):
    print('Hello', name)


japanese = lambda name: print('日语不会写', name)

# 学会用委托(变量指针)
operation = {
    'e': hello_English,
    'c': hello_chinese,
    'j': japanese,
    'ey': lambda name: print('俄语不会写', name)
}

while True:
    name = input('请输入您的姓名:\n')
    if name == 'stop':
        break
    language = input('请选择语言:\nc => 中文版\ne => 英文版\nj => 日文版\ney => 俄文版\n')

    # operation.get(language, '输入错了')(name)
    operation.get(language, hello_chinese)(name)
# 总结:学会理解 地址和默认变量=>数据结构

Python 函数 应用:

l = list(range(1, 21))
result = []
# 1.使用循环
for n in l:
    if n % 2 == 0:
        nm = n + 5
        result.append(nm)
print(result)

# 2.使用推导
result = [x + 5 for x in l if x % 2 == 0]
print(result)


# 3.使用map.filter (函数,可迭代对象)
def add_num(x):
    return x + 5


res = list(map(add_num, l))  # 理解数据结构
print(res)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值