溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python函數(shù)基礎(chǔ)的示例分析

發(fā)布時(shí)間:2021-07-16 14:08:47 來(lái)源:億速云 閱讀:95 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python函數(shù)基礎(chǔ)的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、什么是命名關(guān)鍵字參數(shù)?

格式: 在*后面參數(shù)都是命名關(guān)鍵字參數(shù)。

特點(diǎn):

1、約束函數(shù)的調(diào)用者必須按照Kye=value的形式傳值。

2、約束函數(shù)的調(diào)用者必須用我們指定的Key名。

def auth(*args,name,pwd):
  print(name,pwd)
auth(pwd='213',name='egon')
def register(name,age):
  print(type(name),type(age))
register(123,[1,2,3])

以上輸出:

egon 213
<class 'int'> <class 'list'>

二、函數(shù)的嵌套

1、函數(shù)的嵌套調(diào)用:在函數(shù)內(nèi)又調(diào)用了其他函數(shù)

def max2(x,y):
  if x > y:
    return x
  else:
    return y
def max3(x,y,z):
  res1=max(x,y)
  res2=max(res1,z)
  return res2
print(max3(88,99,100))

以上輸出:

100

2、函數(shù)的嵌套定義:在函數(shù)內(nèi)又定義其他函數(shù)。

def func1():
  print('from func1')
  def func2(): #func2=內(nèi)存地址
    print('from func2')
  print(func2) #<function func1.<locals>.func2 at 0x0000024907A098C8>
  func2()
  func2()
  func2()
func1()

以上輸出:

from func2
from func2
from func2

三、函數(shù)的名稱空間

1、名稱空間:存放名字與值綁定關(guān)系的地方

x=888888888
def func():
  pass

2、名稱空間分為三類

(1)內(nèi)置名稱空間:存放python解釋器自帶的名字,在解釋器啟動(dòng)時(shí)就生效,解釋器關(guān)閉則失效。

(2)全局名稱空間:文件級(jí)別的名字,在執(zhí)行文件的時(shí)候生效,在文件結(jié)束或者在文件執(zhí)行期間被刪除則失效。

x=1
def f1():
  def f2():
    print(x)
  f2()
f1()
if 10 > 3:
  y=33333
while True:
  xxxxx=123123123

以上輸出:

1

(3)局部名稱空間:存放函數(shù)自定義的名字(函數(shù)的參數(shù)以及函數(shù)內(nèi)的名字都存放與局部名稱空間),在函數(shù)調(diào)用時(shí)臨時(shí)生效,函數(shù)結(jié)束則失效。

注意:

加載順序:內(nèi)置名稱空間-------->>全局名稱空間------->>>局部名稱空間

查找名字:局部名稱空間-------->>全局名稱空間------->>>內(nèi)置名稱空間

def f1():
  # len=1
  def f2():
    # len=2
    print(len)
  f2()
f1()

以上輸出:

global

3、作用域

全局作用域:包涵的是內(nèi)置名稱空間與全局名稱空間的名字。

特點(diǎn):

  • (1)在任何位置都能夠訪問(wèn)的到

  • (2)該范圍內(nèi)的名字會(huì)伴隨程序整個(gè)生命周期

局部作用域:包含的是局部名稱空間的名字

特點(diǎn):

  • (1)只在函數(shù)內(nèi)使用

  • (2)調(diào)用函數(shù)時(shí)生效,調(diào)用結(jié)束失效

四、函數(shù)對(duì)象

1、函數(shù)在python中是第一類對(duì)象

(1)可以被引用

x=1
y=x
def bar():
  print('from bar')
f=bar
f()

以上輸出:

from bar

(2)可以當(dāng)做參數(shù)傳入

x=1
def func(a):
  print(a)
func(x)

以上輸出:

1

(3)可以當(dāng)做函數(shù)的返回值

代碼(1)

x=1
def foo():
  return x
res=foo()
print(res)

以上輸出:

1

代碼(2)

def bar():
  print('from bar')
def foo(func): #func=<function bar at 0x00000225AF631E18>
  return func #return <function bar at 0x00000225AF631E18>
# print(bar)
f=foo(bar) #f=<function bar at 0x00000225AF631E18>
# print(f)
f()

以上輸出:

from bar

(4)可以當(dāng)做容器類型的元素

x=1
l=[x,]
print(l)
def get():
  print('from get')
def put():
  print('from put')
l=[get,put]
# print(l)
l[0]()

以上輸出:

[1]
from get

注意:

1、 func可以被引用

f=func

2、func可以當(dāng)做參數(shù)傳給x

3、func還可以當(dāng)做返回值

4、可以當(dāng)做容器中類型的元素

函數(shù)查詢登錄功能的引用:

def auth():
  print('請(qǐng)登錄:')
def reigster():
  print('注冊(cè):')
def search():
  print('查看:')
def transfer():
  print('轉(zhuǎn)賬')
def pay():
  print('支付')
dic={
  '1':auth,
  '2':reigster,
  '3':search,
  '4':transfer,
  '5':pay
}
def interactive():
  while True:
    print('''
    1 認(rèn)證
    2 注冊(cè)
    3 查看
    4 轉(zhuǎn)賬
    5 支付
    '''
    )
    choice = input('請(qǐng)輸入編號(hào):').strip()
    if choice in dic:
      dic[choice]()
    else:
      print('非法操作')
interactive()

五、閉包函數(shù)

閉:指的是定義在函數(shù)內(nèi)部的函數(shù)

作用域關(guān)系,在函數(shù)定義階段就規(guī)定死了,與調(diào)用位置無(wú)關(guān)

def outter():
  x=2
  def inner():
    # x=1
    print('from inner',x)
  return inner
f=outter() #f=inner
def foo():
  x=1111111111111111111111111111
  f()
foo()

以上輸出:

from inner 2

1、閉包函數(shù):

(1)定義在函數(shù)內(nèi)部的函數(shù)

(2)并且該函數(shù)包含對(duì)外部函數(shù)作用域中名字的引用,該函數(shù)就稱為閉包函數(shù)

了解:

為函數(shù)體傳值的方式

方式一:將值以參數(shù)的形式的傳入

利用爬蟲獲取網(wǎng)站的源代碼:

import requests:
def get(url):
  response=requests.get(url)
  if response.status_code == 200:
    print(response.text)
get('https://www.baidu.com')

方式二

import requests
import time
def outter(url): #url='https://www.baidu.com'
  # url='https://www.baidu.com'
  def get():
    response=requests.get(url)
    if response.status_code == 200:
      print(response.text)
  return get
baidu=outter('https://www.baidu.com')
python=outter('https://www.python.org')
baidu()
print('=====================>')
time.sleep(3)
baidu()

以上是“Python函數(shù)基礎(chǔ)的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI