>>fibs#輸出[0,1" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python基礎學習筆記(七)

系統 1782 0

python基礎學習筆記(七)

2013-04-24 00:16 ?蟲師 閱讀( ... ) 評論( ... ) 編輯 收藏

?

本章介紹如何將語句組織成函數,這樣,可以告訴計算機如何做事。

?

下面編寫一小段代碼計算婓波那契數列(前兩個數的和是第三個數)

                fibs = [0,1]   
                
                  #
                
                
                   定義一個列表,初始內容是0,1
                
                
                  for
                
                 i 
                
                  in
                
                 range(8):  
                
                  #
                
                
                  循環8次
                
                
  fibs.append(fibs[-2]+fibs[-1])  
                
                  #
                
                
                  append在末尾追加一個數,這個是它前面兩個數的和
                
                
                  #
                
                
                  輸入
                
                
>>>
                
                   fibs

                
                
                  #
                
                
                  輸出
                
                
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
              

因為賦完值 fibs 已經有兩個數了( 0 1 ),所以循環 8 次之后,列表有 10 個數,兩個數相加等于第 3 個數。

是不是覺得應該由我們輸入來控制打印多少個數?只用把程序小變一下就行了。

                fibs = [0,1
                
                  ]
num 
                
                = input(
                
                  '
                
                
                  How many fibonacci numbers do you want?
                
                
                  '
                
                
                  )

                
                
                  for
                
                 i 
                
                  in
                
                 range(num-2
                
                  ):
    fibs.append(fibs[
                
                -2]+fibs[-1
                
                  ])

                
                
                  print
                
                
                   fibs

                
                
                  #
                
                
                  輸入
                
                
>>>
                
                   
How many fibonacci numbers do you want?
                
                12

                
                  #
                
                
                  輸出
                
                
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
              

?

?

抽象

  抽象有可以節省很多工作,它使得計算機程序可以讓人讀懂的關鍵。計算機喜歡處理精確和具體的指令,但人不同,我們更喜歡丟進去一個東西,計算機就能反饋給我們想要的結果,而不是由我們一步一步的告訴它怎么做。因此,上面的代碼抽象一點,應該是這樣的:

?

                num = input(
                
                  '
                
                
                  How many fibonacci numbers do you want?
                
                
                  '
                
                
                  )

                
                
                  print
                
                 fibs
              

?

那計算機怎么知道要怎么做?我們可以把處理的過程封裝成函數,在我們每次用到時只用調用這個函數就可以了。

?

?

創建函數

  函數是可以調用的,它執行某種行為并且返回一個值。內建的 callable 函數可以用來判斷函數是否可調用:

                >>> 
                
                  import
                
                
                   math

                
                >>> x = 1
>>> y =
                
                   math.sqrt

                
                >>>
                
                   callable(x)  
False

                
                >>>
                
                   callable(y)
True
                
              

備注: callable? python3.0 中不再可用。

?

那如何定義一個函數呢?使用 def 語句即可:

                >>> 
                
                  def
                
                
                   hello(name):
    
                
                
                  return
                
                
                  '
                
                
                  hello.
                
                
                  '
                
                +name+
                
                  '
                
                
                  !
                
                
                  '
                
                
                  #
                
                
                  我們定義了一個hello函數,它會將輸入的內容前面加“hello.”后面加“!”,并返回給用
                
                
                  
#
                
                
                
>>> 
                
                  print
                
                 hello(
                
                  '
                
                
                  world
                
                
                  '
                
                
                  )
hello.world!

                
                >>> 
                
                  print
                
                 hello(
                
                  '
                
                
                  zhangsan
                
                
                  '
                
                
                  )
hello.zhangsan!
                
              

?

不錯吧!再回過頭去想想怎樣把返回婓波那契數列定義成一個函數。如下:

                
                  #
                
                
                  定義fibs函數,用于婓波那契數列
                
                
>>> 
                
                  def
                
                
                   fibs(num):
    result 
                
                = [0,1
                
                  ]
    
                
                
                  for
                
                 i 
                
                  in
                
                 range(num-2
                
                  ):
        result.append(result[
                
                -2]+result[-1
                
                  ])
    
                
                
                  return
                
                
                   result


                
                
                  #
                
                
                  直接調用fibs函數
                
                
>>> fibs(10
                
                  )
[0, 
                
                1, 1, 2, 3, 5, 8, 13, 21, 34
                
                  ]

                
                >>> fibs(15
                
                  )
[0, 
                
                1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377]
              

?

?

局部變量

  當函數定義生命變量的時候,函數內所生命的變理只在其函數內有效,與函數外具有相同名稱的其他變量沒有任何關系

                
                  #
                
                
                  局部變量
                
                
                  def
                
                
                   func(x):
    
                
                
                  print
                
                
                  '
                
                
                  x is
                
                
                  '
                
                
                  ,x
    x 
                
                =2    
                
                  #
                
                
                   x=2只在func函數內其作用
                
                
                  print
                
                
                  '
                
                
                  Changed local x to
                
                
                  '
                
                
                  ,x
    
x 
                
                = 50
                
                  
func(x)   
                
                
                  #
                
                
                  func函數并沒有返回數據過來。
                
                
                  print
                
                
                  '
                
                
                  x is still
                
                
                  '
                
                
                  ,x


                
                
                  #
                
                
                  輸出
                
                
