目录
1、简介
2、参数
3、返回值
4、嵌套调用
5、变量的作用域
5.1 局部变量
5.2 全局变量
5.3 global 关键字
6、参数进阶
6.1 形参和实参的值传递
6.2 缺省参数
7、匿名函数
3、返回值
在程序开发中,有时候会希望⼀个函数执⾏结束后,告诉调⽤者⼀个结果, 以便调⽤者针对具体的结果做后续的处理。
返回值是函数完成⼯作后,最后给调⽤者的⼀个结果。
1、 return 关键字
在函数中使⽤ return 关键字可以返回结果。
调⽤函数⼀⽅,可以使⽤变量来接收函数的返回结果 。
# 创建一个函数
def add(i,j):
return i+j
# 调用函数
a = add(1,2)
print(a)
注意: return 表示返回, 后续的代码都不会被执行
4、嵌套调用
⼀个函数⾥⾯又调⽤ 了另外⼀个函数,这就是函数嵌套调⽤。
如果函数 add 中,调⽤了另外⼀个函数 remove,那么执⾏到调⽤add 函数时,会先把函数 add 中的任务都执⾏完才会回到 remove 中调⽤函数 add 的位置, 继续执行后续代码 。
# 创建一个函数add
def add():
remove()
print("我是的名字叫 add")
# 创建一个函数 remove
def remove():
print("我的名字叫 remove")
# 调用函数
add()
5、变量的作用域
变量分为局部变量和全局变量。
5.1 局部变量
- 局部变量是在函数内部 定义的变量,只能在函数内部使⽤;
- 函数执⾏结束后,函数内部的局部变量,会被系统回收;
- 不同的函数,可以定义相同的名字的局部变量,彼此之间不会产⽣影响 ;
# 创建一个函数add
def add():
i = 10
print(remove() + i)
# 创建一个函数 remove
def remove():
i = 20
return i;
# 调用函数
add()
局部变量的生命周期
所谓⽣命周期就是变量从被创建到被系统回收的过程 ;
- 局部变量在函数执⾏时才会被创建 ;
- 函数执⾏结束后局部变量被系统回收 ;
- 局部变量在⽣命周期内,可以⽤来存储 函数内部临时使⽤到的数据 。
5.2 全局变量
全局变量是在函数外部定义的变量,所有函数内部都可以使⽤这个变量 。
为了保证所有的函数都能够正确使⽤到全局变量,应该将全局变量定义放在其他函数上方。
i = 100
# 创建一个函数add
def add():
print(remove() + i)
# 创建一个函数 remove
def remove():
return i;
# 调用函数
add()
5.3 global 关键字
如果在函数中需要修改全局变量,需要使⽤ global 进⾏声明
i = 100
# 创建一个函数add
def add():
print(remove() + i)
# 创建一个函数 remove
def remove():
# 函数内部使用 global 关键字声明全局变量 i
global i
i = 200
return i;
# 调用函数
add()
6、参数进阶
6.1 形参和实参的值传递
1、如果函数的参数为数字,字符串,在函数内部,针对形参使⽤赋值语句,不会影响调⽤函数时传递的实参的值。
# 创建一个函数add
def add(i):
i += 1
print("i = %d" % i)
# 调用函数
a = 100
add(a)
print("a = %d" % a)
2、如果函数参数为列表,集合,字典等类型。函数内部修改了参数的内容,会影响到外部的数据 。
# 创建一个函数add
def add(i):
i[0] = '小黄'
a = ["小明", 18, '男']
add(a)
print(a)
6.2 缺省参数
- 定义函数时,可以给 某个参数指定⼀个默认值,具有默认值的参数就叫做缺省参数 。
- 调⽤函数时,如果没有传⼊缺省参数的值,则在函数内部使⽤定义函数时指定的参数默认值 。
- 函数的缺省参数,将常⻅的值设置为参数的缺省值,从⽽简化函数的调⽤ 。
# 创建一个函数add
def add(i, j=100):
print(i + j)
add(1)
缺省参数的定义位置:
必须保证带有默认值的缺省参数在参数列表末尾 。
以下是错误示范
# 创建一个函数add
def add(j=100,i):
print(i + j)
7、匿名函数
⽤lambda 关键词能创建⼩型匿名函数。这种函数得名于省略了⽤def 声明函数的标准步骤。
示例:
sum = lambda a, b: a + b
print(sum(1,2))
sum = (lambda a, b: a if a>b else b)(1,2)
print(sum)
Lambda 函数只能返回⼀个表达式的值 ;
匿名函数不能直接调⽤print,因为 lambda 需要⼀个表达式 。
未经允许不得转载:便宜VPS » Python之函数【参数,返回值,嵌套调用,作用域,匿名函数】