# 若是說年利率是6%,存入1000到第幾年本錢翻倍
1 money = 10000
2 year = 0 3 while money < 20000: 4 money = money*(1+0.06) 5 year += 1 6 print('第 {0} 年本錢翻倍了,總共有 {1} 元'.format(year,money))
def hello(name): print("你好嗎,{}".format(name)) return "函數停止執行,後面無論有多少句代碼都不會被執行"
print("這句話不會被執行")
person = 'Tom'
hello(person)
rst = hello("John") #函數也能夠這麼調用,若是有返回值會將返回值賦值給變量
函數的返回值數據結構
表示函數執行的結果,若是函數中沒有return系統自動返回None,函數一旦執行return語句,則無條件返回,意味着return下面的語句將再也不執行,只要遇到return,函數自動停止執行。def hello(name, gender = 'boy'): if gender = 'boy': print("welcome,{0},you are a good {1}".format(name, gender)) else: print("welcome,{0},you are a good {1}".format(name, gender)) hello('Tom') hello('Siri', 'girl')
- 關鍵字參數:注意與默認參數區分,好處就是實參與形參位置能夠不用一一對應
def fun(p1=v1, p2=v2, ...):
pass
fun(p1=value1, p2=value2, ....)app
def student(name=None, age=None, gender=None): print("我是一個學生,個人名字是 {0}, 我今年 {1} 歲, 我是個 {3}生") name = 'Tom' age = 12 gender = '男' student(age=age, gender=gender, name=name)
- 收集參數:
把沒有位置,不能和定義時的參數位置相對應的參數,放入一個特定的數據結構中
def fun(*args):
pass
調用:fun(p1, p2, p3, ...)
參數名能夠不用 args,但推薦這麼用,約定俗成. 注意前面的 " * " 不能省略, 調用的時候能夠不傳入參數值
收集參數傳參的時候不能直接傳入關鍵字參數,例如 fun(name='Tom'Z)
函數
def stu( *args ): print("你們好, 簡單自我介紹一下:") for i in args: print(i, end='=>') stu("小明", 18, "山東省") stu('小紅')
- 收集參數之關鍵字收集參數
把關鍵字參數以字典的形式放入收集參數, 訪問kwargs須要用訪問字典的方式
def fun( **kwargs ):
pass
#調用
fun(p1=v1, p2=v2, ....)
spa
def stu(name, age, *args, hobby='沒有', **kwargs): print('你們好') print("我叫 {0}, 我今年 {1} 大了.".format(name, age)) if hobby == '沒有': print('我沒有愛好') else: print("個人愛好是{0}".format(hobby)) for i in args: print(i) for k, v in kwargs.items(): print(k, ' ------', v) name = 'tom' age = 19 stu(name, age, '王曉靜', '小紅', hobby='sing', addr='beijing', phone='123213')
def stu(**kwargs): print(你們好,我先自我介紹一下) # 對於字典的訪問,Python2 與 Python3 有區別 for k,v in kwargs.items(): print(k,'--------', v) stu(name='wangxiaojjing', age=10, addr='北京') 收集參數的解包問題(unpack) - 把參數放入list或者dict中,直接把list/dict中的值放入收集參數中 def stu(*args): for i in args: print(i) l = list() l.append('aafd') # 在列表的最後插入值 l.append(1321) stu(l) # 打印的結果是['aafd', 1321] 不是理想中的結果 stu(*l) # 解包符號 * 加上之後就是理想中的結果對於dict類型的收集參數同樣能夠解包,可是須要加兩個 *,## 返回值函數和過程的區別就是: 有無返回值,若是函數中沒有顯式返回值,即return value 則默認返回None例如: def func1(): print('aaa') return 1def func2(): print('a')f1 = func1() # 結果是 1f2 = func2() # 結果是 None建議全部的函數無論有沒有返回值在最後都加上一個return # 函數文檔 - 用來解釋函數的做用以及利用方式- 文檔的寫法: 在函數內部開始的第一行使用三引號括起來 通常具備特定格式 例如 def stu(name, age): '''這是 文檔 ''' print(name, age) return None - 查看文檔的方式: 使用help(函數名) 使用 函數名._doc_