您好,登錄后才能下訂單哦!
下面給大家介紹python3中函數參數的四種簡單用法,具體內容如下所示:
def print_two(*args): arg1, arg2 = args print "arg1: %r, arg2: %r" % (arg1,arg2) def print_two_again(arg1, arg2): print "arg1: %r, arg2: %r" % (arg1, arg2) def print_one(arg1): print "arg1: %r" % arg1 def print_none(): print "I got nothin" print_two("Zed","Shaw") print_two_again("Zed","Shaw") print_one("First!") print_none()
默認參數
看下面代碼
def stu_register(name,age,country,course): print("----注冊學生信息------") print("姓名:",name) print("age:",age) print("國籍:",country) print("課程:",course) stu_register("王山炮",22,"CN","python_devops") stu_register("張叫春",21,"CN","linux") stu_register("劉老根",25,"CN","linux")
發現 country 這個參數 基本都 是"CN", 就像我們在網站上注冊用戶,像國籍這種信息,你不填寫,默認就會是 中國, 這就是通過默認參數實現的,把country變成默認參數非常簡單
def stu_register(name,age,course,country="CN"):
這樣,這個參數在調用時不指定,那默認就是CN,指定了的話,就用你指定的值。
另外,你可能注意到了,在把country變成默認參數后,我同時把它的位置移到了最后面,為什么呢?
關鍵參數
正常情況下,給函數傳參數要按順序,不想按順序就可以用關鍵參數,只需指定參數名即可,但記住一個要求就是,關鍵參數必須放在位置參數之后。
stu_register(age=22,name='alex',course="python",)
非固定參數
若你的函數在定義時不確定用戶想傳入多少個參數,就可以使用非固定參數
def stu_register(name,age,*args): # *args 會把多傳入的參數變成一個元組形式 print(name,age,args) stu_register("Alex",22) #輸出 #Alex 22 () #后面這個()就是args,只是因為沒傳值,所以為空 stu_register("Jack",32,"CN","Python") #輸出 # Jack 32 ('CN', 'Python')
還可以有一個**kwargs
def stu_register(name,age,*args,**kwargs): # *kwargs 會把多傳入的參數變成一個dict形式 print(name,age,args,kwargs) stu_register("Alex",22) #輸出 #Alex 22 () {}#后面這個{}就是kwargs,只是因為沒傳值,所以為空 stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong") #輸出 # Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'}
局部變量
name = "Alex Li" def change_name(name): print("before change:",name) name = "金角大王,一個有Tesla的男人" print("after change", name) change_name(name) print("在外面看看name改了么?",name)
輸出
before change: Alex Li after change 金角大王,一個有Tesla的男人
在外面看看name改了么? Alex Li
全局與局部變量
在子程序中定義的變量稱為局部變量,在程序的一開始定義的變量稱為全局變量。
全局變量作用域是整個程序,局部變量作用域是定義該變量的子程序。
當全局變量與局部變量同名時:
在定義局部變量的子程序內,局部變量起作用;在其它地方全局變量起作用。
總結
以上所述是小編給大家介紹的python3中函數參數的四種簡單用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。