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

原文地址:https://www.cnblogs.com/zhang1314/p/13355835.html