外層函式的變數直接被巢狀函式引用計算
fun1()函式中的b在fun2()中直接用
class Solution:
def fun1(self,a,b):
c = a + b
b = 0
def fun2(c):
b += 1 #報錯:UnboundLocalError: local variable 'b' referenced before assignment
print('b=',b)
print('c=',c)
return
fun2(c)
print(b)
return 0
result = Solution()
result.fun1(1,2)
示例2:但是下邊程式中Permutation(self, ss)中的lens變數卻能直接在dfs函式中使用,這是為什麼?
class Solution:
def Permutation(self, ss):
lens = len(ss) #該變數具有全域性性,在dfs中可以直接用。
box = [0] * lens
book =[0] * lens
steps = 0
ans = []
if len(ss) == 0:
return []
def dfs(steps):
if steps > lens-1: #重點:Permutation的變數lens可以直接在dfs中應用
str1 = ''
for j in range(lens):
#print("{0}".format(box[j]),end='')
#print('\n')
str1 = str1 + box[j]
ans.append(str1)
return
for i in range(lens):
if book[i] == 0 :
box[steps] = ss[i]
book[i] = 1
dfs(steps + 1) #遞迴
book[i] = 0
return
dfs(steps) #函式中若要呼叫巢狀函式,需要引用這個函式
#在dfs及自身的遞迴結束後,輸出列表ans
#特殊情況2:ss=['a','a'],有重複的字母時,要用去重
ans = list(set(ans)) #去重:set去重後返回的是set型別,要改為list型別
ans = sorted(ans) #再對ans結果排序,從小到大
print(ans)
return ans
ss = ['a','b','c']
result = Solution()
result.Permutation(ss)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007056/viewspace-2840484/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 函式的動態引數 及函式巢狀函式巢狀
- 函式外與函式內的變數函式變數
- Python入門(十八):變數作用域與巢狀函式Python變數巢狀函式
- MATLAB巢狀函式練習Matlab巢狀函式
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- Python巢狀定義函式增強reduce()函式功能Python巢狀函式
- Python基礎之函式的巢狀Python函式巢狀
- 第 8 節:函式-函式巢狀呼叫與返回值函式巢狀
- js中的函式巢狀和閉包JS函式巢狀
- 1.5.2 Python函式巢狀及作用域Python函式巢狀
- setTimeout和箭頭函式巢狀中的this指向函式巢狀
- php函式引用傳遞引數的方法PHP函式
- JavaScript 非同步操作裡的巢狀回撥函式JavaScript非同步巢狀函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 函式內部的變數提升函式變數
- JavaScript匿名函式要外面巢狀小括號原因JavaScript函式巢狀
- python---函式引數、變數Python函式變數
- Python動態引數、名稱空間、函式巢狀、global和nonlocalPython函式巢狀
- Javascript 函式和變數提升JavaScript函式變數
- python函式變長引數Python函式
- Python的函式引數傳遞:傳值?引用?Python函式
- Flutter巢狀深?擴充套件函式了解一下Flutter巢狀套件函式
- 函式計算——應用初探函式
- PHP匿名函式使用use關鍵詞引用外部空間變數PHP函式變數
- Python函數語言程式設計-高階函式、匿名函式、裝飾器、偏函式Python函數程式設計函式
- 隨機變數函式的分佈隨機變數函式
- Python 引用不確定的函式Python函式
- 關於變數的宣告和定義、內部函式和外部函式變數函式
- js中在一個函式中引用另一個函式中的函式,可以這麼做JS函式
- 如何計算PHP函式中傳遞的引數數量PHP函式
- 倉頡程式語言技術指南:巢狀函式、Lambda 表示式、閉包巢狀函式
- 函式正規化入門(惰性求值與函式式狀態)函式
- JavaScript 變數與函式宣告前置JavaScript變數函式
- Python 函式和變數作用域Python函式變數
- JS——變數提升和函式提升JS變數函式
- task04 變數與函式變數函式
- Go函式接收可變引數Go函式
- 變數(函式)命名最佳實踐變數函式