python學習之函數基礎

第一個python函數:

>>> def func_1():
...     print 'hello python'
... 
>>> func_1()
hello python

變量:根據作用域不同,分爲局部變量和全局變量

        局部變量:在函數內定義的變量,局部變量作用域在函數之內

        全局變量:定義在函數之外,在函數內使用global關鍵字標記,全局變量作用域爲整個模塊;全局變量儘量少用

 

示例:局部變量:

#!/usr/bin/env python
# coding=utf-8   申明中文字符集時'='兩邊不能留空格
arg = 10  #全局變量
def func():
        arg = 2 #局部變量,與外邊的arg爲不同的兩個變量
        print arg
func()
print arg

執行結果:

[root@server24 python]# chmod +x func_1.py 
[root@server24 python]# ./func_1.py 
2
10

示例:全局變量:

#!/usr/bin/python
#coding=utf-8
arg = 10
def func():
        global arg  #global定義arg爲全局變量,下面的賦值會覆蓋函數體>外的操作
        arg = 2
        print arg
func()
print arg

執行結果:

[root@server24 python]# chmod +x func_2.py 
[root@server24 python]# ./func_2.py 
2
2

帶參數的函數

位置參數:按順序依次給變量賦值

關鍵字參數:順序不再重要,可按關鍵字給變值

示例:位置參數:

#!/usr/bin/env python 
#coding=utf-8
def func(arg1,arg2,arg3):
        print arg1,arg2,arg3

func(1,2,3)  #局部變量

執行結果:

[root@server24 python]# chmod +x func_3.py 
[root@server24 python]# ./func_3.py 
1 2 3

示例:關鍵字參數:

#!/usr/bin/env python 
#coding=utf-8
def func(arg1,arg2,arg3):
        print arg1,arg2,arg3

func(arg1=1,arg3=2,arg2=3)  #局部變量

執行結果:

[root@server24 python]# ./func_3.py 
1 3 2

位置參數和關鍵字參數可以混合使用,但是需要注意的是位置參數須在關鍵字參數之前

示例:位置、關鍵字參數混合使用

#!/usr/bin/env python 
#coding=utf-8
def func(arg1,arg2,arg3):
        print arg1,arg2,arg3

func(1,arg3=2,arg2=3)  #局部變量

執行結果:

[root@server24 python]# ./func_3.py 
1 3 2

默認參數:對一個或多個指定默認值:

示例:默認值參數:

#!/usr/bin/env python
#coding=utf-8
def func(arg1,arg2=10):  #有默認值參數須在非默認值參數後面
        print arg1,arg2
func(100)  #非默認值參數須賦值,默認值參數可賦可不賦值

執行結果:

[root@server24 python]# ./func_4.py 
100 10


可變參數

python支持可變參數。參數分爲兩種,一種是位置參數,一種是關鍵字參數。 

示例:可變位置參數:

#!/usr/bin/env python
#coding=utf-8
def func(*args):  #args在函數體內被打包成一個元組
        print type(args) 
        print args
func(1,2,3,4,56,7)

執行結果:

[root@server24 python]# ./func_5.py 
<type 'tuple'>
(1, 2, 3, 4, 56, 7)

示例:可變關鍵字參數:

#!/usr/bin/env python
#coding=utf-8
def func(**args):  #args在函數體內被打包成一個字典
        print type(args)
        print args
func(name='tom',age='30',qq='33804139')

執行結果:

<span style="font-size:14px;">[root@server24 python]# vim func_5.py 
[root@server24 python]# ./func_5.py 
<type 'dict'>
{'qq': '33804139', 'age': '30', 'name': 'tom'}

混合使用:

示例:

#!/usr/bin/env python
#coding=utf-8
def func(name,age,*args,**args1):  #非可變參數必須在可變參數之前;可變位置參數須在可變關鍵字參數之前
        print name,age
        for i in args:
                print i
        for x,y in args1.items():
                print "%s ==> %s" % (x,y)

func('tom',30,33804129,8888888,hello='python')

執行結果:

[root@server24 python]# ./func_6.py 
tom 30
33804129
8888888
hello ==> python


參數解包

參數解包發生在函數調用時。

    * 用於序列爲位置參數。

    ** 用於解包字典爲關鍵字參數

示例:

#!/usr/bin/env python
#coding=utf-8
def func(*args,**args1):   #args打包成一個元組,args1打包成一個字典
        for i in args:
                print i,
        for x,y in args1.items():
                print "%s ==> %s" % (x,y)

li = [2,3,4,5,6,7]
dic = {'name':'tom','age':30}
#func(li[0],li[1],li[2])  #傳統的調用方法
func(*li,**dic)   #將列表li解包成位置參數並傳遞進去;將字典dic解包成>關鍵字參數並傳遞進去

執行結果:

[root@server24 python]# ./func_7.py 
2 3 4 5 6 7 age ==> 30
name ==> tom


函數返回值

    在函數體內輸出print,會產生一定的副作用,一般在函數體內將結果return出來。

    return關鍵字:

        可以返回任何對象

        可以變相返回多值:默認返回的是一個元組

示例:

#!/usr/bin/env python
#coding=utf-8
def func(i):
        j = i * 2
        k = i * 5
        return j,k  #返回兩個值,調用時需要用兩個變量接收
x,y = func(2)
print x,y

執行結果:

[root@server24 python]# ./func_8.py 
4 10

當函數中沒有return關鍵字時,函數會默認返回None 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章