函数
1、什么是函数:
函数是一个功能、是一个行为、是一个动作。函数就是一个具有名称的功能代码的集合。
一段用来解决某一个问题的代码或者指令,具有名称的集合。
为什么使用函数:
------------减少代码重复!!!
2、python如何定义函数
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def 函数名称([参数列表]):
# 函数体
# 函数得到一个结果,如果调用者需要,则需要返回这个结果
# return 返回值
3、函数调用:
------------函数名称([实参列表])
def hello() :
--------print(“Hello World!”)
hello()
--------Hello World!
4、
|-- 函数的参数问题
|-- 默认值
|-- 可变参数
|-- 命名参数
|-- 万能参数
|-- 函数作为参数传递到函数内部的问题
|-- lambda表达式(匿名函数)
|-- 偏函数和递归
python的main函数:
if __name__ == '__main__':
# python是一门脚本语言,所以它的main函数和c或者java等不一样
# python中的main函数并不是代码开始执行的位置,写在main函数中的代码一般是测试代码,用来测试当前模块
# 并不能导入到其他模块中
默认值参数:
在函数定义时,如果一些参数的值,一般都是不是不变某个值,则可以将该参数设置为默认参数,这样减少调用者的麻烦
可变参数:
*变量
关键字参数:
**变量名称
万能参数:
*args, **kwargs
5、全局变量和局部变量
全局变量:定义在模块(.py)中,可以在该模块定义后任何地方都可以访问
局部变量:定义在函数内部的变量,作用域只是在当前函数内有效,出了函数,无法访问到
---------在函数中,能访问到全局变量,但是注意:在python中,函数内不允许修改全局变量
---------如果确实在函数内,需要修改全局变量,必须要提前申明
---------global 全局变量 ##需要修改全局变量可以使用global,尽量不用
6、函数的调用
压栈,函数调用本质就是将堆中的函数调用到栈中执行,这个过程被称为压栈,等函数执行完成,会立刻执行出栈(弹栈),执行函数就是将函数调入栈中执行,执行结束再进行弹栈出来。
7、函数的参数问题
|-- 默认值参数
# 默认值参数,在参数上,给定一个最常用的值,在调用的时候,
# 如果和默认的值一致,就可也不用传递这个参数
def get_cricle_area(r, pi=3.14):
pass
注意:默认值参数,必须放在普通后面!!!
|-- 可变参数
def show(name, age=16, *args):#可写可不写称为可变
pass
args以元组的形式保存
|-- # 命名参数(关键字参数)
def show2(name, age, **kwargs):
pass
kwargs是以字典的形式保存
8、函数递归
函数自身调用自身
注意:必须要有终止条件,没有终止条件的递归是一个死循环
9、lambda表达式:
# 注意:如果需要返回值,不用添加return,会自动返回
lambda [参数列表]:函数体
lambda作用:
1、在python实现匿名函数
2、简化了编程
缺点:
1、降低了代码的可读性,提高代码的复杂度,提高了代码的维护成本
10、偏函数
使用functools.partial函数将一个函数的某些默认值转换为其他想要的默认值函数。
import functools
new_int = functools.partial(int, base=8)
新函数 = functools.partial(函数, 参数=新的默认值)
>>> new_int("1234")
668