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