Python 函數之間的調用和作用域


函數之間的調用

1.內嵌函數之間的調用(在同一個py文件內的函數之間的調用)

#定義offer函數
def offer(name):
return name
#定義people函數
def people(name,likefood):
'''people函數內調用offer函數'''
print(name+'喜歡'+likefood)
M=offer('清華大學')
print(name+'拿到了'+M+'offer,他請大家吃他喜歡吃的'+likefood)

print(people('小張','牛排自助'))

輸出結果:
小張喜歡牛排自助
小張拿到了清華大學的offer,他請大家吃他喜歡吃的牛排自助

注意:

1.被調用的函數,必須在調用之前被定義,也就是people函數要想調用offer函數,那offer函數必須在people函數之前就被定義好,否則會報錯,被調用的函數找不到,無法繼續內嵌調用

2.函數之間調用的禁忌!!!

  • 兩個函數之間不要相互調用,相互調用會導致遞歸錯誤,內存有限,一直循環,停止不下來,直到內存資源被耗盡
  • 函數不要自己調用自己,否則也會導致遞歸錯誤

 函數的作用域

1.函數的全局變量:定義的變量,整個py文件內可以公共使用,在定義的函數體外定義

2.函數的局部變量:在函數體內定義的變量,叫做函數的局部變量

a='祖國我愛你'
print('這是函數體外的變量a:{}'.format(a))
def add(name):
    a='中國是一個充滿愛的國家'
    print('{}說:這是函數體內的變量a:{}'.format(name,a))
    return a

add('小明')

輸出結果:
這是函數體外的變量a:祖國我愛你
小明說:這是函數體內的變量a:中國是一個充滿愛的國家

總結:函數體外定義的變量為全局變量,函數體內定義的變量為局部變量

3.全局變量和局部變量之間的關系

  • 全局變量不能獲取局部變量
  • 局部作用域能獲取全局變量
  • 全局變量不能修改局部變量
  • 局部作用域能修改全局變量(但是前提必須在局部變量前加global關鍵字)

全局作用域不能獲取局部變量

c=10
def add(a,b):
    c=a+b
    c=c+2
    return c
e=add(3,3)
print(e)
print(c)  #這里打印的是全局變量的c,而不是局部變量的

輸出結果:
8
10

局部作用域獲取全局變量

c=10
def add(a,b):
    e=a+b+c    #局部作用域獲取全局變量
    return e
al=add(3,3)
print(al)

輸出結果:
16

加global,在局部作用域修改全局變量,

如果不加global 表明是全局變量,局部是不能修改全局變量的

如果想再局部去修改全局變量,加global表明這是一個全局變量

c=10
def add(a,b):
    global c   #在局部作用域加global,將局部的c變成全局變量
    c=c+8
    print(c)
add(6,6)
print(c)  

輸出結果:
18
18

函數的作用

  1. 當你發現一直在粘貼、復制相同的或者類似的代碼時候,就可以定義一個通用的函數,把相同的一段操作程序存儲到函數體內,直接調用函數即可(這也就是所謂的封裝)
  2. 函數體里面存放的都是些形式參數,調用時,傳入的為實際參數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM