Python筆記 函式的用法

2021-06-28 04:51:06 字數 2746 閱讀 9791

1、判斷函式是否可用:callable(f)

>>> callable(f)

false

2、改變函式引數(注意是不可變的資料結構:如 字串、數字、元組),並不會改變外部變數值,這時函式引數只在函式內有效

def y(i):

i=1      #呼叫該函式時,建立乙個新的命名空間,重新建立新的乙個區域性變數

return i  # return 可以沒有

>>> i=10

>>> y(i)

1>>> i

10>>>

3、改變函式引數(注意是可變的資料結構,如:列表),可以改變外部變數的值,例如:

def y(i):

i[0]='this is test'      #與不可變數相比,由於是可變數,指向與外部變數相同的儲存空間.  此時在函式的命名空間中並沒有建立變數i

>>> j=[0,1,2,3,4]        #如果不想改變可變引數的值可以,建立乙個副本: i0=i[:]

>>> y(j)

>>> j

['this is test', 1, 2, 3, 4]

4、函式區域性變數與全域性變數的用法:呼叫函式時,將建立新的乙個命名空間,特點:一、函式內建立的新的變數只在這個這個命名空間有效;二、可以直接呼叫全域性變數,但如果函式內有建立相同的變數,將遮蔽全域性變數,此時要想呼叫的話用globals()['j']這個函式

def y(i):

i[0]='this is test'

j="this is the local varity"

print j

print globals()['j']

>>> i=[0]

>>> j="global varity"

>>> y(i)

this is the local varity

global varity

5、遞迴:先寫出遞迴的數學遞推表示式,然後寫成python語法程式:

def search(seq,num,lower=0,upper=none):

if upper==none:

upper=len(seq)-1

if seq[lower]==num:

print 'the num locate %d index in seq' % lower

elif seq[upper]==num:

print 'the num locate %d index in seq' % upper

elif seq[lower]==seq[upper]:

print 'the num is not in seq'

elif seq[(lower+upper)/2]num:

return search(seq,num,lower,(lower+upper)/2-1)

elif seq[(lower+upper)/2]==num:

print 'the num locate %d index in seq' % ((lower+upper)/2)

>>> x

[0, 1, 3, 5, 7, 9, 10, 10, 10, 11, 15]

>>> search(x,9)

the num locate 5 index in seq

>>> search(x,10)

the num locate 6 index in seq

>>> search(x,11)

the num locate 9 index in seq

>>> search(x,15)

the num locate 10 index in seq

6、變數命名空間例項

以下是乙個示例,演示了如何引用不同作用域和命名空間,以及 global 和 nonlocal 如何影響變數繫結: 

def scope_test():     def do_local(): 

spam = "local spam"     def do_nonlocal():         nonlocal spam 

spam = "nonlocal spam"     def do_global():         global spam 

spam = "global spam"  

spam = "test spam"     do_local() 

print("after local assignment:", spam)     do_nonlocal() 

print("after nonlocal assignment:", spam)     do_global() 

print("after global assignment:", spam)  

scope_test() 

print("in global scope:", spam) 

以上示例**的輸出為: 

after local assignment: test spam 

after nonlocal assignment: nonlocal spam 

after global assignment: nonlocal spam 

in global scope: global spam 

注意: local 賦值語句是無法改變 scope_test 的 spam 繫結。 nonlocal 賦值語句改變了 scope_test 的spam 繫結,並且 global 賦值語句從模組級改變了 spam 繫結。 你也可以看到在 global 賦值語句之前對 spam 是沒有預先繫結的。

Python筆記 join 函式用法

本片文章簡單介紹python內建函式json使用以及引用json 語法 sep join seq 引數說明 sep 分隔符。可以為空 seq 要連線的元素序列 字串 元組 字典 上面的語法即 以sep作為分隔符,將seq所有的元素合併成乙個新的字串 返回值 返回乙個以分隔符sep連線各個元素後生成的...

python函式的用法

import sys print sys.argv 1 sys.argv 2 name pp def function global name 全域性變數 name aaa print name function print name name adsad asdasd def function p...

Trim函式的用法(筆記)

刪除字串首尾的空白 可以首尾一起,也可以指定首或尾,取決於控制引數 但會保留字串內部作為詞與詞之間分隔的空格。各種 trim 函式的語法如下 ltrim 字串 將字串左邊的空格移除。rtrim 字串 將字串右邊的空格移除。trim 字串 將字串首尾兩端的空格移除,作用等於rtrim和ltrim兩個函...