函數外部的代碼要想獲取函數的執行結果,就能夠在函數裏用return語句把結果返回。python
def stu_register(name, age, course='PY' ,country='CN'): print("----註冊學生信息------") print("姓名:", name) print("age:", age) print("國籍:", country) print("課程:", course) if age > 22: return False else: return True registriation_status = stu_register("王山炮",22,course="PY全棧開發",country='JP') if registriation_status: print("註冊成功") else: print("too old to be a student.")
注意:編程
name = "Alex Li" def change_name(): name = "金角大王,一個有Tesla的高級屌絲" print("after change", name) change_name() print("在外面看看name改了麼?",name)
輸出app
after change 金角大王,一個有Tesla的高級屌絲 在外面看看name改了麼? Alex Li
爲何在函數內部改了name的值後, 在外面print的時候卻沒有改呢? 由於這兩個name根本不是一回事。函數
就是想在函數裏修改全局變量怎麼辦?學習
name = "Alex Li" def change_name(): global name #聲明一個全局變量 name = "Alex 又名金角大王,愛生活、愛自由、愛姑娘" print("after change", name) change_name() print("在外面看看name改了麼?", name)
global name
的做用就是要在函數裏聲明全局變量name ,意味着最上面的name = 「Alex Li」
即便不寫,程序最後面的print也能夠打印name。code
d = {"name":"Alex","age":26,"hobbie":"大保健"} l = ["Rebeeca","Katrina","Rachel"] def change_data(info,girls): info["hobbie"] = "學習" girls.append("XiaoYun") change_data(d,l) print(d,l)
執行結果{‘name’: ‘Alex’, ‘age’: 26, ‘hobbie’: ‘學習’} [‘Rebeeca’, ‘Katrina’, ‘Rachel’, ‘XiaoYun’]blog
不是說不能在函數裏改全局變量麼,怎麼改了呀?內存
根據上圖咱們能看出, 程序只是把d這個dict的內存地址傳給了change_data函數,把dict比做魚缸,裏面的k,v比做缸裏裝的魚。如今只是把魚缸丟給了函數,這個魚缸自己你不能改,可是裏面的魚能夠。 至關於只是傳了一個對這個的引用關係給到函數的形參。這樣是爲了減小內存的浪費,由於若是這個dict比較大,傳一次到函數裏就要copy一份新的值的話,效率過低了。作用域