一、函數返回值
返回類型:
1、返回一個值
2、返回多個值,並將多個值保存到元組中,返回元組 例如返回 (5, 6, 'aaa')
3、接收值時,可以使用多個變量接收
def add(a, b):
result = a + b
return result
print(add(5, 6))
def test():
return 5, 6, 'aaa'
info = test()
print(info) #返回多個參數,將多個參數保存到元組中,並將元組返回 輸出:(5, 6, 'aaa')
x, y, z = test()
print(x, y, z) #接收時,可以使用多個變量接收 將 x = 5, y = 6, z = 'aaa'
二、函數的嵌套調用
例一:
加入購物車 判斷用戶是否登錄,如果登錄,成功加入購物車,否則提示請登錄之後添加
#登錄驗證
def login(username, password):
uName = "admin"
psd = "123"
isLogin = username == uName and password == psd
return isLogin
#添加購物車
def add_shoppingcart(goodName):
global isLogin
if isLogin and goodName:
print("添加物品成功,物品名稱爲:", goodName)
return True, goodName
else:
print("添加物品失敗!")
name = input("請輸入用戶名:")
psd = input("請輸入密碼:")
isLogin = False
isLogin = login(name, psd)
if isLogin:
result = add_shoppingcart('test good')
print(result)
else:
print("用戶沒有登錄,請先登錄!")
例二:
用戶登錄
輸入用戶名
輸入密碼
輸入驗證碼
判斷登錄是否成功
import random
#生成驗證碼
def generate_verifyCode(n):
code = ""
str1 = "qwertyuiopasdfghjklzxcvbnm123456789QWERTYUIOPASDFGHJKLZXCVBNM"
for i in range(n):
ran = random.randint(0, len(str1) - 1)
code += str1[ran]
return code
#登錄
def login():
u_name = "admin"
psd = "123"
vc = generate_verifyCode(4)
print(vc)
username = input("請輸入用戶名:")
password = input("請輸入密碼:")
code = input("請輸入驗證碼:")
isLogin = u_name == username and psd == password and vc.lower() == code.lower()
result = "登錄成功" if isLogin else "登錄失敗"
return result
print(login())
三、全局變量及局部變量
global 變量的範圍
局部變量:
函數內部聲明的變量 局部變量僅限於在函數內部使用
全局變量:
定義在函數外層的變量
局部變量與全局變量重名
優先輸出局部變量
函數體內,函數內部變量可以隨意修改賦值
不修改全局變量,只是獲取
如果修改全局變量,需要在函數內部聲明 global 變量名
name = "測試名"
def func1():
global name
name += "aaa"
print(name)
func1()
局部和全局變量
全局變量,如果是不可變,在函數中修改需要添加global關鍵字
是可變的, 不需要添加global關鍵字
name = "測試名"
list1 = [1, 2, 3, 5]
def func2():
name = "名字"
print(name)
print(list1)
def func3():
global name
name += "添加內容"
print(name)
list1.append(50)
print(list1)
func3()
func2()
四、總結
函數的參數: 普通的參數 可變參數(*args() **kwargs{})關鍵字參數
def func(a, b = 1)
pass
func(a = 10, b = 20)
返回值:return
def func():
return 'abc', 19
x = func() --->print('abc', 19)
def func():
result = a + b
return result
x = func() --->沒有返回值,就是到的值爲:None
函數間的嵌套調用
定義函數
def a():
pass
def b():
a()
pass
調用函數
a()
b() ->調用b函數,會先調用a函數,再往下執行
局部和全局變量
name = 'aaa' 不可變
list1 = [] 可變
def func():
global name
name += "abc'
list1.append(6)