分享

跟艾文学编程《零基础入门学Python》(3)Python 函数

 网摘文苑 2022-11-30 发布于北京

作者: 艾文,计算机硕士学位,企业内训讲师和金牌面试官,公司资深算法专家,现就职BAT一线大厂

内容:跟艾文学编程《零基础入门学Python》

文章图片1

学习目标

Python中的方法/函数

函数中的参数

函数参数传递

匿名函数lambda

高阶函数 filter map reduce

实战练习

方法定义

在python中我们学习来一些数据结构类型中含有一些实现好的方法,这些方法可以作为对象的一部分,这些方法 看成一个函数

对象中方法使用情况

object.method(arg1,arg2,etc...)

那么我们通过list快速查看一些方法

文章图片2

list 中有很多的方法,主要方法?

文章图片3

可以通过help来了解一些方法,例如:

文章图片4

Python 中函数

函数是组织好的,可以重复使用的,用来实现单一或者关联功能代码段

自定义函数,规则步骤:

函数代码以def 函数关键词开头,后面函数标识和括号

任何传输的参数必须放在括号内

函数的第一行语句可以选择性使用文档字符串(用于存放函数说明)

return [表达式] 结束函数,选择行返回一个数值,主要提供给调用方;如果没有返回内容-实际return None

语法案例:

def function_name(paramter): ' 函数_ 文档字符串' function_suite return [expression]

项目: 如果自定义一个函数

def 定义函数,给定一个函数的名字sum

声明两个参数,num1,num2

函数的第一行语句进行函数说明: 两个数字之和

最终return 语句结束函数,并返回两个函数的和

文章图片5

函数参数

默认数值参数

自定义函数中,如果调用时候没有设置参数,需要给默认参数,这个需要用到这种方法

文章图片6

关键词参数

可以通过参数名来给函数传递参数,而不关心参数列表定义的顺序,这个成为关键词参数。

优点:

由于我们不担心参数的顺序,使用函数变得更加简单

假设其它参数都有默认数值,我们可以只给我们想要的数值重写

文章图片7

不定长参数

我们无法确定一传入的参数个数。Python提供一种tuple的方式接受没有直接定义参数。

使用方法:

在参数的前面加上个星号。如果在函数调用的时候没有使用参数,它默认空的元组

文章图片8

**kw 参数

可变参数也支持关键参数,没有被定义关键参数会被统一放到一个字典中

使用方法: 定义参数,前面加上 **

文章图片9
文章图片10

函数参数传递

不可更改的类型

类似c++ 数值传递,如:整数、字符串、元组。

如func(a),传递的只是a的数值,没有影响a对象本身,如果在func(a) 修改某个参数的数值,只是复制了 另外的一个对象,不会影响a本身的变换

文章图片11
文章图片12

可更改类型

类似c++ 引用传递,如: 列表、字典.

如 func(a) ,a 如果传递过去,在func内部进行了修改,会影响a的会变化(同步变更)

文章图片13

匿名函数lambda

python 中使用lambda 来创建匿名函数,不在使用def语句标准来定义一个函数

匿名函数优点:

lambda 只是一个表达式,函数体比def 简单很多

lambda 主体是一个表达式,而不是一个代码块。在这个中函数封装一些简单逻辑

语法:

lambda [arg1,[arg2,,,,]]:expression

下面我们通过使用lambda定一个功能: 两个函数的和

文章图片14

使用lamda函数做一个功能:

给你一个list数组,数组中的每个元素字符类型,希望长度进行排序

文章图片15

高阶函数

filter

map

reduce

filter

刷选序列filter(func,list),将func 作用于list中每个元素,最终根据func函数return 结果false还是true 进行保留或者丢弃某个元素

语法:

filter(function or None, iterable) --> filter object

作业: 通过filter 高阶函数完成打印list中的偶数(偶数是最终的结果)

文章图片16

如果filter 函数不会使用,可以借助help来学习

文章图片17
文章图片18

map

map(func,lst) 将lst中的每个元素作用func函数上,并将结果返回新的列表

作业: 对list 中的每个元素求平方

文章图片19

循环list 中的每个元素进行完成

文章图片20

list 中列表推导方式来进行完成

文章图片21

使用map高级函数进行完成

文章图片22

reduce

reduce(func(x,y),lst)

其中func必须有两个参数。每次func计算的结果继续和序列中的下一个元素做累积计算

注意: 在Python3 中reduce 函数被取消来,放入到functools,所以使用前加上一条

作业: list 中的数据进行求和

文章图片23

reduce 函数使用

文章图片24

解决该问题最常规的方法

文章图片25

变量作用域

一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。

变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:

全局变量:定义在函数外的拥有全局作用域

局部变量:定义在函数内部的变量拥有一个局部作用域

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。 调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

文章图片26

说明s0不能在函数外进行访问

文章图片27

如果f1 函数希望结果可以在外部进行起作用,使用global 关键词声明,内部变量升级全局变量

实战练习

作业1: sorted 函数列表降序

可以是列表、字典、set、甚至字符串

sorted 函数如何使用

语法: sorted(iterable, /, *, key=None, reverse=False)

文章图片28

作业2: 统计字符串每个字符出现次数

文章图片29
文章图片30
文章图片31

作业3: list 序列中输入偶数

要求使用filter

语法:

filter(function or None, iterable) --> filter object

文章图片32
文章图片33

作业4: 计算一个圆的面积

文章图片34

让我们一起加油,学习交流群。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多