函數(shù)的返回值
"""
1.函數(shù)的返回值:
a.就是函數(shù)返回給調(diào)用的值
b.就是return關(guān)鍵字后面的表達(dá)式的值
c.就是函數(shù)調(diào)用表之后的值達(dá)式的值
Python中每一個(gè)函數(shù)都是有返回值的矮男,返回值就是return
如果函數(shù)中沒有return移必,name函數(shù)的返回值就是None
***函數(shù)調(diào)用:
a.先回到函數(shù)調(diào)用位置
b.用實(shí)參給形參賦值
c.執(zhí)行函數(shù)體
d.執(zhí)行完函數(shù)體,將返回值返回給函數(shù)調(diào)用表達(dá)式
e.回到函數(shù)調(diào)用表達(dá)式處
****函數(shù)的函數(shù)體只有在調(diào)用之后才會(huì)執(zhí)行
2.return
1.將return之后的值返回給函數(shù)調(diào)用表達(dá)式
*** 調(diào)用函數(shù)之后如果沒有返回值毡鉴,只是函數(shù)體打 印崔泵,那么返回值為none秒赤,如果有返回值,函數(shù)體之外 就可以使用返回值
2.結(jié)束函數(shù)
3.函數(shù)的結(jié)束
a.函數(shù)體執(zhí)行完
b.遇到return
4.函數(shù)調(diào)用表達(dá)式
Python中每一個(gè)函數(shù)調(diào)用表達(dá)式都是有值的
"""
def func1():
print('aaa')
a = func1() # 函數(shù)調(diào)用表達(dá)式
print(a, func1()) # 如果函數(shù)中沒有return憎瘸,name函數(shù)的返回值就是None
輸出:
aaa
aaa
None None
求和函數(shù)
def my_sum(x,y):
return x+y
print(my_sum(10,20))
輸出:
30
練習(xí):寫一個(gè)函數(shù)判斷一個(gè)人的年齡是否為成年人
def ismanyear(years):
if years >= 18:
return True
else:
return False
if ismanyear(10):
print('可以進(jìn)入網(wǎng)吧')
else:
print('未成年入篮,禁止進(jìn)入網(wǎng)吧')
person = {'name':'yuting','ismanyear':ismanyear(17)}
print(person)
輸出:
未成年,禁止進(jìn)入網(wǎng)吧
{'name': 'yuting', 'ismanyear': False}
"""
3.函數(shù)的結(jié)束
a.函數(shù)體執(zhí)行完
b.遇到return
"""
def func2():
print('123')
return 10 # 遇到return提前結(jié)束函數(shù)體
print('321')
print(func2())
輸出:
123
10
偽代碼
'''
寫一個(gè)函數(shù) 幌甘,下載指定地址對(duì)應(yīng)的數(shù)據(jù)
def download(url):
判斷有沒有網(wǎng):
if 沒有網(wǎng):
return None
寫網(wǎng)絡(luò)請(qǐng)求
請(qǐng)求數(shù)據(jù)
保存數(shù)據(jù)
'''
練習(xí):寫一個(gè)函數(shù)潮售,求1+2+3+.....,和不能大于一萬
def isyiwang():
sum1 =0
number = 1
while True:
if sum1 + number >=10000:
return sum1, number-1 # python中可以有多個(gè)返回值,在return后面返回多個(gè)值锅风,每一個(gè)值之間用逗號(hào)隔開酥诽,返回值是一個(gè)元組
sum1 += number
number += 1
print(isyiwang())
輸出:
(9870, 140)
作用域
"""
作用域:一個(gè)變量可以使用的范圍,就是這個(gè)變量的作用域(函數(shù)和類可以影響變量的作用域)
全局變量: 從聲明開始皱埠,到文件結(jié)束都可以使用
局部變量: 在函數(shù)(類)中聲明的變量是局部變量肮帐,只能在函數(shù)(類)中使用
"""
1.全局變量
a = 10 # a是全局變量
def func1():
print(a)
func1()
print(a)
輸出:
10
10
2.局部變量
def func3():
a = 100 #局部變量,作用域是函數(shù)內(nèi)
print(a)
func3()
# print(a) #報(bào)錯(cuò):nameError
輸出;
100
3.global和nonlocal
"""
global :在函數(shù)中聲明一個(gè)全局變量
格式:
global 變量名
變量名 = 值
"""
abc = 'abc'
bcd = 'bcd'
def func4():
abc = 'aaa' # 局部變量边器,如果全局變量名和全局變量名相同训枢,在函數(shù)中使用的是局部變量名
print(abc)
global bcd # 說明bcd是一個(gè)全局變量
bcd = 100
print(bcd)
func4()
print(abc)
print(bcd)
輸出:
aaa
100
abc
100
練習(xí):聲明一個(gè)變量,統(tǒng)計(jì)一個(gè)函數(shù)調(diào)用的次數(shù)
count = 0
def my_func():
global count
count += 1
print('===')
my_func()
my_func()
print('1233')
a = 10
my_func()
print(count)
"""
nonlocal
相當(dāng)于局部里面的全局 局部里的global,只能在局部里面用
"""
def func11():
a_11 =10
print('外部',a_11)
# python中函數(shù)中可以聲明函數(shù) 只能在函數(shù)中調(diào)用
def func22():
nonlocal a_11
a_11 = 100
print('內(nèi)部',a_11)
print('內(nèi)部函數(shù)')
func22()
print('外部', a_11)
func11()
輸出:
===
===
1233
===
3
外部 10
內(nèi)部 100
內(nèi)部函數(shù)
外部