函数的创建调用 函数文档
函数创建 def 函数名(): 函数调用 函数名()
函数文档和注释并不一样
#创建函数def 函数文档
def funname ():
'这里写函数文档'
#函数文档和注释并不一样
print("为什么要学习。。。。")
#调用函数
funname()
函数的参数
带参数的函数 多个参数只需要逗号隔开调用带参数的函数必须给参数赋值 可以键盘输入也可以直接赋值
#带参数的函数 多个参数只需要逗号隔开
def funname2(x):
print(x + "为什么要学习")
#调用带参数的函数必须给参数赋值 可以键盘输入也可以直接赋值
y = input("输入你的参数")
x = y
funname2(x)
funname2('直接赋值')
def funname3(y,z):
print(y + z)
funname3(3,4)#直接赋值3,4 计算出结果为7
函数的返回值
函数的返回值return Python的返回值类型是动态改变的,灵活多变
#函数的返回值return Python的返回值类型是动态改变的,灵活多变
def funname4(y,z):
s = y + z
return s
s = funname4(6,4)
print(s)
形参和实参
形参和实参 形参是函数定义过程中小括号里边的内容,它只是一个参数值只属于这一个函数内,实参是调用函数时向函数中形参传递的参数值
关键字参数和默认参数
-
关键字参数 在调用函数的时候,给所传递的参数前加上形参的名字,用名字去匹配所传递的参数,就不会造成参数混乱
- 默认参数 定义了默认值的参数 在创建函数的是后定义默认值
def funname5(x = 4, y = 6): #在这里常见函数的时候给 x y 给了默认值 这里为默认值参数 z = x + y return z z = funname5(x = 9 ,y = 9)#x = 9,y = 9在这里传递参数时加上了x y 名字 为关键字参数
收集参数
-
收集参数,也叫可变参数 只需在参数前加*即可
-
#如果收集参数后边还需要定义参数时需要在调用函数时用关键字参数调用, 也可以给定义的参数给默认值防止程序报错
#收集参数,也叫可变参数 只需在参数前加*即可 def funname6(*x): print("参数的长度是", len(x)) print("第三个参数是", x[2]) funname6(1,2,3,4,5) #如果收集参数后边还需要定义参数时需要在调用函数时用关键字参数调用, 也可以给定义的参数给默认值防止程序报错 def funname7(*x, u): print("参数的长度是", len(x), u) print("第三个参数是", x[2]) funname7(1,2,3,4,5,u = 8)
变量的作用域
- 局部变量:
在函数里边定义的变量是局部变量,在函数外是无法使用该变量
- 全局变量:
在函数外定义的变量是全局变量,他的作用域是整个程序。
def funname8(t, o): s = t + o # t o 在函数里边定义的变量是局部变量,在函数外是无法使用该变量 return s T = 8 O = 8 # T O 在函数外定义的变量是全局变量,他的作用域是整个程序。 R = funname8(T,O) print(R)
global关键字
global关键字将局部变量变为全局变量
def g():
global g1
g1 = 5
s = g1
print("s = ",s)
g() #调用g()结果为 s = 5
print(g1) #因为在函数中定义了global g 所以在这里可以直接使用g
内嵌函数
内嵌函数,在函数中再定义一个函数
def fun1():
print("fun1")
def fun2():
print("fun2()")
fun2()#在fun1中调用fun22
fun1()#在整个函数外调用fun1
lambda 表达式(匿名函数)
lambda 表达式(匿名函数) 作用:省去了函数的定义过程,简化代码的可读性。
filter()过滤器 map()映射
#普通定义
def lfun(x):
return x + x
lfun(5) #结果为10
#用lambda写
lfun2 = lambda x:x+x
lfun2(5) #结果为10
#将0-9中偶数过滤
f =list(filter(lambda x:x%2,range(10)))
print(f) #结果为[1, 3, 5, 7, 9]
#将0-9中的数乘以2
f2 =list(map(lambda x:x * 2 ,range(10)))
print(f2) #结果为[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]