一、函数的定义
函数具有完成重复事件的功能。
函数分为两种:内置函数、自建函数。
二、内置函数
将大量需要重复使用的功能封装,我们可以直接调用的就是内置函数。
1.构造不同的可迭代对象
# list 将可迭代对象转化为列表
# tuple 将可迭代对象转化为元组
# set 构建一个集合
# dict 构造一个字典
# x = range(1,10)
# print(x)
# y = list(x)
# y = tuple(x)
# y = set(x)
# print(y)
x = dict(python1=198,python2=398)
print(x)
2.数学函数
# min最小值、max最大值、sum求和、pow计算指数、abs绝对值
x = [2,34,24,4,7,3,38,78]
print(min(x))
print(max(x))
print(sum(x))
print(pow(2,3)) # 8
print(abs(-234)) # 234
3.排序,组合
sorted( )函数对所有可迭代的对象进行排序操作,保留原对象不变。
x = [3,5,6,27,4,48,456,88]
print(x)
y = sorted(x)
print(y)
# 逆序
z = sorted(x,reverse=True)
print(z)
# x是不变的
zip( )函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
zip( )返回的是一个对象,如果需要展示列表,需要手动list( )转换。
x = [4, 9, 2]
y = [5, 8, 1]
xy = zip(y,x)
print(list(xy))
# [(5, 4), (8, 9), (1, 2)]
4.all( )、any( )
all( )用于判断所有元素是否都为True
any( ) 用于判断是否有元素为True
元素除了0、空、None、False外都算True
三、自定义函数
有四种类型:
1、没有参数,没有返回值
2、有参数,没有返回值
3、没有参数,有返回值
4、有参数,有返回值
def area1():
print(3.14*10*10)
def area2(r):
print(3.14*r*r)
def area3():
return 3.14*10*10
def area4(r):
return 3.14*r*r
area1() #314.0
area2(10) #314.0
print(area3()) #314.0
print(area4(10)) #314.0
返回值总结:
如果没有返回值,直接调用函数,执行函数。
如果有返回值,函数的运行结果,作为一个值来使用。
def area1():
return 1*100+2*100
print(area1())
def area2(r):
print(r*100)
area2(2)
四、局部函数
函数中还包含函数,就称为局部函数。
def my(leixing,shuzhi):
def double(shuzhi):
return shuzhi*2
if leixing=="a":
print(double(shuzhi))
my('a',5)
# 10
def computer(type,n):
def double(n):
return 2*n
def half(n):
return n/2
def sqr(n):
return n*n
if type =='double':
return double(n)
elif type =='half':
return half(n)
else:
return sqr(n)
print(computer('half',10))
print(computer('double',10))
print(computer('sqr',10))
# 5.0
# 20
# 100
五、匿名函数
较于局部函数,省去了定义函数这一部分,直接使用lambda :lambda后面的n是参数,分号后面跟着的是对参数的操作。
def computer(type):
if type =="double":
return lambda n:n*2
elif type == 'half':
return lambda n:n/2
else:
return lambda n:n*n
fun=computer('half')
print(fun(10))
fun=computer('double')
print(fun(10))
fun=computer('test')
print(fun(10))
def computer(mode):
if mode == 'add':
return lambda n:n+15
elif mode =='jian':
return lambda n:n-15
else:
return lambda n:n*6
x = computer('add') # computer调用add模式,再将这一个赋值给x
print(x(8)) # x的值是8
y = computer('jian')
print(y(10))
z = computer('multiply')
print(z(4))
六、函数的作用域
局部变量离开了函数体就会被销毁。
x = 'python功能还行'
def y():
x = 'python功能很强大'
print(x)
y()
print(x)
# python功能很强大
# python功能还行
在函数体内使用global,函数体内可修改。
message="python还行"
print(message)
def talk():
global message
message = "python很不错"
print(message)
talk()
print(message)
# python还行
# python很不错
# python很不错