• Python3中的函数 大全


    Python 函数

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

    函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print()。但也可以自己创建函数,这被叫做用户自定义函数。

    1.函数的定义:

    你可以定义一个由自己想要功能的函数,以下是简单的规则:

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。

    • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。

    • 函数内容以冒号起始,并且缩进。

    • pass 关键字,代表什么都不干

    • exit(num)   强行退出(num:是一个数字,显示为退出码)

    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

    语法

    def functionname( parameters ):
       function_suite   return [expression]

    默认情况下,参数值和参数名称是按函数声明中定义的的顺序匹配起来的。

    举例1:

    def add(x, y):print(“x = {0}”.format(x))
    print(“x = {0}”.format(x))
    print(“x  + y  = {0}”.format(x+y))return x+y

     举例2:

    #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2018/4/14 20:31# @Author  : Feng Xiaoqing# @File    : demo1.py# @Function: -----------def f(x,l=[]):
        for i in range(x):
            l.append(i*i)
        print(l)# f(2) = f(2, l=[])f(2)# 结果:[0, 1]f(3,[3,2,1])# 结果: [3, 2, 1, 0, 1, 4]f(x=3, l=[])# 结果: [0, 1, 4]

    运行结果:

    [0, 1]
    [3, 2, 1, 0, 1, 4]
    [0, 1, 4]

    2.函数的调用

    定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。

    这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。

    如下实例调用了add()函数:

    #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2018/4/15 21:01# @Author  : Feng Xiaoqing# @File    : demo2.py# @Function: -----------# 自定义加法函数add()def add(x,y):
        print("{0} + {1} = {2}".format(x,y,x+y))    return
        print("finished")   #在return后不会执行这条语句# 调用函数,计算2+3的得数add(2,3)

    运行结果:

    2 + 3 = 5

     

    3.函数的参数

    形式参数和实际参数

        在定义函数时,函数名后面,括号中的变量名称叫做形式参数,或者称为"形参"

        在调用函数时,函数名后面,括号中的变量名称叫做实际参数,或者称为"实参"

           

     def fun(x,y):  //形参    print(x + y)
    
        fun(1,2)     //实参    3    fun('a','b')    ab

    函数默认参数:

        缺省参数(默认参数)

    def fun(x,y=100)      print x,y#调用:fun(1,2)fun(1)

        定义:

    #!/usr/bin/env python# -*- coding: utf-8 -*-def fun(x=2,y=3):
    
      print x+y

        调用:

    fun()#结果:5fun(23)#结果26fun(11,22)#结果:33

    我们经常在看别人的代码中,经常出现def(*args, **kwargs)这样的表现形式:

    *args             指的是:tuple  (1, )
    **kwargs       指的是:dict   {“k”: “v”}

    fun(*args, **keargs)
    fun(1, 2, 3, 4, 5, a=10, b=40)

     

    4.函数的返回值

    函数返回值:

    函数被调用后会返回一个指定的值

    函数调用后默认返回None

    return返回值

    返回值可以是任意类型

    return执行后,函数终止

    return与print区别

    #!/usr/bin/env python# -*- coding:utf-8 -*-def fun():
    
      print 'hello world'
    
      return 'ok'
    
      print 123fun()#结果hello world123None

     

    5.函数的变量

    局部变量和全局变量:

    Python中的任何变量都有特定的作用域

    在函数中定义的变量一般只能在该函数内部使用,这些只能在程序的特定部分使用的变量我们称之为局部变量

    在一个文件顶部定义的变量可以供文件中的任何函数调用,这些可以为整个程序所使用的变量称为全局变量。

    def fun():   x=100   print x
    
    fun()
    
    x = 100    def fun():   global x   //声明
    
       x +=1   print x
    
    fun()print x

       

    外部变量被改(x由100改为101):

    x = 100def fun():
    
      global x
    
      x += 1
    
      print (x)
    
    fun()print (x)#结果101101

    内部变量外部也可用:

    #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2018/4/15 21:33# @Author  : Feng Xiaoqing# @File    : demo2.py# @Function: -----------x = 100def fun():
    
        global x
    
        x +=1
    
        global y
    
        y = 1
    
        print(x)
    
    fun()
    
    print(x)
    
    print(y)#结果:1011011

       

    统计程序中的变量,返回的是个字典

    #!/usr/bin/env python# -*- coding:utf-8 -*-x = 100def fun():
        x = 1
        y = 1
        print(locals())
    
    fun()print (locals())

      结果:

    {'y': 1, 'x': 1}
    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02FF6390>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/PycharmProjects/PythonLive/untitled/day07/demo2.py', '__cached__': None, 'x': 100, 'fun': <function fun at 0x052D2390>}

     

    6.匿名函数

    顾名思义就是没有名字的函数,那为什么要设立匿名函数,他有什么作用呢?
    lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方

    python 使用 lambda 来创建匿名函数。

    • lambda只是一个表达式,函数体比def简单很多。

    • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

    • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

    • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

    语法

    lambda函数的语法只包含一个语句,如下:

    lambda [arg1 [,arg2,.....argn]]:expression

     举例:

    求两数的乘积:

    常规写法:

    def fun(x,y)
      return x*y

    lambda版本写法:

    r = lambda x,y:x*y


    7.高阶函数

    (1)map(f, list)

    返回每个元素通过f计算完的value的list

    map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

    举例:计算列表里值的平方

    #!/usr/bin/env python# -*- coding:utf-8 -*-def f(x):
        return x*xfor i in map(f,[1,2,3,4,5,6,7]):
        print(i)

    结果:

    14916253649

    (2)reduce(f,list)函数(求list中数的和)

    reduce把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

    举例:计算列表中所有数的和

    #!/usr/bin/env python# -*- coding:utf-8 -*-from functools import reduce  #导入reduce函数def f(x,y):
        return x+y
    print(reduce(f,[1,2,3,4,5,6,7,8,9,10]))
    print(reduce(f,range(1,101)))#结果:555050

    (3)filter()函数(过滤)

    filter函数接收一个函数f和一个list,函数f的作用是对每个元素进行判断,返回True或者False,filter()根据判断结果自动过滤掉不符合条件的元素,返回符合要求的元素组成的list

    filter(lamdba x: x%2 ==1, [1, 2, 3, 4, 5])

    举例:计算list中小于7的数

    #!/usr/bin/env python# -*- coding:utf-8 -*-for i in filter(lambda x:x<7, [1, 2, 3, 4, 5,40,8]):
        print(i)#结果:12345

    (4)sorted()函数(排序)

    sorted(...)
        sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

    # sorted(iterable, key, reverse)# iterable  一个可迭代的对象# key 对什么进行排序# reverse  bool类型,如果为true为反序, 默认为false# 返回值是一个list

    举例:厦工叉车

    #!/usr/bin/env python# -*- coding: utf-8 -*-# @Time    : 2018/4/15 22:47# @Author  : Feng Xiaoqing# @File    : demo3.py# @Function: -----------m = dict(a=1, c=10, b=20, d=15)
    print(sorted(m.items(), key = lambda d:d[1],reverse = True)) #按value值倒序排列#结果:[('b', 20), ('d', 15), ('c', 10), ('a', 1)]
  • 相关阅读:
    Flash与JS之间相互调用以及参数传递
    在Javascript中监听flash事件(转)
    DataTables.js插入数据的两种方式
    DataTable在内存中的使用
    oracle分页存储过程
    清空highcharts数据
    JDBC源码分析(加载过程)
    MAVEN实现多环境搭建
    Maven基础
    Ajax如何提交数据到springMVC后台
  • 原文地址:https://www.cnblogs.com/xyou/p/9065861.html
Copyright © 2020-2023  润新知