2020-07-23

函數(shù)的返回值

返回值就是返回函數(shù)執(zhí)行的結(jié)果
通過return來指定函數(shù)的返回值
求任意數(shù)的和
def fn(*args):
r = 0
for n in args:
r += n
print(r)
return r
r = fn(1,2,3)
print(r-4)
函數(shù)的返回值可以直接使用函數(shù)的返回值,另一種方式通過一個(gè)變量來接收函數(shù)的返回值
return 后面可以跟任意的對(duì)象,甚至可以是一個(gè)函數(shù)
在函數(shù)中,return后的代碼都不會(huì)執(zhí)行,return一旦執(zhí)行函數(shù)自動(dòng)結(jié)束
def fn4():
for i in range(5):
if i == 3:
break 用來退出當(dāng)前循環(huán)
return 函數(shù)結(jié)束
continue 用來跳過當(dāng)次循環(huán)
print(i)
print('循環(huán)執(zhí)行完畢')
fn4()
文檔字符串

  • help()內(nèi)置函數(shù) 可以查詢python中函數(shù)的用法
  • 語法 help(函數(shù)對(duì)象)(不加函數(shù)對(duì)象不加括號(hào))
  • 在定義函數(shù)的時(shí)候,可以在函數(shù)內(nèi)部編寫文檔字符串,文檔字符串就是函數(shù)的說明
  • 當(dāng)我們編寫了文檔字符串時(shí),就可以通過help()函數(shù)來查看函數(shù)的說明
    def fn(a,b,c):
    '''
    這是一個(gè)文檔字符串的示例
    這個(gè)函數(shù)的作用.......
    :param a: 作用 類型 默認(rèn)值...
    :param b: 作用 類型 默認(rèn)值...
    :param c: 作用 類型 默認(rèn)值...
    :return: 需要/不需要
    '''
    return 123
    help(fn)
    函數(shù)的作用域
    作用域(scope) 指的就是變量生效的區(qū)域
    在python當(dāng)中一共有2中作用域
    全局作用域
    在程序執(zhí)行的時(shí)候創(chuàng)建,在程序執(zhí)行結(jié)束的時(shí)候銷毀,所有函數(shù)以外的區(qū)域我們都認(rèn)為是全局作用域,在全局作用域當(dāng)中我們定義的變量都屬于全局變量,可以在程序的任意位置被訪問。
    函數(shù)作用域(局部作用域)
    在函數(shù)調(diào)用的時(shí)候創(chuàng)建,在調(diào)用結(jié)束的時(shí)候銷毀,函數(shù)每調(diào)用一次就會(huì)產(chǎn)生一個(gè)新的函數(shù)作用域,在函數(shù)作用域中定的變量都是局部變量,只能在函數(shù)內(nèi)部被訪問。
    a = 456
    def fn3():
    在函數(shù)內(nèi)部修改全局變量,需要使用global關(guān)鍵字,來聲明局部變量
    global a 聲明在函數(shù)內(nèi)部使用的a是全局變量,此時(shí)去修改a,就是在修改全局的a
    a = 123
    print('函數(shù)內(nèi)部a =',a)
    fn3()
    print('函數(shù)外部a =',a)
    命名空間
  • 命名空間就是一個(gè)字典,是一個(gè)專門用來保存變量的字典
  • locals() 用來獲取當(dāng)前作用域的命名空間 返回一個(gè)字典
    a = 123
    b = 456
    scope = locals()
    print(a)
    print(scope['a'])
    向scope里面添加了一個(gè)key-value
    scope['c'] = 789
    print(c)

a = 123
b = 456
def fn():
a = 1
scope = locals() 在函數(shù)內(nèi)部調(diào)用locals()會(huì)獲取函數(shù)的命名空間
scope['c'] = 789
print(scope)
fn()
globals() 函數(shù)可以用來獲取全局的命名空間
a = 123
b = 456
def fn():
a = 1
global_scope = globals()
print( global_scope )
fn()
遞歸函數(shù)
定義一個(gè)函數(shù)來實(shí)現(xiàn)任意數(shù)的階乘
def fn(n):

參數(shù)n 代表要求階乘的數(shù)字
r = n
for i in range(1,n):
    r *= i
return r

print(fn(3))
遞歸簡單理解是就是自己引用自己
遞歸式的函數(shù),在函數(shù)中自己調(diào)用自己
遞歸式解決問題的一種思想,它和循環(huán)很想
它的整體思想是吧一個(gè)大的問題分解為一個(gè)小的問題,知道問題無法分解時(shí),再去解決問題
遞歸函數(shù)的兩個(gè)條件
基線條件
問題可以被分解為最小的問題,當(dāng)滿足基線條件是,遞歸就不在執(zhí)行了
遞歸條件
將問題繼續(xù)分解的條件
用遞歸的思想解決任意數(shù)的階乘問題
def fn2(n):
(基線條件)
if n == 1:
return 1
(遞歸條件)
return n * fn2(n-1)
print(fn2(10))
遞歸函數(shù)練習(xí)
定義一個(gè)函數(shù) 為任意數(shù)字做任意的冪運(yùn)算
def fn1(n,i):
參數(shù) n 代表任意數(shù)字 i 代表給任意數(shù)字做任意的冪運(yùn)算 5 ** 3(n就是5 i就是3)
1.基線條件
if i == 1:
** 求1次冪**
return n
2.遞歸條件 10 * 10 ** 4 10 ** 5
return n * fn1(n,i-1)
print(fn1(8,8))
定義一個(gè)函數(shù),用來檢測(cè)任意的一個(gè)字符串是否是回文字符串,如是返回Ture 不是返回false
回文字符串 字符串從前往后從后往前念是一樣的 例如:abcba
def fn2(s):
參數(shù)s表示要檢查的字符串是否是回文字符串
1. 基線條件
if len(s) < 2:
return True
elif s[0] != s[-1]:
return False
2.遞歸條件
return fn2(s[1:-1])
print(fn2('abcdegedcba'))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容