函式基礎2

2022-09-16 17:06:19 字數 2475 閱讀 2008

命名空間與作用域

全域性作用域:

內建命名空間 builtins

全域性命名空間 檔案中沒有縮排的定義的名稱 在這個檔案的任何位置都可以使用

區域性作用域:

區域性命名空間 區域性----------》全域性-----------》內建

命名空間的查詢:globals()

locals()

函式巢狀: 巢狀呼叫

巢狀定義 函式定義時僅顯示語法錯誤

函式物件:

函式是第一類物件:

可以被當做變數來傳遞

可以被當做引數

可以被當做返回值

可以被當做容器的乙個元素

閉包:內部定義的函式,且包含對外部作用域名字的引用而不是全域性作用域名字的引用

作用:閉包包含它的記憶體位址和自身引用的引數(自帶乾糧)

應用場景:專門爬某一**的爬蟲

# print(f.__closure__) # 檢視閉包f2的記憶體位址和它引用的外部引數的個數

# print(f.__closure__[0].cell_contents) # 檢視f2引用的外部引數的值

#巢狀定義:

x = 9999999999

def f1():

#x = 1

print('----------------',x)

def f2():

x = 2

print('------------',x)

def f3():

x= 3

print('------',x)

f3()

f2()

f1()

#巢狀呼叫

def my_max(x,y):

res = x if x > y else y

return res

def my_max1(a,b,c,d):

res1 = my_max(a,b)

res2 = my_max(res1,c)

res3 = my_max(res2,d)

return res3

print(my_max1(1,20,3,4))

def foo():

print('from foo')

return 'aaa'

print(foo) # 列印函式記憶體位址

print(foo()) #列印函式執行結果和返回值

#函式可以被賦值

f = foo

print(f)

f()#把函式當成引數傳遞

def bar(func):

print('from bar')

func()

bar(foo)

#把函式當成返回值

def bar(func):

return func

bar(foo)

f = (bar(foo))

f()print(bar)

#把函式當做容器的乙個元素

def add():

print('-------------------add')

def search():

print('--------------------search')

cmd_dic=

def tell_msg():

msg = """

**********

search:查詢

add:增加

***********

"""print(msg)

def main():

tell_msg()

m = input('please input your choice:')

cmd_dic[m]()

main()

#閉包x =1

def f1(x):

def f2():

print(x)

return f2

f = f1(999999999999)

f()print(f.__closure__) # 檢視閉包f2的記憶體位址和它引用的外部引數的個數

print(f.__closure__[0].cell_contents) # 檢視f2引用的外部引數的值

#閉包的應用

#爬蟲from urllib.request import urlopen

def get(url):

return urlopen(url).read()

print(get(''))

#專門爬python

from urllib.request import urlopen

def get(url):

def f2():

n = urlopen(url).read()

print(n)

return f2

f = get('')

f()

python基礎2 函式

一 python 的四個作用域 名稱 描述l區域性作用域 e外部巢狀函式作用域 g全域性作用域 b內建作用域 二 lambda 表示式 又名匿名函式表示式 作用 建立乙個匿名函式物件 同def類似,但不提供函式名 語法 lambda 形參1,形參2,表示式語法說明 1.lambda 只是乙個表示式,...

Python基礎語法2 函式

1.定義 def 函式名 引數1,引數2,引數n 函式體return 語句 例如 def greet name print name 早上好 2.呼叫 例如 greet 貝貝 4.return 可以返回多個值,對映資料型別元素 tuple def love name1,name2 face name...

Python入門基礎 函式(2)

函式也是一種型別,我們自定義的函式就是函式物件,函式名儲存了函式物件的引用 位址 def test print 我是測試函式 print test 函式名是變數,指向了函式物件 pf test pf變數也指向了函式物件,所以也可以通過pf呼叫test函式 pf 裝逼利器 不再使用def 函式名 這種...