乙個程式的所有的變數並不是在哪個位置都可以訪問的。訪問許可權決定於這個變數是在**賦值的。
變數的作用域決定了在哪一部分程式你可以訪問哪個特定的變數名稱。兩種最基本的變數作用域如下:
demo如下:
# 定義全域性變數
a = 100
def test1():
print(a)
def test2():
print(a)
# 呼叫函式
test1()
test2()
區域性變數
total = 0; # 這是乙個全域性變數
# 可寫函式說明
def sum( arg1, arg2 ):
#返回2個引數的和."
total = arg1 + arg2; # total在這裡是區域性變數.
print "函式內是區域性變數 : ", total
return total;
lambda函式的語法只包含乙個語句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下例項:
sum = lambda arg1, arg2: arg1 + arg2
>呼叫sum函式
print "value of total : ", sum( 10, 20 )
print "value of total : ", sum( 20, 20 )
以上例項輸出結果:
value of total : 30
value of total : 40
lambda函式能接收任何數量的引數但只能返回乙個表示式的值
匿名函式不能直接呼叫print,因為lambda需要乙個表示式
在python中,對匿名函式提供了有限支援。還是以map()函式為例,計算f(x)=x2時,除了定義乙個f(x)的函式外,還可以直接傳入匿名函式:
>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]
通過對比可以看出,匿名函式lambda x: x * x實際上就是:
def f(x):
return x * x
關鍵字lambda表示匿名函式,冒號前面的x表示函式引數。
匿名函式有個限制,就是只能有乙個表示式,不用寫return,返回值就是該表示式的結果。
用匿名函式有個好處,因為函式沒有名字,不必擔心函式名衝突。此外,匿名函式也是乙個函式物件,也可以把匿名函式賦值給乙個變數,再利用變數來呼叫該函式:
>>> f = lambda x: x * x
>>> f
at 0x101c6ef28>
>>> f(5)
25同樣,也可以把匿名函式作為返回值返回,比如:
def build(x, y):
return lambda: x * x + y * y
函式作為引數傳遞
自己定義函式
>>> def fun(a, b, opt):
... print "a =", a
... print "b =", b
... print "result =", opt(a, b)
...>>> fun(1, 2, lambda x,y:x+y)
a = 1
b = 2
result = 3
作為內建函式的引數
想一想,下面的資料如何指定按age或name排序?按name排序:stus = [
, ,
]
按age排序:>> stus.sort(key = lambda x:x['name'])
>> stus
[, , ]
python3 函式 基礎知識二
1.python 函式的引數傳遞 1.傳遞方式 位置傳參 序列傳參 關鍵字傳參 字典關鍵字傳參 2.位置傳參 實際呼叫引數 實參 的對應關係與形式引數 形參 的對應關係 是按位置來一次對應的 示意 def fx a,b,c pass fx 1,2,3 3.序列傳參 序列傳參是批在函式呼叫過程中,用 ...
python3 基礎知識 六 函式 上
函式能提高應用的模組性,和 的重複利用率。你已經知道python提供了許多內建函式,比如print 但你也可以自己建立函式,這被叫做使用者自定義函式。定義函式 定義函式的格式如下 def 函式名 demo 定義乙個函式,能夠完成列印資訊的功能 def printinfo print print 人生...
python3 基礎知識 六 函式 下
所謂 返回值 就是程式中函式完成一件事情後,最後給呼叫者的結果 如下示例 def add2num a,b c a b return c 或者def add2num a,b return a b 儲存函式的返回值示例如下 定義函式 def add2num a,b return a b 呼叫函式,順便儲...