2.2 函数

函数的返回值
使用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
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值