一.函数的定义
return语句不写或后边不加任何对象即为return None
二.函数的参数
无参数
Highlighter">
rush:python;gutter:true;">def func1(): print("没有参数")
一个参数
Highlighter">
rush:python;gutter:true;">def func1(a): return a
多个参数
Highlighter">
rush:python;gutter:true;">def func1(a,b,c): return a+b+c
必须参数
必须按照正确顺序和数量传入参数
Highlighter">
rush:python;gutter:true;">def func1(name,age,job): print("name:%s age:%d job:%s"%(name,job)) func1("sfencs",20,"IT")
Highlighter">
rush:python;gutter:true;">def func1(name,job)) func1(age=20,name="sfencs",job="IT")
默认参数
默认参数必须放在必须参数的后面
Highlighter">
rush:python;gutter:true;">def func1(name,job="IT"): print("name:%s age:%d job:%s"%(name,20) func1("Alan",25,"teacher")
不定长参数
参数带一个星号*
Highlighter">
rush:python;gutter:true;">def func1(*args): print(args) func1(1,2,3,"sfencs")#(1,'sfencs')以元组形式保存
参数带两个星号**
Highlighter">
rush:python;gutter:true;">def func1(**kwargs): print(args) func1(age=20,job="IT")#{'age': 20,'name': 'sfencs','job': 'IT'}以字典形式保存
定义函数的参数时请以必须参数、默认参数、带一个星号的不定长参数、带两个星号的不定长参数的顺序定义形参
三.参数传递
不可变类型
Highlighter">
rush:python;gutter:true;">def func1(a): a=5 b=10 func1(b) print(b)#输出为10
可变类型
Highlighter">
rush:python;gutter:true;">def func1(list1): list1.append("sfencs") list2=[1,3] func1(list2) print(list2)#[1,'sfencs']list2会改变
四.变量作用域
L (Local) 局部作用域E (Enclosing) 闭包函数外的函数中G (Global) 全局作用域B (Built-in) 内建作用域
按照L-->E-->G-->B的顺序查找
内部作用域修改外部作用域变量
global
Highlighter">
rush:python;gutter:true;">count=20 def function() : global count#不加这句话会报错 print (count)#20 count=5 print(count)#5 function() print(count)#5
修改嵌套作用域
Highlighter">
rush:python;gutter:true;">def function1() : count=20 def function2(): nonlocal count count=5 print(count)#5 function2() print(count)#r此时输出为5,若不加nonlocal count则输出为20 function1()
五.递归函数
Highlighter">
rush:python;gutter:true;">#斐波那契数列为0,1,5,8,13,21,34....... def fibon(n): if n<=2 : return n-1 return fibon(n-1)+fibon(n-2) print(fibon(7))#输出数列中第七个数,为8
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。