python笔记5

函数

  • python是用def关键字来定义函数的
def output():
    print("666")
output()
666
  • 带参数
def fun(name):
    print(name + "5555")
fun("666")
6665555
  • 返回值
# 形参 就是定义函数时的参数如add(a, b)中的a, b
# 实参 就是引用函数时的参数如add(11, 12)中的 11, 12
def add(a, b):
    return a + b
a = add(11, 12)
a
23
  • 函数文档
# 用来解释函数作用的
def add(a, b):
    'a + b'
    return a + b
add.__doc__
'a + b'
  • 关键字引用函数
def fun(name, school):
    print(name + "毕业于" + school)
fun("科大","我"), fun(school = "科大",name = "我")
科大毕业于我
我毕业于科大
  • 收集参数
def add2(*a):
    print(a[0], a[1], a[2])
add2(1, 5, 9) #元组
# 收集参数
def add2(*a, b):
    print(a[0], a[1], a[2], b) 
add2(1, 5, 9, b = 999) #元组 关键字
  • 都有返回值,没有返回值就返回None
t = add2(1, 5, 9, b = 999)
print(t)
1 5 9 999
None
  • 动态确定返回值类型
def fun2(): #动态确定返回值类型
    return [2, 3, 6]
a = fun2()
a
[2, 3, 6]
  • 局部变量 和 全局变量
# 在函数中访问一个全局变量可以,但是修改要给全局变量会出意外----会先生成一个新的局部变量来代替,名字和原来一样
 def fun2(b):
    c = 50
    print("c2:",c)
c = 100
fun2(100)
print("c3:", c)
c2: 50
c3: 100
  • global关键字
# 可以访问全局变量
def fun2(b): #动态确定返回值类型
    global c
    c = 50
    print("c2:",c)
c = 100
fun2(100)
print("c3:", c)
c2: 50
c3: 50
  • 内嵌函数和闭包
# 函数式编程
def funx(x):
    def funy(y):
        return x * y
    return funy
y = funx(40)
y(40)
1600
funx(40)(40)
1600
  • nonlocal关键字
# nonlocal
def funx(x): 
    t = 10
    def funy(y):
        nonlocal t
        return x * t * y
    return funy(10)
funx(40)
4000
  • 匿名函数 lambda表达式
    • 格式: lambda 参数 : 返回值
f = lambda x : x * 2 + 6
f(4)
14
f = lambda x, y : x * 2 + 6 * y
f(2, 2)
16
  • filter(function or None, iterable) 过滤器 默认选择为真
def odd(x):
    return x % 2
temp = range(10)
show = filter(odd, temp)
list(show)
[1, 3, 5, 7, 9]
list(filter(lambda x : x % 3, temp)) # 去掉了0
[1, 2, 4, 5, 7, 8]
  • map(func, *iterables)映射
# 类似于循环 就是从range中按顺序取出数字为x,然后进行运算
list(map(lambda x : x * 3, range(5)))
[0, 3, 6, 9, 12]

你可能感兴趣的:(python,python,lambda,filter,map,函数闭包)