目录
Python 函数定义和调用
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
Python函数分为内置函数和自定义函数。
内置函数例如print()。
程序员也可以自己创建函数,这被叫做用户自定义函数。
简单来讲:函数就是编程中最基本的魔法,但同时一切的复杂又都被隐含其
如何定义函数
简单的规则:
函数代码块以 def(全拼:define 定义) 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
do [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的do相当于返回 None。
函数结构
def functionName(arg1,arg2,……):
do something
释义:
def 函数名称(参数1,参数2,……):
执行语句
【注意】
•def和do是关键字(keyword),不可用作函数命名,Python就是靠识别这些特定的关键字来明白用户的意图,实现更为复杂的编程
•闭合括号后面的冒号必不可少,且必须使用英文输入法进行输入,否则就是错误的语法
•默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来
函数调用
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。可是它并不会执行。此时的函数就好像家里的洗衣机没有按开关一样,需要调用函数才可以执行。
Python 参数传递
参数传递的两种方式:值专递和引用传递
①值传递,原数据不受影响
数字、字符串和元组(numbers、strings、tuples)是不可更改的对象,是值传递
②引用传递,原数据受影响
list,dict则是可以修改的对象,是引用传递。
Python 参数类型
调用函数时可使用的正式参数类型有四种:
• 必备参数
• 关键字参数
• 默认参数
• 不定长参数
必备参数
必备参数:执行的时候,必须得有,且按照顺序传入
关键字参数
关键字参数:执行的时候给参数赋值,可以不管顺序
默认参数
默认参数,也叫缺省参数:在定义的时候给参数赋值。执行时,若有给值,以给值为准,否则以定义的默认值为准。
不定长参数
语法结构:
def func(a,b,*args,**kwargs):
释义:
a,b 表示普通参数
args 元组 收集多余参数放到元组内
kwargs 字典 收集赋值型参数放到字典内
注意:*args 与 **kwargs 参数名称可以是其他名称,不是固定的
Python函数返回值
函数返回值关键字为return
该语句表示退出函数,在函数中可存在可不存在,当存在时向调用方返回一个表达式的值。不带参数值的return语句返回值为None。
Python 变量作用域
一个程序的所有的变量并不是在哪个位置都可以访问的。
访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。
两种最基本的变量作用域是:• 全局变量 • 局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。
局部变量调用全局变量关键字:global
Python匿名函数
定义函数的过程中,没有给定名称的函数就叫做匿名函数。
Python中使用lambda表达式来创建匿名函数。用lambda 来创建匿名函数的规则:
●lambda只是一个表达式,函数体比def简单很多
●lambda的主体是一个表达式,而不是一个代码块,所以不能写太多的逻辑进去
●lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数
●lambda定义的函数的返回值就是表达式的返回值,不需要return语句块
●lambda表达式的主要应用场景就是赋值给变量、作为参数传入其它函数
lambda 函数
lambda匿名函数的表达式规则是:lambda 参数列表: 表达式
filter函数
map函数
reduce函数
函数对象
函数是对象,可以给函数增加属性。