zoukankan      html  css  js  c++  java
  • Python 函数

    函数

    1.什么是函数

    函数就是一整套的通用执行过程,可以得到预期的结果     例如:一个计算和运算的函数,只要你给定参数,执行函数书写的运算过程,得到的结果就是2个或多个数的和运算

    2.Python中函数的定义
    def  函数名称(需要传的参数):

      '''注释部分,用来解释说明此函数实现的功能是什么'''

      代码块(函数体)

      return 返回值

    例子:

    def add(a,b):
        if a >b :
            print('{}大于{}'.format(a,b))
            m=a-b
            return m
        else:
            print('{}小于{}'.format(a,b))
            n=a-b
            return n
    
    print(add(8,19))
    
    输出结果:
    8小于19
    -11

    总结:

    • 函数里面的return  表示的是函数的返回值    可以在函数调用之后通过变量进行接收
    • 函数体遇到return就会终止运行  (也就是return后面的语句是不会执行的),相当于for、while的break
    • 函数的输出结果是由return决定的

    return终止函数,就不会执行第二个return

    def abc(A,B):
        if A>100:
            return A
        return B
    
    print(abc(10,20))
    
    输出结果:
    20

    函数调用以后,得到的数据是由return决定的

    函数没有return返回结果,得到的数据就是None

    def all(A,B):
        if A>10:
            A+B
    
    print(all(10,20))
    
    输出结果:
    None

    定义的函数没有return值,调用函数操作会报错

    函数没有return返回值的情况下
    def all(A,B):
        if A>10:
            n=A+B
            print (n)
    
    m=all(20,20)
    print(m)
    print(m+3)
    
    输出结果:
    None
    TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
    
    函数有return返回值的情况下
    def all(A,B):
        if A>10:
            n=A+B
            return n
    
    m=all(20,20)
    print(m)
    print(m+3)
    
    输出结果:
    40
    43

    print和return的区别:

    • print  是在运行栏中打印输出实际需要打印的返回结果
    • return  是函数运算的结果,获取结果以后不一定打印显示出来(定义一个函数,返回的结果可以方便后续的调用)

    函数的参数

    1.形参和实参

    形参:函数在定义的时候写的参数名,也就是变量名

    实参:函数在调用的时候传入的参数

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

    eg:

    def abc(A,B):
        if A>100:
            return A
        return B
    
    print(abc(10,20))
    
    以上,函数名称为:abc      
    形参是:A,B 因为它只是一个形式,表示占据一个参数位置
    实参:调用函数的时候传入的10和20,就是形参,因为它是具体的参数值

    2.位置参数  (表示的是形式参数和实际参数之间的关系)

    位置参数就是,函数定义的形参,定义函数有几个位置参数,调用过程中,要按照位置参数的顺序一一对应的进行传参(不能多也不能少)

    形参(也就是位置参数)和实参要一一对应,也就是形参和实参的个数和顺序都要一一对应上

    多了少了都不行,位置顺序不一样也不行,可能会报错(因为不同的形参,在函数运算的过程中有着不同的作用)

    形参和实参不是一一对应:
    def all(A,B):
        if A>10:
            n=A+B
            return n
    
    m=all(20,30,90)
    print(m)
    
    运行结果:
    m=all(20,30,90)
    TypeError: all() takes 2 positional arguments but 3 were given

    3.函数文档(.__doc__)

    给函数书写解释说明的文档,是为了让其他人能更好的理解你的函数,所以这是一个良好的习惯

    2 通过定义一个计算器函数,调用函数传递两个参数,
    然后提示选择【1】加 【2】减【3】乘 【4】除 操作,选择之后返回对应操作的值。
    
    '''
    def element(element1,element2):
        '''element1:传递的第一个参数
           element2:传递的第二个参数
           此函数是根据不同的计算需求
           计算传递的两个数的对应值'''
        INPUT = float(input('请选择以下操作
    【1】加 【2】减【3】乘 【4】除 :'))
        if INPUT == 1:
            sum = element1 + element2
        elif INPUT == 2:
            sum = element1 - element2
        elif INPUT == 3:
            sum = element1 * element2
        elif INPUT == 4:
            sum = element1 / element2
        else:
            print('请继续进行计算')
        return sum

    如果你运行时,在函数开头写的函数文档,在运行完成后,是不会被打印出来的,但是它会作为函数的一部分存储起来。这个称为函数文档字符串,它的功能跟注释一样

    与注释不同的是,函数文档字符串可以通过特殊属性(.__doc__)或者是使用help() 函数查看函数的文档

    函数文档如果是分开两部分来写,那么打印过程中只会打印第一个

    def all(A,B):
        '''这是一个函数'''
        '''这是另外一行备注'''
        if A>10:
            n=A+B
            return n
    
    m=all(20,30)
    print(m)
    
    print(all.__doc__)
    
    输出结果:
    50
    这是一个函数

    4.默认参数---提高函数调用的便捷性、放在位置参数的后面

    默认参数就是在函数定义的时候,给形参赋予了默认值的参数,就是给函数一个缺省值

    def languge(name='小明',code='真帅气'):
        return (name + '-->'+ code)
    
    print(languge())   #如果不赋予实参,则使用默认参数
    print(languge('邓伦'))  #重新赋予实参,调用赋予的实参
    
    输出结果:
    小明-->真帅气
    邓伦-->真帅气

    总结:

    • 如果有默认值,在函数调用的时候,如果位置参数是一一对应的,传入了实参,就会按照实际的传参去运行
    • 如果没有传入实参,那就使用默认参数

    默认函数的作用:

    • 简化函数调用过程,只需要传入少量的位置参数,就可以实现函数的调用
    • 默认参数必须放到位置参数的后面(位置参数不管与什么参数一起使用,位置参数必须是在首位)

    关键字参数------提高函数可读性、可以改变参数的顺序、放在位置参数的后面

    普通的参数叫位置参数,使用位置参数可以解决程序员在调用一个函数时,搞乱位置参数的顺序,以至于函数无法按照预期实现的潜在问题

    关键字参数在什么时候用?函数调用的时候用

    关键字参数的作用:可以提高函数调用时候的可读性、更加容易理解实际参数的意义,还是相对于位置参数来说,放在位置参数的后面

    关键字是使用方法:在函数调用的时候使用

    def languge(name,code):
        return (name + '-->'+ code)
    
    print(languge(code='很伟大',name='中国'))
    print(languge('西安',code='大唐不夜城很壮观'))
    print(languge(code='大唐不夜城很壮观','西安'))
    
    
    输出结果:
    结果一:中国-->很伟大
    位置参数是运用在调用函数的过程中,可以不参照位置参数实际的顺序来,只需要改对应的形参传入对应的实参,就可以正常运行
    
    结果二:西安-->大唐不夜城很壮观
    
    结果三:SyntaxError: positional argument follows keyword argument
    第二个的输出结果会报错,因为位置参数无论何时都是排在第一位

    5.可变长参数(2种)

    • 位置可变长参数     *args    函数里面得到的是(元组类型)
    • 关键字可变长参数   **args  函数里面得到的是(字典类型)

    位置可变长参数:在函数内部的表现形式,是一个元组

    位置可变长参数,是用来接收函数调用时,多余的位置参数

    def lang(frist,*names):
        print(frist)
        print(names)
        return frist,names
    
    print(lang('你好','漂亮的','小姐姐'))
    
    输出结果:
    你好
    ('漂亮的', '小姐姐')  #位置可变长参数输出结果为元组   *names代表位置可变长参数,调用时,可以接收多个位置参数
    ('你好', ('漂亮的', '小姐姐'))

    注意:

      可变长位置参数,必须放在其他位置参数的后面,否则会报错

      一般可变长位置参数书写方法为 *args,起到一个占坑的作用。可变长位置参数的命名可以随意取,只要是有意义就ok

      函数调用时,除了已经写明的位置参数,其他的位置参数都被 *args可变长位置参数接收

    **kwargs   关键字可变长参数

    1.调用函数时,**kwargs 参数,返回的是一个字典类型

    def lang(frist,**names):
        print(frist)
        print(names)
        return frist,names
    
    
    print(lang('你好',names1='漂亮的',names2='小姐姐'))
    
    输出结果:
    你好
    {'names1': '漂亮的', 'names2': '小姐姐'}  #关键字位置参数,返回的结果为字典类型
    ('你好', {'names1': '漂亮的', 'names2': '小姐姐'})

    注意:

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

  • 相关阅读:
    Balance的数学思想构造辅助函数
    1663. Smallest String With A Given Numeric Value (M)
    1680. Concatenation of Consecutive Binary Numbers (M)
    1631. Path With Minimum Effort (M)
    1437. Check If All 1's Are at Least Length K Places Away (E)
    1329. Sort the Matrix Diagonally (M)
    1657. Determine if Two Strings Are Close (M)
    1673. Find the Most Competitive Subsequence (M)
    1641. Count Sorted Vowel Strings (M)
    1679. Max Number of K-Sum Pairs (M)
  • 原文地址:https://www.cnblogs.com/lucky1212/p/13865579.html
Copyright © 2011-2022 走看看