python基础学习11—-函数

  • 2020 年 1 月 19 日
  • 筆記

一.函数的定义

def 函数名(参数列表):      函数体      return语句

return语句不写或后边不加任何对象即为return None

二.函数的参数

无参数

def func1():      print("没有参数")

一个参数

def func1(a):     return a

多个参数

def func1(a,b,c):     return a+b+c

必须参数

  必须按照正确顺序和数量传入参数

def func1(name,age,job):     print("name:%s age:%d job:%s"%(name,age,job))  func1("sfencs",20,"IT")

关键字参数

def func1(name,age,job):     print("name:%s age:%d job:%s"%(name,age,job))  func1(age=20,name="sfencs",job="IT")

默认参数

默认参数必须放在必须参数的后面

def func1(name,age,job="IT"):     print("name:%s age:%d job:%s"%(name,age,job))  func1("sfencs",20)  func1("Alan",25,"teacher")

不定长参数

参数带一个星号*

def func1(*args):      print(args)  func1(1,2,3,"sfencs")#(1, 2, 3, 'sfencs')以元组形式保存

参数带两个星号**

def func1(**kwargs):      print(args)  func1(age=20,name="sfencs",job="IT")#{'age': 20, 'name': 'sfencs', 'job': 'IT'}以字典形式保存

定义函数的参数时请以必须参数、默认参数、带一个星号的不定长参数、带两个星号的不定长参数的顺序定义形参

三.参数传递

不可变类型

def func1(a):      a=5  b=10  func1(b)  print(b)#输出为10

可变类型

def func1(list1):      list1.append("sfencs")  list2=[1,2,3]  func1(list2)  print(list2)#[1, 2, 3, 'sfencs']list2会改变

四.变量作用域

L (Local) 局部作用域 E (Enclosing) 闭包函数外的函数中 G (Global) 全局作用域 B (Built-in) 内建作用域

按照L–>E–>G–>B的顺序查找

内部作用域修改外部作用域变量

global

count=20  def function() :      global count#不加这句话会报错      print (count)#20      count=5      print(count)#5  function()  print(count)#5

nonlocal 

修改嵌套作用域

def function1() :      count=20      def function2():          nonlocal count          count=5          print(count)#5      function2()      print(count)#r此时输出为5,若不加nonlocal count则输出为20  function1()

五.递归函数

#斐波那契数列为0,1,1,2,3,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