本文共 3874 字,大约阅读时间需要 12 分钟。
tip:可以先学数据结构和算法
返回值 将函数中运算的结果通过return关键字“扔”出来
没有返回值的情况:
def func(): print('---')x=func()print(x)'''---None'''
def add(a,b): result = a+b #print(result) return result#print(result) NameError: name 'result' is not defined
函数体中的print仅限于在控制台上出现,告诉你一下,但不能把结果拿出来
扔到哪去了? 用变量去接return的返回值
def add(a,b): result = a+b print(result) return 'aaa',100x = add(2,6)print(x)x,y = add(2,6)print(x,y)'''8('aaa', 100)aaa 100'''
return返回值
1.return后面可以是一个参数,接收的时候x=add(1,2)
2.return后面也可以是多个参数,会将多个参数先放在一个元组中,将元组作为整体返回
3.接收的时候也可以是多个,return 'hello','world' x,y=('hello','world') --->x='hello' y='world'
4.没有返回值,接收到的是None
函数嵌套调用 嵌套函数扔出来即闭包 闭包传函数作参数即为装饰器
def a(): print('aaa')def b(): #调用函数a a() print('bbb')#调用bb()'''aaabbb'''
报错,用global解决,局部变量变为全局变量
局部变量:函数内部声明的变量。仅限于在该函数体里内部使用,出了函数体就不能用了
全局变量:函数外部声明的变量。所有函数都可以访问
全局变量是可变的,不需要加global声明,直接对其操作。
name='月月'def func(): s='abcd' s+='X' print(s,name)#print(s) NameError: name 's' is not defineddef func1(): #print(s) 访问不到其他函数内部的值 print(name) #name+='会玩吉他' 函数内部的变量可以随便修改赋值,全局变量不能在函数体中修改def func2(): name='小月月' #局部变量与全局变量同名,优先用内部变量 print(name)func2()func1()'''小月月月月'''
name='月月'def func(): print(name)def func1(): global name # 不修改全局变量,只是获取打印,不用声明。要修改全局变量则要申明 print(name) name+='会玩吉他' print('修改后的name',name)func1()func() #全局的name已经被func1改了'''小月月月月修改后的name 月月会玩吉他月月会玩吉他'''
如果全局变量是可变的,则在函数体中修改的时候不需要加global
name='月月'list1 = [1,3,5,6]def func(): name='蕊蕊' print(name) print(list1)def func1(): global name print(name) name += '真漂亮' #修改列表 list1.append(8) print(list1)func1()func()'''月月[1, 3, 5, 6, 8]蕊蕊[1, 3, 5, 6, 8]'''
name='月月'def func(): name='蕊蕊' print(name) #函数体自己的name global name print(name)func()#不用在自己的局部里起一个和全局一样的名,局部变量name改成name1问题解决'''SyntaxError: name 'name' is used prior to global declaration'''
函数嵌套使用练习:
'''商品加入购物车判断用户是否登录,如果登录,成功加入购物车,否则提示登录之后添加成功True 失败False结构:def add_shoppingcart(goods): passdef login(username,password): pass自己写的def login(username,password): if username=='admin' and password=='123': print('登录成功!') return True else: print('登录失败!') return Falsedef add_shoppingcart(goods): if islogin==True: print(goods,'添加购物车成功') else: print('请登录')islogin=False #用于判断用户是否登录变量,默认未登录# uname=input('用户名')pwd=input('密码')islogin=login(uname,pwd)commodit=input('添加商品')add_shoppingcart(commodit)'''#老师写的def add_shoppingcart(goods): global islogin if islogin: if goods: print(goods, '添加购物车成功') else: print('没有添加商品') else: print('请登录') answer = input('是否登录用户?yes/no') if answer=='yes': uname = input('用户名') pwd = input('密码') islogin=login(uname,pwd) #函数体里尝试把外部变量改变 #在一个函数中可以调用令一个函数 print(islogin) else: print('未登录,不能添加商品')def login(username,password): if username=='admin' and password=='123': #print('登录成功!') 没有意义,改变不了登录状态 return True else: #print('登录失败!') return Falseislogin=False #用于判断用户是否登录变量,默认未登录uname=input('用户名')pwd=input('密码')islogin=login(uname,pwd)commodit=input('添加商品')add_shoppingcart(commodit)
'''用户登录输入用户名输入密码输入验证码--->封装成一个函数'''import randomdef generate_checkcode(n): s='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' code='' for i in range(n): ran = random.randint(0,len(s)) code+=s[ran] return codedef login(): usrname = input('输入用户名') password = input('输入密码') #得到一个验证码 code = generate_checkcode(4) #函数间的调用 print('验证码是:',code) code1 = input('请输入验证码') if code.lower()==code1.lower(): #print('验证码正确') if usrname=='admin' and password=='123': print('登录成功') else: print('用户名或密码有误') else: print('验证码输入有误')#调用函数login()'''输入用户名1输入密码1验证码是: mN0R请输入验证码mn0r用户名或密码有误'''
转载地址:http://pzegn.baihongyu.com/