Python 之函数基础
一、什么是函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数的定义
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
二、函数相关的几个定义
返回值 函数外部的代码想要获取函数的执行结果 ,就可以在函数里用return 语句把结果返回
实例演示
全局变量 与局部变量
- 在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
- 全局变量作用域是整个程序,局部变量作用域是定义该变量的函数。
- 当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用;在其它地方全局变量起作用
实例演示
name = "bob" def change_name(name): print("before change", name) name = "jack" print("after change", name) # 调用输出 before change bob after change jack 查看name bob
全局变量的修改
name = "bob"
def change_name():
global name
name = "bill bobs"
print("after chage", name)
# 调用输出
change_name()
print("在外面查看 name", name)
after chage bill bobs
在外面查看 name bill bobs
作用域
作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
三、几种常见的函数类型
1、位置参数
1.1 定义一个无参函数
# 定义一个say 函数 def say(): print("say hello") # 执行后
say()
say hello
1.2 定义一个有参函数
def add(x, y): return x + y print(add(3, 5)) # 执行后 8
2、关键字参数
# 函数调用的时候可以通过健值加以指定,避免了函数传参的顺序要求
def teacher(name, age, level): print("姓名是 %s,年龄是%s,职级是%s" % (name, age, level)) # 调用输出结果
teacher(age=32, name="张磊", level="中级") # 关键字参数,可以不按照顺序出现 name,age,level
姓名是 张磊,年龄是32,职级是中级
3、默认参数
def student(name, age, sex="female"): print(name, age, sex) #掉用 输出 student("张三", 24, "meale") student("李四", 21) 张三 24 meale # 不指定sex 的话,默认为 female 李四 21 female # 调用输出 student(sex="male", "张三", 32) # 报错 positional argument follows keyword argument #关键字参数,必须放在位置参数之后
4、可变长参数
4.1 *args 变成参数1 返回的是元组
def test(*args): return args
print(test("a"), type(test("a")))
print(test("a", "b", "c"))
# 输出结果
('a',) <class 'tuple'>
('a', 'b', 'c')
4.2 可变长参数2 **kwargs 返回的是一个 字典
def foo(**kwargs): return kwargs # 调用 print(foo()) print(foo(x=1), type(foo(x=1))) print(foo(x=1, y=3)) # 输出结果 {} {'x': 1} <class 'dict'> {'x': 1, 'y': 3}
5、 函数的混用
def student1(name, age, address, sex="male", *args, **kwargs): print("姓名是 %s,年龄是%s,地址是%s,性别是%s,爱好是%s" % (name, age, address, sex, args)) # 调用 student1("张三", 27, "上海", "male", ("读书", "跑步")) # 输出 姓名是 张三,年龄是27,地址是上海,性别是male,爱好是(('读书', '跑步'),)
四、匿名函数
lambda arg1,arg2,.....argn:expression
匿名函数不需要return 来返回值,表达式本身结果就是返回值
演示
普通函数
def func(a, b, c): return a + b + c # 输出 print(func(1, 2, 3))
lambda 函数
f = lambda a,b,c: a + b + c print(f(1, 2, 3))

浙公网安备 33010602011771号