python函数作为参数例题_笨办法学Python 习题 19: 函数和变量
函數這個概念也許承載了太多的信息量,不過別擔心。只要堅持做這些練習,對照上個練習中的檢查點檢查一遍這次的聯系,你最終會明白這些內容的。
有一個你可能沒有注意到的細節,我們現在強調一下:函數里邊的變量和腳本里邊的變量之間是沒有連接的。下面的這個練習可以讓你對這一點有更多的思考:#?-*-?coding:utf-8?-*-
def?cheese_and_crackers(cheese_count,boxes_of_crackers):?#創建奶酪和咸餅干函數,參數為奶酪數量,咸餅干盒數
print"You?have?%d?cheese!"?%?cheese_count
print?"You?have?%d?boxes?of?crackers!"?%?boxes_of_crackers
print?"Man?that's?enough?for?a?party!"
print?"Get?a?blanket."
print?"We?can?just?give?the?function?number?directly:"??#輸出
cheese_and_crackers(20,30)??#函數的參數值
print?"OR,we?can?use?variable?from?our?script"??#輸出
amount_of_cheese?=?10??#10賦值給amount_of_cheese
amount_of_crackers?=?50??#50賦值給amount_of_crackers
cheese_and_crackers(amount_of_cheese,amount_of_crackers)?#函數的參數
print?"We?can?even?do?math?inside?too:"?#輸出
cheese_and_crackers(10+20,5+6)??#函數的參數分別為(30,11)
print?"And?we?can?combine?the?two,?variables?and?math:"?#輸出內容
cheese_and_crackers(amount_of_cheese+100,amount_of_crackers+1000)??#amount_of_cheese值加100,amount_of_crackeres值加1000
通過這個練習,你看到我們給我們的函數 cheese_and_crackers 很多的參數,然后在函數里把它們打印出來。我們可以在函數里用變量名,我們可以在函數里做運算,我們甚至可以將變量和運算結合起來。
從一方面來說,函數的參數和我們的生成變量時用的 = 賦值符類似。事實上,如果一個物件你可以用 =將其命名,你通常也可以將其作為參數傳遞給一個函數
結果:#?-*-?coding:utf-8?-*-
def?cheese_and_crackers(cheese_count,boxes_of_crackers):?#創建奶酪和咸餅干函數,參數為奶酪數量,咸餅干盒數
print"You?have?%d?cheese!"?%?cheese_count
print?"You?have?%d?boxes?of?crackers!"?%?boxes_of_crackers
print?"Man?that's?enough?for?a?party!"
print?"Get?a?blanket."
print?"We?can?just?give?the?function?number?directly:"
cheese_and_crackers(20,30)
print?"OR,we?can?use?variable?from?our?script"
amount_of_cheese?=?10
amount_of_crackers?=?50
cheese_and_crackers(amount_of_cheese,amount_of_crackers)
print?"We?can?even?do?math?inside?too:"
cheese_and_crackers(10+20,5+6)
print?"And?we?can?combine?the?two,?variables?and?math:"
cheese_and_crackers(amount_of_cheese+100,amount_of_crackers+1000)
加分習題
1. 倒著將腳本讀完,在每一行上面添加一行注解,說明這行的作用。
2. 從最后一行開始,倒著閱讀每一行,讀出所有的重要字符來。
3. 自己編至少一個函數出來,然后用 10 種方法運行這個函數。#?-*-?coding:utf-8?-*-
def?people_count(girl,boy):
print?"有%s個女孩"?%?girl
print?"有%s個男孩"?%?boy
print?"總共有%s個人"?%?(girl+boy)
print?"謝謝"
print?"第一種方法"
people_count('38','48')
print?"第二種方法"
girl_count?=?10
boy_count?=?20
people_count(girl_count,boy_count)
print?"第三種方法"
people_count(88+1,99+1)
print?"第四種方法"
people_count(girl_count+1,boy_count+1)
print?"第五種方法"
girl?=?11
boy?=?22
people_count(girl,boy)
常見問題回答
怎么能有 10 種不同的方式運行一個函數呢?
信不信由你,理論上有無窮多種方法運行一個函數。在這里,試著按我在 8-12 行的方式運行,當
然你可以隨意創新。
有沒有辦法可以分析這個函數的功能以便我理解?
有很多方法,最簡單的一個是在每一行代碼上面添加注解,另外一個方法是大聲朗讀代碼,還有一個方法就是把代碼打印出來,用筆畫一些圖示,并寫一些注解說明。
怎樣處理用戶輸入的數字,例如我想讓用戶輸入克力架和奶酪的數量?
記住使用 int() 把 raw_input() 的值轉為整數。
第 13 和 14 行創建的變量會不會改變函數中的變量?
不會。這些變量是在函數之外的,當它們被傳遞到函數中以后,函數會為這些變量創建一些臨時的版本,當函數運行結束后,這些臨時變量就被丟棄了,一切又回到了從前。繼續閱讀本書,后面你會更清楚這些概念。
把全局變量(如 13 、 14 行)的名稱和函數變量的名稱取成一樣的,這樣做是不是不好?
是的,因為這樣的話你就無法確定哪個是哪個了。有時候你可能會必須使用同一個變量名,有時候你會不小心使用了一樣的變量名,不論如何,只要有可能,還是盡量避免變量名稱相同吧。
第 12-19 行是不是覆寫了函數 cheese_and_crackers?
沒有,完全沒有。這只是函數調用而已?;旧暇褪沁@里會跳轉到函數的第一行,然后等函數運行完后再回到先前的位置。并沒有把原函數怎么地。
函數的參數個數有限制嗎?
取決于 Python 的版本和你的操作系統,不過就算有限,限值也是很大的。實際應用中, 5 個參數
就不少了,再多就會讓人頭疼了。
可以在函數中調用函數嗎?
可以。后面的習題中你會用這一技巧寫一個游戲。
總結
以上是生活随笔為你收集整理的python函数作为参数例题_笨办法学Python 习题 19: 函数和变量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux python软连接_Linu
- 下一篇: python中的系统模块_python中