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操作
………………………………