zoukankan      html  css  js  c++  java
  • Python基础第三篇:函数

    一、Python函数介绍

    1.函数的作用

    1. 规范代码使代码变得逻辑性更强
    2. 提高可读性,方便管理,降低维护成本,以及降低代码冗余

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

    2.函数定义

    1. 以 def 关键词开头,后接函数标识符名称和圆括号(),def df()
    2. 函数参数必须写在括号中,可以定义多个参数def df(参数1,参数2,参数3.....)
    3. 函数内部第一行建议放函数说明
    4. 一般带参数的会有return,不带参数的没有,不带return相当于返回 None

    3.函数分类

    Python中函数分为内置函数(sum、len、min.....),和自定义函数。

    a = len(‘hhhh’)#使用内置函数计算字符长度
    
    b=max([1,2,3])#使用内置函数比较大小写
    print(b)
    
    
    def print_star():#自定义函数
        print('#'*6)
    

      

     二、函数参数

    1.从大的角度去看,函数的参数分两种:形参(变量名),实参(值),定义阶段的是形式参数,调用赋值时的是实参
    #定义阶段定义形参数
    # def foo(x,y): #x=1,y=2
    #     print(x)
    #     print(y)
    
    #调用阶段传入实参
    # foo(1,2)
    

    2.详细的区分函数的参数分为五种

    位置参数

      调用时参数必须以正确的顺序传入函数,数量必须和声明时的一样

    #位置参数
    def foo(x,y,z):#位置形参:必须被传值的参数
         print(x,y,z)
    
     foo(1,2,3)
     foo(1,2,3) #位置实参数:与形参一一对应

    关键字参数

      使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

      关键字参数需要注意的问题:

      1:关键字实参必须在位置实参后面

      2: 不能重复对一个形参数传值

    #关键字参数:key=value
    def foo(x,y,z):
        print(x,y,z)
    
    foo(z=3,x=1,y=2)
    # foo(1,z=3,y=2) #正确
    # foo(x=1,2,z=3) #错误
    # foo(1,x=1,y=2,z=3)

    默认参数

      调用函数时,缺省参数的值如果没有传入,则被认为是默认值

      默认参数需要注意的问题

        1.默认参数必须跟在非默认参数后

        2.默认参数在定义阶段就已经赋值了,而且只在定义阶段赋值一次

        3.默认参数的值通常定义成不可变类型

    #定义一个默认参数函数
     def register(name,age,sex='male'): #形参:默认参数
         print(name,age,sex)
    #默认参数必须跟在非默认参数后
     register('喊喊',210,'female')
     register('喊喊',sex='female',age=19)
    
     a=100000000
     def foo(x,y=a):
         print(x,y)
     a=0
    a = 不会影响到函数
     foo(1)
    

      

    可变长参数

    1.*后多出来的以元组形式赋值

    加了星号(*)的变量名把按位传参多出来的参数都接收,以元组的形式赋值给"*变量"实例如下:

    def foo(x,y,*args): #*会把溢出的按位置定义的实参都接收,以元组的形式赋值给args
        print(x,y)
        print(args)
    

     

    #!/usr/bin/Python
    # -*- coding:utf-8 -*-
    add函数相当于接收了一个元组(1,2,3,4,5)
    def add(*args):
        res=0
        for i in args:
            res+=i
        return res
    
    print(add(1,2,3,4,5))
    print(add(1,2))
    

    2.以字典形式赋值

    def foo(x, y, **kwargs):  # **会把溢出的按关键字定义的实参都接收,以字典的形式赋值给kwargs
         print(x, y)
        print(kwargs)
     foo(1,2,a=1,name='egon',age=18)
    

      

    判断是否输入了指定内容的参数
    def foo(name,age,**kwargs):
        print(name,age)
        if 'sex' in kwargs:
            print(kwargs['sex'])
        if 'height' in kwargs:
            print(kwargs['height'])
    
    foo('egon',18,sex='male',height='185')
    foo('egon',18,sex='male')
    

     

    命名关键字参数

    *前可以按照位置和关键字赋值,*后出默认其他必须以关键字形式传值

    # def foo(name,age,*,sex='male',height):
    #     print(name,age)
    #     print(sex)
    #     print(height)
    # #*后定义的参数为命名关键字参数,这类参数,必须被传值,而且必须以关键字实参的形式去传值
    # foo('egon',17,height='185')
    

    四、函数返回值

    1.什么情况下返回值为None没有返回值

    函数没有return:

    def fa():
        print("hhah") 

    return none:

    def fa():
        print("hhah")
        return None

    return 没有结果:

    def fa():
        a = ""
        return a
    

    2.return返回值

    return可以返回一个值也可以返回多个值,可以返回元组列表元素等。。。。

    return 值1,值2,值3,... 返回结果:(值1,值2,值3,...)

    def foo():
        print('from foo')
        x=1
        return x
    res=foo()
    print(res)

    def foo():
    print('from foo')
    x=1
    return 1,[2,3],(4,5),{}
    # res=foo()
    # print(res) #打印结果:(1,[2,3],(4,5),{})
    # a,b,c,d=foo()
    # print(d)

    五、自定义函数 

    1.为什么要定义函数

    函数相当于工具,就像修车:需要扳手、电笔、油壶等,每一个工具就相当于一个函数,在修车之前先把工具准备好

    用到个些拿哪个,先定义后使用,如果没有定义而直接使用,就相当于引用了一个不存在的变量名。

    2.函数语法

    函数的使用包含两个阶段:定义阶段和使用阶段 

    语法
    定义函数: def 函数名(参数1,参数2,...): """文档注释""" 函数体 return 值
    调用:
    x=len('hello')
    print(x)

    3.定义函数形式 

    1.无参函数

    无参数函数:如果函数的功能仅仅只是执行一些操作而已,就定义成无参函数,无参函数通常都有返回值

    def print_star():
        print('#'*6)
    

    2.有参函数

    定义有参函数:函数的功能的执行依赖于外部传入的参数,有参函数通常都有返回值

    def my_max(x,y):
        res=x if x >y else y
        return res
    
    三元表达式
    if x > y:
        print(x)
    else:
        print(y)
    同上将True结果放在左边False结果放到右边
    res=x if x > y else y
    print(res)
    

    3.空函数 

    
    
    def insert():
        """插入功能"""
        pass
    def select():
        """查询功能"""
        pass
    def delete():
        """删除功能"""
        pass
    def update():
        """更新功能"""
        pass
    
    
    

    六、函数调用

    1.有参函数调用

    bar('egon') #定义时有参,调用时也必须有参数
    

    2.无参函数调用

    foo() #定义时无参,调用时也无需传入参数
    

    3.使用形式

    直接调用

    foo()直接调用

    作为变量形式 def my_max(x,y): res=x if x >y else y return res res=my_max(1,2)*10000000 #调用函数的表达式形式 print(res)

    res=my_max(my_max(10,20),30) #把函数调用当中另外一个函数的参数
    print(res)
  • 相关阅读:
    语句被终止。完成执行语句前已用完最大递归 100
    Sql日期时间格式转换(转)
    MVC 记录操作日志与过滤特殊字符
    掌握这些,自学效率嗖嗖的!
    正式开始聊聊自学那些事儿!
    《可执行的自学编程方法体系》前言-为什么我要分享自己的自学经验总结?
    系统化的学习才是有效的学习!
    知识学了就忘怎么办?
    “面试”是绝佳的学习方式!
    分水岭:知识的深度拓展
  • 原文地址:https://www.cnblogs.com/hanjialong/p/6863197.html
Copyright © 2011-2022 走看看