>>>
                
                   
x 
                
                
                  is
                
                 50
                
                  
Changed local x to 
                
                2
                
                  
x 
                
                
                  is
                
                 still 50
              

?

?

global? 語句

  如果想把一個變量聲名為?全局的,則可以使用 global 語句。

                
                  def
                
                
                   func():
    
                
                
                  global
                
                
                   x

    
                
                
                  print
                
                
                  '
                
                
                  x is
                
                
                  '
                
                
                  ,x
    x 
                
                = 2
    
                
                  print
                
                
                  '
                
                
                  Changed local x to
                
                
                  '
                
                
                  ,x

x 
                
                =50
                
                  
func()

                
                
                  print
                
                
                  '
                
                
                  Value of x is 
                
                
                  '
                
                
                  ,x

                
                
                  #
                
                
                  輸出
                
                
x 
                
                  is
                
                 50
                
                  
Changed local x to 
                
                2
                
                  
Value of x 
                
                
                  is
                
                  2
              

global? 語句被用來生命 x? 是全局,因此在執行完 func 函數后, x 的值已經發生了改變,并且作用于整個程序,因此最后的輸入結果為 2

?

?

默認參數

  對于一些參數,我們希望它的一些參數是可選的,如果用戶不想要為這些參數提供值的話,這些參數就使用默認值。

                
                  def
                
                 say(message,times=1
                
                  ):
    
                
                
                  print
                
                 message*
                
                  times

say(
                
                
                  '
                
                
                  Hello
                
                
                  '
                
                
                  )
say(
                
                
                  '
                
                
                  World
                
                
                  '
                
                ,5
                
                  )

                
                
                  #
                
                
                  輸出
                
                
>>>
                
                   
Hello
WorldWorldWorldWorldWorld
                
              

?

定義的 say 函數的第兩個參數就是可選的,默認為 times=1 ;也就是將兩個參數相乘輸出。

?

注意:只有在形參表末尾的那些參數可以有默認參數,如 def?func(a=5,b)? 是無效的。

?

?

?

關鍵參數

  如果某個函數有許多參數,而我們只想指定其中的一部分,那么可以使用名字(關鍵字)而不是位置來給函數指定實參。 ---- 這被稱作?關鍵參數

                
                  def
                
                 func(a,b=5,c=10
                
                  ):
    
                
                
                  print
                
                
                  '
                
                
                  a is
                
                
                  '
                
                ,a, 
                
                  '
                
                
                  and b is
                
                
                  '
                
                ,b,
                
                  '
                
                
                  and c is
                
                
                  '
                
                
                  ,c

func(
                
                3,7
                
                  )
func(
                
                24,c=32
                
                  )
func(c
                
                =23,a=14
                
                  )

                
                
                  
#
輸出 >>> a is 3 and b is 7 and c is 10 a is 24 and b is 5 and c is 32 a is 14 and b is 5 and c is 23

這樣做,我就不必擔心參數的順序,使用函數變得更加簡單。假設其它函數都有默認值,我們可以只給自己想要的參數賦值。

?

?

遞歸:

  有用的遞歸函數 ...? 等等,什么是無用的遞歸?先來看一個函數的定義:

                
                  def
                
                
                   recursion()
    
                
                
                  return
                
                 recursion()
              

?

顯然,它什么也干不了,程序的執行不斷申請內存,直接內存耗盡,程序崩潰。

接著,有用的遞歸函數包含以下幾個部分:

  • 當函數直接返回值時有基本實例(最小可能性問題)
  • 遞歸實例,包括一個或者多個問題最小部分的遞歸調用。

?

下面通過遞歸函數來計算一個 n 的階, n*(n-1)*(n-2)*....*1

                
                  def
                
                
                   f(n):
    
                
                
                  if
                
                 n == 1
                
                  :
       
                
                
                  return
                
                 1
    
                
                  else
                
                
                  :
        
                
                
                  return
                
                 n*f(n-1)
              


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 中国人免费的片 | 91九色porn偷拍在线 | 看一级毛片国产一级毛片 | 特黄特色大片免费视频大全 | 久久一区二区三区四区 | 亚洲 欧美 日韩中文字幕一区二区 | 婷婷丁香综合 | 欧美日韩成人一区二区 | 欧洲另类在线1 | 99xxoo视频在线永久免费观看 | 欧美激情一区二区三区中文字幕 | 午夜精品小视频 | 亚洲午夜精品国产电影在线观看 | 91精品国产乱码久久久久久久久 | 一级毛片丰满 出奶水 | 日韩欧美专区 | 国产大片91精品免费看3 | 日韩大片在线 | 亚洲天天综合色制服丝袜在线 | 九九综合九九 | 午夜播放器在线观看 | 午夜影院18 | 日韩欧美中文在线 | 国内精品视频 在线播放 | 99在线热播精品免费 | 日本在线视频不卡 | 国产视频高清 | 亚洲国产中文字幕 | 欧美日韩高清一区 | 五月婷婷久久草丁香 | 国产中文视频 | 精品视频在线播放 | 精品一区二区三区免费视频 | JLZZJLZZ亚洲乱熟在线播放 | 国产一区二区三区免费播放 | 91精品天美精东蜜桃传媒入口 | 亚洲成av | 99在线免费观看 | 天天色av | 操出白浆在线观看 | 一区二区三区日 |