python入门9函数

(1)函数概述:
项目中,某些功能会反复的使用。将功能封装成函数,要使用功能的时候直接调用函数
①优点:
1.简化代码结构,增加代码的复用度
2.如果想修改某些功能或者调试某个BUG,修改对应的函数即可

②定义:

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

函数名遵循标识符规则
任何传入的参数和变量必须放在圆括号之间,用逗号分隔。函数内容以冒号开始,并且缩进
return:结束函数,返回信息

③函数的调用: 函数名(参数列表)
本质:实参给形参赋值的过程

④最简单的函数:
无参无返回值的函数

(2)函数的参数
①定义
实参:调用函数时给函数传递的数据,本质是值
形参:本质是变量
参数必须按顺序传递,个数相对应

② 传递
值传递:传递的不可变类型 string,tuple,number

                       def func(num):
                           num = 1
                       var = 0
                       func(var)
                       print(var)

引用传递:传递的可变类型 (实际上是对地址值的传递) list,dict,set

                       def func(list):
                           list[0]=0
                       list=[1,2,3]
                       func(list)
                       print(list)

③关键字参数
允许函数调用时参数的顺序与定义时不一致,传参时指明

                       使用关键字参数
                     def func(name,age):
                        pass
                     func(age="",name="")

④默认参数
调用函数时如果没有传递函数,则使用默认参数.最好将默认参数放到最后,定义函数时指明

                    def func(name,age=10):
                        pass 

⑤不定长参数
能处理比定义时更多的参数

加了*的变量 存放所有未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组

                    def func(name,*arr):
                       pass

加了**的变量 代表键值对的参数字典,

                   def func(**arr)
                       pass
                   func(a="",b=""....)

(3)函数的返回值

             例:求两数之和,将结果返回给函数的调用者
             def sum(num1,num2)
                 return num1+num2

(4)匿名函数

不使用def这样的语句定义函数,使用lambda来创建匿名函数
特点:
1.lambda只是一个表达式,函数体比def简单,主体是表达式,而不是代码块
2.只能封装简单的逻辑
3.有自己的命名空间,且不能访问自由参数列之外的或全局命名空间的参数
格式:

             lambda 参数1,参数2,......,参数n:expression 
       例:  sum = lambda sum1,sum2:num1+num2
             print(sum(1,1))

(5)装饰器

                 需求:打印s1之前打印***
                 def func():
                     print(" s1 ")
                 def outer():
                     print("***")
                     func1()

          例1:     
                   def outer(func):
                       def inner():
                          print("***")
                          func()
                       return inner   #返回inner函数
                    f=outer(func)  
           例2:
                  def say(age):
                      print(age)
                  say(-1)

                  def outer(func):
                      def inner(age):
                          if age<0:
                              age=0
                          func(age)
                      return inner 
                  say=outer(say)
                  say(-1)

@outer
def func
使用@符号将装饰器应用到函数

通用装饰器:

               def outer(func): 
                   def inner(*args,**kwargs):
                       #添加修饰的功能
                       func(*args,**kwargs)
                   return inner

(7)偏函数
基础例: print(int(“1010”,base=2)) 字符串按base=2进制输出
把一个参数固定住,形成一个新的函数

            import functools
            int2 =functools.partial(int,base=2)
            等价于
            def int2(str,base=2):
                return int(str,base)

(8)变量的作用域
作用域:变量可以使用的范围
①局部作用域
②全局作用域
③内建作用域

猜你喜欢

转载自blog.csdn.net/qq_35076836/article/details/82591995