python笔记08函数知识点总结

    科技2025-07-13  5

    python笔记08函数知识点总结

    先声明一下 各位大佬,这是我的笔记。 如有错误,恳请指正。 另外,感谢您的观看,谢谢啦!

    (1).函数的定义,参数

    定义一个新的函数

    def text(): print('我是一个函数') text() 我是一个函数

    我们以前用的函数是都是有参数的,自己定义的函数也是可以有的

    def text(x): print(f'{x}是一个函数') text('我') 我是一个函数

    要注意我们把被定义的函数的参数叫做‘形参’即‘x’,传入被定义的函数的参数叫’实参‘即‘‘我’’

    如果函数需要多个参数,那就多定义几个好了

    def text(x,y): print(f'{x}是一个{y}') text('我','帅哥') 我是一个帅哥

    然而一两个参数还好,有时候好几个参数,我们还有去背它的输入顺序吗?

    当然有更好的办法了,就是关键字参数

    def text(x,y): print(f'{x}是一个{y}') text('帅哥','我') def text(x,y): print(f'{x}是一个{y}') text(y='帅哥',x='我') 帅哥是一个我 我是一个帅哥

    我们看第二个,是不是很好用啊。

    大家有没有想过会出现不知道究竟要几个参数的时候,(比如print()就是你输入几个实参都可以)

    这时候就要用到收集函数了

    def text(*x,y): for i in range(len(x)): print(f'{x[i]}是一个{y}') text('你','我','他',y='帅哥') 你是一个帅哥 我是一个帅哥 他是一个帅哥

    其实函数是把不确定是多少个的参数变成了一个元组

    def text(*x,y): print(f'{x}') text('你','我','他',y='帅哥') ('你', '我', '他')

    还有定义参数是可以定义默认值的

    def power(x,y=4): return x**y print(2) print(2,y=3) 16 8

    如果不使用关键字参数,就默认返回实参的4次幂,如果设置了参数就要按照你输入关键字参数的来运算。

    (2).局部变量与全局变量

    局部变量:在函数内定义的变量,作用域只有函数内部,在函外部不能调用它们

    全局变量:在函数外定义的变量,有更大的作用域。

    y = 4 def power(x): a = 1 return x**y+a print(power(2)) 17

    y是全局变量,a是局部变量,在函数内部可以调用(查看)全局变量但是不可以修改全局变 量的值,一旦修改,python会出于’保护机制‘,创建一个与你修改的全局变量,名字一模一样的局部变量,而你修改的不是全局变量的值。

    y = 4 def power(x): a = 1 y = 2 return x**y+a print(power(2)) print(y) 5 4

    当然,你非要在函数内修改局部变量,可以用 global声明。

    y = 4 def power(x): a = 1 global y y = 2 return x**y+a print(power(2)) print(y) 5 2

    (3).内嵌函数

    python允许在函数内部创建函数

    def power(x): y = 4 a = 1 def power2(x): return x**y+a return power2(x) print(power(2))

    上面就是一个内嵌函数。

    内嵌函数的参数的作用域只有自己内嵌函数本身那么大,内嵌函数内也是只能调用不能修改其外部函数的变量

    当然,和全局变量一样,如果非要改可以用nonlocal声明

    而,内嵌函数的作用域也只是在其外部函数内,在全局是无法访问的

    def power(x): y = 4 a = 1 def power2(x): return x**y+a return power2(x) print(power2(2)) print(power2(2)) NameError: name 'power2' is not defined

    (4).闭包

    闭包可以理解为对外封闭的一个代码块,他运作的时候不会影响到外部环境,这也是闭包的好处。

    在编程的时候要尽量减少全局变量的使用。全局变量确实好用,但是太容易引发bug了

    下面举个闭包的例子

    def pf(x): li1 = [x] def pf2(s): li1[0] = li1[0]+s return li1[0] return pf2 f1 = pf(2) print(f1(2)) 4

    这里要注意,第六行返回的是一个功能,所以可以像7,8行那样用。

    (5).lambda,filter,map

    这三个函数功能真的很厉害,而且都特别的好玩,好用

    lambda是函数式编程,它的格式如下

    lambda 参数(多个参数就用逗号隔开) : 要return的值

    def power(x,y): return x**y g = lambda x,y:x**y

    这两句代码的功能是一样的

    print(power(2,3)) print(g(2,3)) 8 8

    filter是过滤器

    它的功能是对第二个可迭代对象进行第一个参数(函数)的运算,为真留下。

    print(list(filter(lambda x:x%2 ,range(10)))) [1, 3, 5, 7, 9]

    map可以用映射来解释对第二个参数进行第一个函数参数的运算,第二个参数是接收参数即能传入多个参数

    print(list(map(lambda x,y: x+y ,range(11),range(11,0,-1)))) [11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11]
    Processed: 0.010, SQL: 8