函数函数参数变量作用域函数返回值Lambda函数文档字符串函数注释
函数def function_name(arg1,arg2): # 定义函数用def开头,
#function_name为函数名,以字母、下划线开头后面可跟字母数字下划线,函数名能反映函数所执行的任务。(区分大小写)
#(arg1,arg2)为函数参数,可一个、两个或没有。调用函数时可以传递函数。
function body #函数内容,要缩进
return value #函数返回值,函数执行后返回的值,也可以不返回任何值即视为返回none。
# 例
del introduce(name):
print("hello",name)
introduce('woeld')
#调用函数一次,会输出
hello world
函数参数
- 必须参数:即调用函数时必须传入,且数量、顺序不能变。关键字参数:可不按参数顺序但就需要参数=赋值,但数量得一致。默认参数:即定义函数时给定一个函数值,调用时可以不输入此参数。可变参数:不确定参数数量和内容可用。
此时参数名写为*args可获取一个元组、**kwargs可获取一个字典
# 必须函数
del f1(a,b):
print("a+b",a+b)
add(1,2)
add(1)# 错误
add(1,2,3)# 错误
# 关键字函数
del f2(name,age):
print("姓名:",name)
print("年龄",age)
f2("小明",18)
f2(age=18,name="小明")
# 默认函数
del f3(name,age=18):
print("姓名:",name)
print("年龄",age)
f3("小明")# 默认age=18
f3("小明",19)
# 可变参数
del f4(*args):
print(args)
f4()
f4(1,2)
f4("小明",18)# 获取元组
del f5(**kwargs):
print(kwargs)
f5()
f5(name="小明")# 获取字典
变量作用域
变量的作用域就是变量的命名空间
- 局域变量
一般情况下,在函数内赋值的变量,不做特殊声明的都是局部变量。(作用域是局部的,在当前函数赋值只能在当前函数使用)
函数体定义时的参数、函数体中第一次出现的变量都是局部变量。全局变量
在函数外复制到变量
函数体内对全局变量重新赋值,不会影响函数体外全局变量的值。
global x 可在函数体内对全局变量重新赋值。
del f(x): print(y) return x return y print(x)# 错误 print(y)# 错误 a=1 del f1(a): a=2 print(a)# 输出a=1 del f2(a): global a a=2 print(a)# 输出a=2函数返回值
获取函数体的局部变量,可用return返回
- 没有return,没有返回值–不返回有return,没有返回值–不返回有return,有返回值–返回变量/参数的值返回多个值,会返回一个元组包含返回的值
匿名函数,不需要特别定义函数名
lambda表达式就是将一个函数的参数与返回值用“:”隔开,意义与函数相同,可将其赋值给变量。
一般用于函数只使用一次、在函数中要以函数为参数
def add(x,y): return x+y # 相当于 f=lambda x,y:x+y
内置函数filter,用于筛选序列,过滤不符合的元素。其第一个参数需上传一个函数作为筛选条件,第二个参数为需要筛选的序列。
a=[1,2,3,4,5,6,7,8] b=[x for x in filter(lambda x:x>5,a) print b# 会输出[6,7,8]文档字符串
函数体的第一行可以是字符串,这个字符串就是文档字符串。一般为""" “”"
文档字符串可以用_doc_获取
函数注释定义如下:
def function_name(a:expression,b:expression)->expression: function body return value
用:来给参数注释,用->来给返回值注释



