Python 基礎:函數(shù)返回值,文檔字符串较鼓,作用域椎木,遞歸

一、函數(shù)返回值

  • 返回函數(shù)執(zhí)行的結果
    通過return來指定函數(shù)的返回值
    函數(shù)的返回值可以直接使用博烂。另一種方式是通過一個變量來接收函數(shù)的返回值
def fn2():
  print('abc')
  return
r=fn2()
  • return后面可以跟任意的對象香椎,甚至可以是一個函數(shù)
  def fn():
      print(‘hello’)
       def fn2():
           print(‘ejoaj’)
  return fn2
  r = fn()
  • 函數(shù)中Return 后面的語句不執(zhí)行

fn是函數(shù)對象,print(fn)就是打印函數(shù)對象

fn()是調用函數(shù)禽篱,print(fn())就是打印fn()的返回值


二畜伐、文檔字符串

  • 在定義函數(shù)時,可以在函數(shù)內部編寫文檔字符串躺率,即函數(shù)的說明
    help()驗證:內置函數(shù) 可以查詢python中函數(shù)的用法
    語法: help(函數(shù)對象)
def fn(a,b,v):
    '''
    這是一個文檔字符串的案例
    這個函數(shù)的作用玛界。。悼吱。慎框。
    函數(shù)的參數(shù)
    :param a:作用,類型后添, 默認值笨枯。。遇西。 
    :param b: 
    :param v: 
    :return: 需要/不需要
    '''
   return 123
help(fn)
>>fn(a, b, v)
    這是一個文檔字符串的案例
    這個函數(shù)的作用馅精。。粱檀。硫嘶。
    函數(shù)的參數(shù)
    :param a:作用,類型梧税, 默認值沦疾。称近。。
    :param b:
    :param v:
    :return: 需要/不需要

三哮塞、函數(shù)的作用域

作用域(scope):指的是變量生效的區(qū)域
  • 2種作用域:
    全局作用域:在函數(shù)以外的區(qū)域刨秆,可在程序任意位置訪問。
    函數(shù)作用域:在函數(shù)調用時創(chuàng)建忆畅,函數(shù)結束后銷毀衡未,只能在函數(shù)內部使用。
b=20
def fn():
    a = 123
    print('函數(shù)內部:a=',a)
    print('函數(shù)內部:b=', b)
fn()
#print('函數(shù)內部:a=', a) :NameError: name 'a' is not defined
print('函數(shù)外部:b=', b)
>>函數(shù)內部:a= 123
函數(shù)內部:b= 20
函數(shù)外部:b= 20
def fn2():
    a = 123
    def fn3():
        a=40
        print('函數(shù)內部:a=', a)
    fn3()
fn2()
>>函數(shù)內部:a= 40

在函數(shù)內修改全局變量家凯,需要使用global關鍵字來聲明局部變量

a=346
def fn3():
    global a
    a=123
    print('函數(shù)內部:a=', a)
fn3()
print('函數(shù)外部:a=', a)
>>函數(shù)內部:a= 123
函數(shù)外部:a= 123

四缓醋、命名空間

  • 命名空間 是一個用來保存變量的字典
  • locals():獲取當前作用域的空間 返回一個字典
a=123
b=124
scope=locals()
#print(scope)
print(scope['a'])
scope['c']=797#向scope里面添加了一個KEY-VALUE 是全局變量 不可在函數(shù)內部使用
print(c)
>> 123
>>797
  • 在函數(shù)內部調用locals(),獲取函數(shù)的命名空間
def fn():
    a=23
    scope=locals() 
    print(scope)
fn()
  • 在函數(shù)內部 獲取全局的命名空間 globals()
d=23
def fn():
    a=23
    s=globals() #在函數(shù)內部調用locals(),獲取函數(shù)的命名空間
    print(s['d'])
fn()
>>23

五、遞歸函數(shù):在函數(shù)中自己引用自己

  • 1.0遞歸是解決問題的一種思想绊诲,和循環(huán)很像送粱。

  • 2.0 把一個大的問題分解為一個小的問題,直到問題無法分解時再去解決問題

  • 3.0 遞歸函數(shù)的兩個條件:
    基線條件:問題可以被分解為最小的問題掂之,當滿足基線條件時抗俄,遞歸就不在執(zhí)行了
    遞歸條件:將問題繼續(xù)分解的條件

  • 嘗試求10的階乘(10!)

def fn(n):
   for i in range(1,n):
        n *=i
    print(n)
fn(10)
>>3628800
  • 遞歸方法:求階乘函數(shù)
def fn(n):
#1.基線條件 :10=10*9世舰! 9=9*8动雹! 8!=8*7跟压!胰蝠。。震蒋。
    if n ==1:
        return 1
    else:
#2 遞歸條件: return n*fn2(n-1)
        return n * fn(n - 1)
print(fn(10))
>>3628800
  • 用遞歸函數(shù)定義一個函數(shù)姊氓,為任意數(shù)字做任意的冪運算
def fn(n,i):
# 1.基線條件:
    if i==1:
       return n
#2 遞歸條件:
    else:
        return n*fn(n,i-1)
print(fn(2,3))
>>8
  • 定義函數(shù) 用來檢測任意一個字符串是否是回文字符串,如果是True,不是返回False: (回文字符串:如 ABCBA 前后讀一樣)
def fn(s):
    i=len(s)
# 1.基線條件
    if i==1:
       return True
    elif s[0]!=s[-1]:
       return False
    else:
        return fn(s[1:-1])
print(fn('sdfkj'))
>> False

案例:漢羅塔游戲 fn(n,'A','B','C')

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末喷好,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子读跷,更是在濱河造成了極大的恐慌梗搅,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件效览,死亡現(xiàn)場離奇詭異无切,居然都是意外死亡,警方通過查閱死者的電腦和手機丐枉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門哆键,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瘦锹,你說我怎么就攤上這事籍嘹∩量” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵辱士,是天一觀的道長泪掀。 經常有香客問我,道長颂碘,這世上最難降的妖魔是什么异赫? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮头岔,結果婚禮上塔拳,老公的妹妹穿的比我還像新娘。我一直安慰自己峡竣,他們只是感情好靠抑,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著澎胡,像睡著了一般孕荠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上攻谁,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天稚伍,我揣著相機與錄音,去河邊找鬼戚宦。 笑死个曙,一個胖子當著我的面吹牛,可吹牛的內容都是我干的受楼。 我是一名探鬼主播垦搬,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼艳汽!你這毒婦竟也來了猴贰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤河狐,失蹤者是張志新(化名)和其女友劉穎米绕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馋艺,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡栅干,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了捐祠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碱鳞。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖踱蛀,靈堂內的尸體忽然破棺而出窿给,到底是詐尸還是另有隱情贵白,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布填大,位于F島的核電站戒洼,受9級特大地震影響,放射性物質發(fā)生泄漏允华。R本人自食惡果不足惜圈浇,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靴寂。 院中可真熱鬧磷蜀,春花似錦、人聲如沸百炬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剖踊。三九已至庶弃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間德澈,已是汗流浹背歇攻。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梆造,地道東北人缴守。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像镇辉,于是被迫代替她去往敵國和親屡穗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361