当前位置:   article > 正文

python入门9函数_def func

def func

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

②定义:

          def 函数名(参数列表):
              语句
              return 表达式
  • 1
  • 2
  • 3

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

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

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

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

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

                       def func(num):
                           num = 1
                       var = 0
                       func(var)
                       print(var)
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

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

                       使用关键字参数
                     def func(name,age):
                        pass
                     func(age="",name="")
  • 1
  • 2
  • 3
  • 4

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

                    def func(name,age=10):
                        pass 
  • 1
  • 2

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

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

                    def func(name,*arr):
                        for x in arr:
                            pass
                        pass
  • 1
  • 2
  • 3
  • 4

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

                   def func(**arr)
                       pass
                   func(a="",b=""....)   #必须传入关键字参数
  • 1
  • 2
  • 3

(3)函数的返回值
函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。
禁止函数修改列表:可向函数传递列表的副本而不是原件 function_name( list_name[:] )

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

(4)匿名函数

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

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

(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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

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

通用装饰器:

               def outer(func): 
                   def inner(*args,**kwargs):
                       #添加修饰的功能
                       func(*args,**kwargs)
                   return inner
  • 1
  • 2
  • 3
  • 4
  • 5

(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)
  • 1
  • 2
  • 3
  • 4
  • 5

(8)变量的作用域
作用域:变量可以使用的范围
①局部作用域
②全局作用域
③内建作用域
(9)导入函数
导入特定的函数:
from module_name import function_name
from module_name import function_0,function_1,function_2

使用as给函数指定别名
from module_name import function_name as fn

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/544287
推荐阅读
相关标签
  

闽ICP备14008679号