函数指将一串代码打包放在一个函数名下随时可以调用
格式:def 函数名(可以有多个形参)
内容
return 内部定义的值
return返回值可以有多个
调用方式:函数名()
在函数内部有时会定义变量,这个时候他是局部变量,如果在全局变量中有重复名称的变量,局部变量不会影响全局变量,若是想在函数内部改变全局变量可以使用global语句。
x=233 #这是一个全局变量
def pp():
global x #使用全局变量x
x = 12134
return x
a=pp()
print(a) #输出结果应该是12134(修改过的全局变量x)
同时若是想查看代码中的全局变量和局部变量可以使用locals和globals查看
可变参数args
def add(a,b,args) #此时除了a,b是不可变参数后面的args是可变参数,当给的数据多于2个时多的会全分给可变参数args并以元组的形式保存
args表示可变的位置参数
**kwargs表示可变的关键字参数,多出来的关键字参数会以字典保存
def kk(a, b, c, d, ll=8, args, *kwargs):
e = a + b + c + d
e = ll
print(‘kwargs的值是:’.format(kwargs)) #查看存储在kwargs中的数据
for i in args:
e += i
return e
print(kk(2, 4, 5, 6, 7, 8, 3, 4, 5, x=5, y=9))
在调用时给的是地址值,int类型的参数不可变,如果函数调用的是列表是可以改变列表中的值的。
函数的注意事项:三要素:函数名,参数,返回值
在某些语言里允许函数名重复,python里是不允许的,如果有重名函数后一个会替换前一个
递归:在函数运行中调用自己,把一个大问题转化成无数个小问题
递归写斐波那契数列
def fibonacci(n):
if n==1 or n==2: #斐波那契数列里第一个第二个都是1
return 1
return fibonacci(n-2) + fibonacci(n-1) #斐波那契下一个的值是前两个相加
i = int(input())
print(fibonacci(i))
除了使用def可以表示函数,还可以用lambda表达式来写一个简易的函数
def sum(a,b):
return a+b
#上下这两个表达式的意思都是一样的输出结果是a与b的和
lambda a,b:a+b
lambda匿名函数,函数调用的次数很少,一般只调用一次
匿名函数调用方式
1.给他起个名字 sum=lambda a,b:a+b #但是很少这么用
2.把这个函数当做参数传给另一个函数使用,使用场景较多
def jisuan(x,y,fn):
c=fn(a,b)
return c
def sum(a,b):
return a+b
def minus(a,b):
return a-b
print(jisuan(5,6,sum))
print(jisuan(9,4,minus))
这个时候sum和minus函数只调用了一次可以使用lambda进行简化
def jisuan(x,y,fn):
c=fn(x,y)
return c
x1=jisuan(5,6,lambda x,y:x+y)
x2=jisuan(5,6,lambda x,y:x-y)
x3=jisuan(5,6,lambda x,y:x*y)
x4=jisuan(5,6,lambda x,y:x/y)
print(x1, x2, x3, x4)
filter:用于筛选,第一个参数是个函数(筛选方式),第二个参数是可迭代对象(列表,元组,字典)
a=[15,16,24,35,26,18,19,20,21,28]
x=filter(lambda age:age>18,a)
for i in x:
print(i,end=’ ‘)
map:第一个参数是个函数,第二个参数是可迭代对象(列表,元组,字典),对一个可迭代对象里的元素都进行函数中的操作
a=[15,16,24,35,26,18,19,20,21,28]
x=map(lambda num:num+2,a) #对每个元素都进行+2的操作
for i in x:
print(i,end=’ ‘)
reduce:对参数序列中的元素进行叠加,比如将列表中第一个第二个元素相加再将结果赋值给第一个变量与后一个元素相加。简单来说就是减项求和。
from functools import reduce
a = [15, 16, 24, 35, 26, 18, 19, 20, 21, 28]
def he(x,y):
return x+y
print(reduce(he, a, 0))
内置函数:
数字相关:abs:取绝对值
divmod:求两个数字相除的商和余数
max:求最大值
min:取最小值
pow:幂运算
round:四舍五入,第一位放数字,第二位放保留到小数点后多少位
sum:求和
可迭代对象相关方法:all:所有元素转化成布尔值,并进行与运算
any:所有元素转化成布尔值,并进行或运算
len:获取长度
iter:获取到可迭代对象的迭代器
next:for……in循环的本质就是调用迭代器的next方法
sorted:排序
转换相关:bin:转换成二进制
oct:将数字转化成八进制
hex:将数字转化成十六进制
chr:将ASCII码转换成对应的字符
ord:chr的逆向操作
eval:执行字符串里的操作
repr:以字符串的形式保存数据
输入输出:input:输入
print:输出
变量相关:globals:查看所有的全局变量
locals:查看所有的局部变量
判断对象相关的方法:isinstance:判断一个对象是否由一个类创建出来的
issubclass:判断一个类是否是另一个类的子类
help:查看帮助文档
id:查看地址值
dir:列出对象的所有属性和可使用方法
exit:以指定退出码退出程序
open:打开文件
