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)