函数的基本概念
1.一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。
2.函数是代码复用的通用机制
python函数的分类
1.内置函数,可以直接拿来使用的
2.标准库函数ipmort
3.第三方库函数,比如语音识别,科大讯飞的库,python社区提供了很多高质量的库
4.自定义的库
文档字符串:(注释)
‘’‘ xxxx ’‘’:通过help(函数名._doc_)进行调用
a=''' xxxx '''表示多行输入字符串
返回值
1.有return返回,没有返回none;
2.return有两个作用:1)返回值 2)函数执行结束
3.返回的值也可以是列表、元组、字典、集合
函数也是对象
python中一切皆对象,函数也是一个对象
def test01()
print("djw")
test01()
c=test01
c()
上述代码中将test01的地址复制给了c,(括号)代表调用,调用的是一个function的对象,这个对象的值是djw所以c和test01调用的都是这个function的对象。如图:
变量的作用域:全局变量、局部变量
全局变量:尽量少定义,一般作为常量,使用global()可以进行查看,函数如果被调用,本身也是一个全局变量,如上面的test01
局部变量:调用的时候,会动态的创建栈帧,使用local()可以进行查看局部变量
参数传递
浅拷贝:不拷贝子对象的内容,只是拷贝子对象的引用。copy.copy()
深拷贝:会连子对象的内存也全部拷贝一份,对子对象的修改不影响原对象。
copy.deepcopy()
不可变参数:字符串、元组、数字等都是浅拷贝。
可变参数:
* 一个星号,将多个参数收集到一个"元组"对象中
** 二个星号,将多个参数收集到一个"字典"对象中
lambada表达式就是用来做一些简单的表达式,用来声明匿名函数:lambada arg1,arg2... <
表达式>
eval()函数:括号里面可以传递字符串
递归函数:自己调用自己的函数,在自己调用自己的同时,不断的在栈中创建引用,因此必须 有结束语句.
#计算阶层
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
returns=factorial(5)
print(returns)
嵌套函数:在函数内部调用的函数,在内部函数可以封装,隐藏,降低重复代码,外部无法调用内部函数。
nonlocal:表示声明外部函数的局部变量
LEGB规则:local-->enclosed(内置函数变量)-->global--->built in(内置函数)