Python 中的函數(shù)
Python中的函數(shù)和其他程序設(shè)計(jì)語言一樣,函數(shù)的主要作用是代碼重用,在邏輯上分割代碼的大小。
定義函數(shù)
通過def 關(guān)鍵字定義。def關(guān)鍵字后面跟一個(gè)函數(shù)的標(biāo)識(shí)名稱,后面跟一對(duì)圓括號(hào)。圓括號(hào)中間是參數(shù)變量名,該行用冒號(hào)結(jié)尾。接下來是一塊語句,他們是函數(shù)體。
函數(shù)定義的例子:
#!/usr/bin/env python
# *coding=utf-8
""" set encoding """
def sayhello():
"""example of python function"""
print "Hello"
sayhello()
函數(shù)形參
函數(shù)的形參具有局部性,在函數(shù)中使用參數(shù)應(yīng)該注意這種局部性,并且加以區(qū)分,在這里我們可以看一個(gè)例子。
#!/usr/bin/env python
# *coding=utf-8
""" set encoding """
def func(x):
print "x is %d" %(x)
x = 2
print "change local x to %d" %(x)
x = 50
func(x)
print "x is still %d" %(x)
在函數(shù)中,我們第一次使用x 的值的時(shí)候,Python 使用函數(shù)聲明的形參的值。
接下來,我們將2賦值給x。這個(gè)時(shí)候x是函數(shù)的局部變量,所以我們?cè)诤瘮?shù)內(nèi)部改變x 的時(shí)候,在主塊中的x不受影響。
Golbal 語句
如果需要為在函數(shù)外面定義的變量賦值,那么需要在函數(shù)內(nèi)告訴python,這個(gè)變量不是局部的,是全局的。使用golbal語句,可以明確的讓讀者知道,這個(gè)變量是在函數(shù)外面定義的。
def func():
global x
print "x is", x
x = 2
print "changed local x to ", x
x = 50
func()
print "Value of x is", x
運(yùn)行結(jié)果:
PS G:\2> & python g:/2/exp.py
x is 50
changed local x to 2
Value of x is 2
PS G:\2>
默認(rèn)參數(shù)值
對(duì)于一些函數(shù), 你希望它的一些參數(shù)是可選的,用戶可以根據(jù)需要輸入?yún)?shù)的值。如果用戶不想要為這些參數(shù)提供數(shù)值的話,這些參數(shù)就可以使用默認(rèn)值??梢栽诤瘮?shù)定義的形參名之后加上賦值運(yùn)算符(=)和默認(rèn)值,從而給參數(shù)指定默認(rèn)參數(shù)值。
#!/usr/bin/env python
# *coding=utf-8
""" set encoding """
def sayhello(name, time = 5):
""" defaulf is 5"""
print name
print "hello"*time
sayhello("kk")
sayhello("kk",1)
PS G:\2> & python g:/2/exp.py
kk
hellohellohellohellohello
kk
hello
PS G:\2>