python函数值传递和引用传递
形参和实参
形参:在定义函数时,函数名后面的参数就是形参。
实参:在调用函数时,函数名后面的参数就是实参,也是函数调用者给函数的参数。
python的参数传递
可变类型:列表,字典。将真正的a传递过去,函数内的修改会影响到a本身
不可变类型:整数,字符串,元组。传递给a的值,不会影响到a本身
Python函数中的参数用法
调用函数时常用的参数使用类型:
- 位置参数(必选参数)
- 默认参数(可选参数)
- 命名参数(关键字参数)
- 可变参数
1.位置参数
函数调用时,实参默认按位置顺序进行传递,并且要求个数和形参完全匹配。
2、默认参数
调用函数时,默认参数的值如果没有传入,则被认为是默认值。
如图所示,给参数c传入一个默认值,调用函数c可以传值或者使用默认值
3、命名参数
使用关键字参数允许函数调用时参数的顺序与声明时不-致,通过参数名进行匹配。
如图所示,将参数名称直接写出来不按照顺序传参也可以
4、可变参数
你可能需要一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数或可变参数。
如图所示,*c是一个元组可变参数,可以接收可变个数的参数
如图所示,**c是一个字典可变参数,可以通过key-value的形式传递参数
Python return函数返回值详解
Python中,用def语句创建函数时,可以用return 语句指定应该返回的值,该返回值可以是任意类型。需要注意的是,return 语句在同- -函数中可以出现多次,但只要有一个得到执行,就会直接结束函数的执行。
函数中,使用return语句的语法格式如下: return [返回值],其中,返回值参数可以指定,也可以省略不写(将返回空值None)。
Python变量作用域(全局变量和局部变量)
所谓作用域(Scope), 就是变量的有效范围, 即变量可以在哪个范围以内使用。有些变量可以在整段代码的任意
位置使用,有些变量只能在函数内部使用,有些变量只能在for循环内部使用。
变量的作用域由变量的定义位置决定,在不同位置定义的变量,它的作用域是不一样的。
1、Python局部变量
在函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,我们将这样的变量称为局部变量(Local Variable)。
2、Python全局变量
除了在函数内部定义变量,Python 还允许在所有函数的外部定义变量,这样的变最称为全局变最(Global Variable)。
和局部变量不同,全局变量的默认作用域是整个程序,即全局变量既可以在各个函数的外部使用,也可以在各函数内部使用。
Python lambda表达式(匿名函数)及用法
在定义函数的时候,不想给函数起一个名字, 这个时候就可以用lambda来定义- -个匿名函数,lambda 表达式,又称匿名函数。
语法:变量名= lambda参数:表达式
参数:可选,通常以逗号分隔的变量表达式形式,也就是位置参数
表达式:不能包含循环、return, 可以包含f.e...
可以理解lambda表达式,就是简单函数(函数体仅是单行的表达式)的简写版本。相比函数,lamba 表达式具有以下2个优点:
对于单行函数,使用lambda表达式可以省去定义函数的过程,让代码更加简洁;
对于不需要多次复用的函数,使用lambda表达式可以在用完之后立即释放,提高程序执行的性能。
Python编程:递归函数
在Python中,-个函数可以调用其他函数。函数甚至也可以调用自身,这类函数称为递归函数(RecursiveFunction)。
如果一个函数直接或者间接地调用函数本身,那么就是递归函数。这意味着,函数将不断的调用本身并重复函数的内容,直到达到某个条件才返回一个结果。 所有的递归函数都有着同样的结构,这个结构由两部分组成:基础部分,递归部分。
Python函数式编程
函数式编程将一个问题分解成一系列函数, 通过把大段代码拆成函数,通过- -层- -层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。
函数式编程还具有一个特点: 允许把函数本身作为参数传入另-个函数,还允许返回-个函数。
高阶函数
函数对象也可以作为参数传递给函数,还可以作为函数的返回值。参数为函数对象的函数或返回函数对象的函数称为高阶函数,即函数的函数。
Python函数式编程: map()
1、Python map()函数
map0函数的基本语法格式: map(function, iterable)
其中,function参数表示要传入一个函数,可以是内置函数、自定义函数或者lambda匿名函数: iterable 表示一个或多个可迭代对象,可以是列表、字符串等。
map()函数的功能是对可迭代对象中的每个元素,都调用指定的函数,并返回-一个map对象,不是list。
如图,map传入两个参数,匿名函数和列表,实现将列表的每一个值*2
将每个元素变成大写
Python函数式编程: filter()
2、Python filter()函数
filter()函数的基本语法格式: filter(function, iterable)
funcition参数表示要传入一个函数,iterable 表示-个可迭代对象。
filter()函数的功能是对iterable中的每个元素,都使用function函数判断,并返回True或者False,最后将返回True的元素组成一个新的可遍历的集合。