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()

默認參數

看下面代碼

1
2
3
4
5
6
7
8
9
10
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變成默認參數非常簡單

1
def  stu_register(name,age,course,country = "CN" ):

這樣,這個參數在調用時不指定,那默認就是CN,指定了的話,就用你指定的值。

另外,你可能注意到了,在把country變成默認參數后,我同時把它的位置移到了最后面,為什么呢?  

關鍵參數

正常情況下,給函數傳參數要按順序,不想按順序就可以用關鍵參數,只需指定參數名即可,但記住一個要求就是,關鍵參數必須放在位置參數之后。

1
stu_register(age = 22 ,name = 'alex' ,course = "python" ,)

  

非固定參數

若你的函數在定義時不確定用戶想傳入多少個參數,就可以使用非固定參數

1
2
3
4
5
6
7
8
9
10
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

1
2
3
4
5
6
7
8
9
10
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'}

 

局部變量  

1
2
3
4
5
6
7
8
9
10
11
name  =  "Alex Li"
 
def  change_name(name):
     print ( "before change:" ,name)
     name  =  "金角大王,一個有Tesla的男人"
     print ( "after change" , name)
 
 
change_name(name)
 
print ( "在外面看看name改了么?" ,name)

輸出

1
2
3
before change: Alex Li
after change 金角大王,一個有Tesla的男人
在外面看看name改了么? Alex Li

 

全局與局部變量

在子程序中定義的變量稱為局部變量,在程序的一開始定義的變量稱為全局變量。
全局變量作用域是整個程序,局部變量作用域是定義該變量的子程序。
當全局變量與局部變量同名時:
在定義局部變量的子程序內,局部變量起作用;在其它地方全局變量起作用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM