zoukankan      html  css  js  c++  java
  • python——函数基础

    一.对函数的理解:
    它是由代码组成的,可以被重复使用(作用就是提高代码的复用性),想要添加一个新的功能或者修改一个功能等添加其它功能,只需要对函数进行修改即可。

    函数的定义:
    语法:
    def 函数名(参数1,参数2……):
    函数体

    return 返回值

    注:函数执行到了return,就会整个代码都会结束。如果函数中没return的存在,会默认返回None。


    二.定义函数三种形式:
    介绍三种形式:
    第一种:有参
    有参函数概述:需要根据外部传进来的参数,需要注意:定义有参时,意味着调用时也必须要传入参数

    第二种:无参
    无参函数概述:不需要从外部传进来任何参数,需要注意:定义无参时,意味着调用时不需要输入参数

    第三种:空函数
    空函数概述:想要添加某些功能,但不知道怎么写,这时可以暂时使空函数,先实现其它的功能。

    有参如下:

    def fun(x):
      print("有参")
    fun(10)
    

      

    无参如下:

    def fun1():
      print("无参")
    fun1()
    

      


    空函数如下:

    def fun2():
      pass
    fun2()
    

      


    三.函数式编程
    1.Map函数
    map()函数返回的是一个结果list,map函数会把每一个参数都以相应的处理函数进行迭代处理,map函数接收两个参数,一个是函数,
    另一个是序列,map将传入的函数依次作用到序列的每一个元素,并把结果作为新的list返回
    简单来说:就是处理序列中的每一个元素,得到的结果是一个“列表”,该“列表”元素个数及位置与原来一样

    简单案例:

    将arr的值都转换大写
    arr="zhangsi"
    res=list(map(lambda x:x.upper(),arr))#这是文中的字符串都转换大写
    print("map函数",res)
    

      

    2.filter函数
    filter函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。序列的每一个元素作为参数传递给函数进行判,
    然后返回True或者False,最后将返回True的元素放到新列表中
    简单来说:就是判断每个元素得到布尔值,如果是True则留下来

    案例:使用filter函数来写

    name=["jiang_san","jiang_li","wang_wu","xiao_ming"]
    
    #这里当满足为True,则保留,所以这就是以jiang为开头,打印出来
    #res=list(filter(lambda x:x.startswith("jiang"),name))
    #这里结果为:['jiang_san', 'jiang_li']
    #如不要以jiang开头,就这样改
    res=list(filter(lambda x:not x.startswith("jiang"),name))
    print(res)
    #这里的结果为:['wang_wu', 'xiao_ming']
    

      

    3.reduce函数
    函数将一个数据集合(链表、元组等)中对所有数据进行操作:reduce中的函数function(有两个参数)先对集合中的第1、2个元素进行操作,
    得到的结果再与第三个数据用function函数运算,最后得到一个结果。

    简单来说:就是处理一个序列,然后把序列进行合并操作

    (1)语法

    reduce函数语法:reduce(function,iterable[,initializer])


    (2)函数参数

    function(函数,有两个参数)
    iterable(可迭代对象)
    initializer(可选,初始参数) 
    

      

    (3)返回值
    返回函数计算结果

    简单案例:

    要求:使用reduce,求和
    #使用reduce函数,需要导包
    from functools import reduce
    re=[1,2,3,4]
    res=reduce(lambda x,y:x+y,re)
    print(res)

    四.内置函数

    有这些种分类,如下:


    第一种:数学运算类
    (1)abs(x)
    解释:求绝对值
    注:参数可以整数,也可以是复数。若参数是负数,则返回负数的模

    (2)complex([real[,image]])
    解释:创建一个复数

    (3)divmod(a,b)
    解释:分别取商和余数
    注:整型、浮点型都可以

    (4)float([x])
    解释:将一个字符串或数转换为浮点数。如果无参数将返回0.0

    (5)int([x[, base]])
    解释:将一个字符转换为int类型,base表示进制

    (6)long([x[, base]])
    解释:将一个字符转换为long类型

    (7)pow(x, y[, z])
    解释:返回x的y次幂

    (8)range([start], stop[, step])
    解释:产生一个序列,默认从0开始

    (9)round(x[, n])
    解释:四舍五入

    (10)sum(iterable[, start])
    解释:对集合求和

    (11)oct(x)
    解释:将一个数字转化为8进制

    (12)hex(x)
    解释:将整数x转换为16进制字符串

    (13)chr(i)
    解释:返回整数i对应的ASCII字符

    (14)bin(x)
    解释:将整数x转换为二进制字符串

    (15)bool([x])
    解释:将x转换为Boolean类型


    第二种:集合类操作
    (1)basestring()
    解释:str和unicode的超类不能直接调用,可以用作isinstance判断

    (2)format(value [, format_spec])
    解释:格式化输出字符串
    格式化的参数顺序从0开始,如“I am {0},I like {1}”

    (3)unichr(i)
    解释:返回给定int类型的unicode

    (4)enumerate(sequence [, start = 0])
    解释:返回一个可枚举的对象,该对象的next()方法将返回一个tuple

    (5)iter(o[, sentinel])
    解释:生成一个对象的迭代器,第二个参数表示分隔符

    (6)max(iterable[, args...][key])
    解释:返回集合中的最大值

    (7)min(iterable[, args...][key])
    解释:返回集合中的最小值

    (8)dict([arg])
    解释:创建数据字典

    (9)list([iterable])
    解释:将一个集合类转换为另外一个集合类

    (10)set()
    解释:set对象实例化

    (11)frozenset([iterable])
    解释:转换为string类型

    (12)sorted(iterable[, cmp[, key[, reverse]]])
    解释:队集合排序

    (13)tuple([iterable])
    解释:生成一个tuple类型

    (14)xrange([start], stop[, step])
    解释:xrange()函数与range()类似,但xrnage()并不创建列表,而是返回一个xrange对象,它的行为与列表相似,但是只在需要时才计算列表值,当列表很大时,这个特性能为我们节省内存

    第三种:逻辑判断
    (1)all(iterable)
    注:集合中的元素都为真的时候为真。特别的,若为空串返回为True

    (2)any(iterable)
    注:集合中的元素有一个为真的时候为真。特别的,若为空串返回为False

    (3)cmp(x, y)
    解释:如果x < y ,返回负数;x == y, 返回0;x > y,返回正数


    第四种:IO操作
    (1)file(filename [, mode [, bufsize]])
    解释:file类型的构造函数,作用为打开一个文件,如果文件不存在且mode为写或追加时,文件将被创建。添加‘b’到mode参数中,将对文件以二进制形式操作。添加‘+’到
    mode参数中,将允许对文件同时进行读写操作

    注:
    1.参数filename:文件名称。
    2.参数mode:'r'(读)、'w'(写)、'a'(追加)。
    3.参数bufsize:如果为0表示不进行缓冲,如果为1表示进行行缓冲,如果是一个大于1的数表示缓冲区的大小 。

    (2)input([prompt])
    解释:获取用户输入

    (3)open(name[, mode[, buffering]])
    解释:打开文件

    (4)print
    解释:打印函数

    (5)raw_input([prompt])
    解释:设置输入,输入都是作为字符串处理

    五.反射
    (1)callable(object)
    解释:检查对象object是否可调用

    注:1.类是可以被调用的
    2.实例是不可以被调用的,除非类中声明了__call__方法

    (2)classmethod()
    解释:
    1、注解,用来说明这个方式是个类方法
    2、类方法即可被类调用,也可以被实例调用
    3、类方法类似于Java中的static方法
    4、类方法中不需要有self参数

    (3)compile(source, filename, mode[, flags[, dont_inherit]])
    解释:将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值

    注:
    1、参数source:字符串或者AST(Abstract Syntax Trees)对象。
    2、参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
    3、参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。
    4、参数flag和dont_inherit:这两个参数暂不介绍

    (4)dir([object])
    解释:
    1、不带参数时,返回当前范围内的变量、方法和定义的类型列表;
    2、带参数时,返回参数的属性、方法列表。
    3、如果参数包含方法__dir__(),该方法将被调用。当参数为实例时。
    4、如果参数不包含__dir__(),该方法将最大限度地收集参数信息

    (5)delattr(object, name)
    解释:删除object对象名为name的属性

    (6)eval(expression [, globals [, locals]])
    解释:计算表达式expression的值

    (7)execfile(filename [, globals [, locals]])
    解释:用法类似exec(),不同的是execfile的参数filename为文件名,而exec的参数为字符串

    (8)filter(function, iterable)
    解析:构造一个序列,等价于[ item for item in iterable if function(item)]

    注:
    1、参数function:返回值为True或False的函数,可以为None
    2、参数iterable:序列或可迭代对象

    (9)getattr(object, name [, defalut])
    解释:获取一个类的属性

    (10)globals()
    解释:返回一个描述当前全局符号表的字典

    (11)hasattr(object, name)
    解释:判断对象object是否包含名为name的特性

    (12)hash(object)
    解释:如果对象object为哈希表类型,返回对象object的哈希值

    (13)id(object)
    解释:返回对象的唯一标识

    (14)isinstance(object, classinfo)
    解析:判断object是否是class的实例

    (15)issubclass(class, classinfo)
    解释:判断是否是子类

    (16)len(s)
    解释:返回集合长度

    (17)locals()
    解释:返回当前的变量列表

    (18)map(function, iterable, ...)
    解释:遍历每个元素,执行function操作
    ………………………………

  • 相关阅读:
    线程运行boost库在工作(22)任务之二
    vi 帮助文档 man vi
    跳槽关系三国演义告诉我们的60条真理
    后台端口虚拟主机wdcp的相关问题以及解决方法
    格式化字符串android 格式化时间
    对象查询HQL多表联合查询的问题
    myeclipse8.6中svn插件的安装
    乱码解决方法
    Restfull风格是什么意思?
    poj3013
  • 原文地址:https://www.cnblogs.com/zhang1314/p/13355835.html
Copyright © 2011-2022 走看看