Appearance
函数
- 对某一特定的功能或者代码块进行封装,在需要使用该功能的时候直接调用即可
定义函数
- 格式
python
def 函数名(参数列表):
# 函数体
return 返回值1,返回值2...- 示例
python
def func1(a,b):
return a+b函数参数
参数分类
- 形参:
- 函数定义时,函数名后面括号中的参数
- 实参:
- 函数调用时,函数名后面括号中的参数
传参方式
- 固定参数
- 定义函数时就已确定参数个数
python
# 定义函数
def func1(a,b):
return a+b
# 调用函数
print(func1(1,2)) # 3- 关键字参数
- 使用关键字参数可以不按照参数的顺序传入参数,而是使用参数名来指定参数值。
- 混合使用时,位置参数必须在关键字参数之前
python
def func1(name, age, gender):
print(name, age, gender)
# 关键字参数
func1(name = "张三", age = 19, gender = "男")
# 混合使用,位置参数必前面
func1("张三", age = 19, gender = "男")- 可变参数
- 定义函数时,参数名前加一个星号
* - 调用函数时,参数名前加一个星号
* - 可变参数可以接收任意数量的参数,包括零个参数
- 定义函数时,参数名前加一个星号
python
def func1(*args):
return sum(args)
args = [1,2,3,4,5]
print(func1(*args)) # 15- 可变关键字参数
- 定义函数时,参数名前加一个星号
** - 调用函数时,参数名前加一个星号
** - 可变参数可以接收任意数量的参数,包括零个参数
- 定义函数时,参数名前加一个星号
python
def func1(**kwargs):
return sum(kwargs.values())
print(func1(a=1,b=2,c=3)) # 6参数默认值
- 定义函数时,参数名后加一个等号和默认值
- 调用函数时,不传入参数时,使用默认值
- 调用函数时,传入参数时,使用传入的值
python
def func1(a=1,b=2):
return a+b
print(func1()) # 3
print(func1(1,2)) # 3注意事项
- 参数顺序:位置参数>
*args>默认值>**kwargs
函数返回值
- 函数
return语句返回值 - 函数没有
return语句时,默认返回 None - 函数可以返回多个值,以元组的形式返回
- 函数返回值可以使用变量接收
python
def func1():
print("func1") # 没有返回值,会返回None
print(func1()) # None
def func2():
return "func2" # 返回一个参数,会以字符串的形式返回
print(func2()) # func2
def func3():
return {"name":"func4"} # 返回一个字典
print(func3())
def func4():
return "func3","test" # 返回多个参数,会以元祖的形式返回
print(func4()) # ('func3', 'test')
def func5():
return 1,2
a,b = func5() # 可以将返回的多个参数分别赋值给多个变量
print(a,b)变量作用域
全局变量
- 定义在函数外部的变量
- 函数内部可以使用
- 函数外部也可以使用
局部变量
- 定义在函数内部的变量
- 函数内部可以使用
- 函数外部不能使用
python
total = 0 # 全局变量
def sum5(a,b):
sm = arg1 + arg2 # sm在这里是局部变量,外部不可使用
return sm
print(sum5(1,2)) # 3作用域关键字
global关键字- 作用:在函数内部使用
global关键字来引入外部的全局变量 - 注意:
- 引入全局变量后,函数内部可以使用全局变量
- 引入全局变量后,函数内部可以修改全局变量
- 作用:在函数内部使用
python
total = 0 # 全局变量
def sum5(a,b):
global total # 引入外部全局变量
total = a+b
return total
print(sum5(1,2)) # 3
print(total) # 3nonlocal关键字- 在函数内部使用
nonlocal关键字是向上一层一层查找非全局变量,并引入
- 在函数内部使用
python
a = 0
def func1():
a = 1
def func2():
a = 2
def func3():
nonlocal a # 向上一层一层的查找变量a,找到a就停止,立马引入。使该层的变量a 在下层可以访问修改
a = 3
print("func3:", a) # 3
func3()
print("func3:", a) # 3
func2()
print("func2:", a) # 1
func1()函数嵌套
函数可以多层嵌套。
python
def func1():
print("func1")
def func2():
print("func2")
func2()
func1()