zoukankan      html  css  js  c++  java
  • 七、python函数

    一、函数定义

    输入一定的数据后,能够根据里面的执行步骤,算出另一些数据的值

    def  函数的名称(函数参数1,参数2~~~):
           '''
             文档字符串 docstring
             函数的注释,这个函数是干嘛用的
             参数:
             返回值:
            '''
           函数体(函数的具体执行的逻辑)
           return 函数的返回值(输出)
     
    2)函数调用
    def add(a,b):
        '''两个数相加'''
        c = a + b
        return c
    sum = add(3,4)
    print(sum)

    3)函数返回值return

    函数里面的return表示函数的返回值,在调用函数之后可以通过变量进行接收

    函数体遇到return就终止运行,相当于for/while中的break

    def add(a,b):
        if a > 100:
            return a + b  #return终止函数,后面就不会执行
        return a + b*3
    print(add(150,50))

    函数的输出数据是由return决定的,函数没有retruen,得到的数据就是None

    def add(a,b):
        c = a + b
    print(add(1,2))  #结果是none
    #定义一个有返回值的append函数
    def append(origin_list,element):
        origin_list.append(element)
        return origin_list
    print(append(['zjx'],'python')) 
    #结果['zjx', 'python']

    注意:没有定义的函数,无法调用。

    4)函数的参数

    形式参数:函数在定义的时候写的参数,相当于变量名,如上的origin_list

    实际参数:函数在调用的时候写的参数,他是值,如上的['zjx']

    函数从调用的角度来说,分为形式参数和实际 参数。形参是指函数创建和定义过程中小括号里的参数;而实参指得是函数在被调用过程中传递进来的参数

    def add(a,b):
        c = a + b
    print(add(1,2))  #a,b是形参,1,2是实参

    位置参数:形式参数和实际参数要一一按照顺序对应

    def append(origin_list,element):
        origin_list.append(element)
        return origin_list
    print(append(['zjx'],'python')) 

    5)函数文档(.__doc__)

    函数文档的作用是描述该函数的功能,给函数写文档是为了让别人可以更好的理解你的函数。

    函数文档字符串可以通过特殊属性 ._ _doc_ _

    6)默认参数

    在函数定义的时候给形式参数一个默认值,有实参时按实参,无实参时按形参的默认值

    可以简化函数调用过程,只需要传入少量参数就可以实现调用过程

    如果调用函数的时候传入了这个实际参数,默认值不会生效

    默认参数必须放到为位置参数的后面

    def append(origin_list,element="hello"):
        origin_list.append(element)
        return origin_list
    print(append(['zjx'])) 

    7)关键字参数

    可以提高函数调用时候的可读性,更加容易理解实际参数的意义

    关键字的名字就是形式参数

    关键字参数区别位置参数:可以不按照顺序调用

    关键字参数也要放到位置参数后面

    def get_name(first_name,middle_name,last_name):
        '''获取名字'''
        return first_name + middle_name + last_name
    print(get_name( middle_name = 'jing',first_name='zhang',last_name='xuan'))    #关键字参数在调用的时候,可以不按照顺序

    8)可变长参数

    1.位置可变长参数         *args       函数里面(元组)

    *names:在函数内部的表现形式:names是一个元组

    可以接收从函数调用的时候,多余的位置参数

    加在其他位置参数的后面
    def get_name(firstname,*names):
      print(firstname)
      print(names)
      return firstname
    get_name('zhang','jingxue','好看')   
    '''
    结果:
    zhang
    ('jingxue', '好看')
    '''

    可不可以只有*names   可以的

    def get_name(*names):
      print(names)
    get_name('jingxue','好看')   
    
    '''
    结果:
    ('jingxue', '好看')
    '''


    2.关键字可变长参数    ** kwargs函数里面得到的是{字典}

    # 调用函数时**kwargs不传入参数,返回的是空字典{}
    def
    get_name(*names,**kwargs): print(names) print(kwargs) get_name('zjx','wang') ''' 结果: ('zjx', 'wang') {} '''
    # 调用函数时**kwargs传入参数,返回的是字典{},以key-value形式存储
    def
    get_name(*names,**kwargs): print(names) print(kwargs) get_name('zjx','wang',middle='hello',last='python') ''' 结果: ('zjx', 'wang') {'middle': 'hello', 'last': 'python'} '''

    注意:两个*代表关键字参数,一个*号代表位置参数。关键字参数要放在位置参数后面

          位置可变长参数*names 要放在关键字可变长参数**kwargs的前面

     
     
     
  • 相关阅读:
    Netty Nio启动全流程
    线性表
    java stream 原理
    SpringBoot 分布式session
    mockito
    RxJava
    HandlerMapping 详解
    SpringMVC 架构
    Spring Cloud 配置服务
    SpringBoot常用配置简介
  • 原文地址:https://www.cnblogs.com/zhangjx2457/p/13628924.html
Copyright © 2011-2022 走看看