函数的返回值
使用return返回函数执行结果,return后面可以是任意一个参数;也可以是多个任意参数,如果是多个参数,底层会将其存入元组,将元组作为整体并返回
代码示例:
def add_1(a,b):
result = a+b
print (result) # 只能在函数体中打印,没办法在函数体之外打印
return 'y' # 使用return返回一个结果,是一个任意的参数
x = add_1(1,1)
print (x)
'''
输出结果:
2
y
'''
def add_1(a,b):
sum = a+b
#print (sum) # 只能在函数体中打印,没办法在函数体之外打印
return sum # 返回函数体的执行结果
SUM = add_1(1,1) # 将return返回的函数体执行结果赋值给SUM
print (SUM)
'''
输出结果:
2
'''
'''
return返回值使用案例,以下是一段用户登录代码
'''
import random
# YZM函数产生登录验证码:
def YZM(num):
s = 'QWERTYUIOPASDFGHJKLZXCVBNM'
code = ''
for i in range(num):
ran = random.randint(0,len(s)-1)
code += s[ran]
return code
# login是登录函数:
def login():
user = input ('请输入用户名:')
passwd = input ('请输入密码:')
code = YZM(5) # login函数嵌套YZM函数用于产生验证码
print ('验证码:',code)
code_1 = input('请输入验证码:')
if code.lower() == code_1.lower(): # 判断用户输入的验证码是否准确.lower函数忽略大小写
# 验证码输入准确
if user == 'WANGKANG' and passwd == '12345':
print ('登录成功!')
else:
print ('用户名或密码错误!')
else:
print ('验证码输入错误!')
# 调用login函数:
login()
函数作用域
一般在函数体中定义的变量是局部变量,作用域仅仅在函数体之内。可以将局部变量声明成全局变量,全局变量可在函数体之外生效。
代码示例:
name = 'join' # 函数体之外定义的变量是全局变量
def num_1():
name = 'lucy' # 函数体之内定义的变量是局部变量,局部变量优于全局变量
name += ' Age is 18' # 局部变量可以在函数体内修改
print (name)
# 调用num_1函数:
num_1()
'''
输出结果:
lucy Age is 18
'''
def add_2(): # add_2函数内部又没声明name变量,直接调用全局变量name
global name # 在函数体内部修改全局变量值,需要使用global声明;如果只打印,不需要声明
print(name)
add_2()
'''
输出结果:
join
'''
嵌套函数的变量访问
代码示例:
'''
1.内部函数可以访问外部函数的变量
2.内部函数可以修改外部函数的可变类型的变量,例如列表中的值
3.内部函数修改全局的不可变变量时,需要在内部函数global 变量名
内部函数修改外部函数的不可变量时,需要在内部函数nolocal 变量名
4.locals()查看本地变量有哪些,以字典形式输出
globals()查看全局变量有哪些,以字典形式输出
'''
def func():
# 声明一个局部变量
n = 100 # 整型,不可变变量
list_1 = [1,2,3,4] # 列表类型,是可变变量
def inner_func():
nonlocal n # 对于函数inner_func,n是外部函数的func的变量
for index,i in enumerate(list_1): # 使用enumerate函数获取list_1中每一个元素的下标、值赋值给index,i
list_1[index] = i+5 # list_1中的每一个值加5
list_1.sort() # 排序list_1
inner_func()
print (list_1) # 打印list_1
n += 1
print (n)
func()
'''
输出结果:
[6, 7, 8, 9]
101
'''
A = 100 # 声明一个全局变量
def func():
B = 200 # 声明一个局部变量
def inner_func():
nonlocal B
global A
C = 300
C += 1
B += 1
A += 1
print (A,B,C)
inner_func()
func()
'''
输出结果:
101 201 301
'''