外層函式的變數直接被巢狀函式引用計算
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變數巢狀函式
- 函式(三)作用域之變數作用域、函式巢狀中區域性函式作用域、預設值引數作用域函式變數巢狀
- 詳解Python的函式巢狀Python函式巢狀
- MATLAB巢狀函式練習Matlab巢狀函式
- 第 8 節:函式-函式巢狀呼叫與返回值函式巢狀
- Python巢狀定義函式增強reduce()函式功能Python巢狀函式
- Python基礎之函式的巢狀Python函式巢狀
- js中的函式巢狀和閉包JS函式巢狀
- Oracle 函式大全(字串函式,數學函式,日期函式,邏輯運算函式,其他函式)Oracle函式字串
- PHP函式,引數,可變參函式.PHP函式
- 1.5.2 Python函式巢狀及作用域Python函式巢狀
- 計算日期的函式函式
- javascript函式引數和函式內同名變數的關係JavaScript函式變數
- 13.1 函式中的變數函式變數
- setTimeout和箭頭函式巢狀中的this指向函式巢狀
- php函式引用傳遞引數的方法PHP函式
- javascript基礎(函式與方法的區別,變數作用域,變數和函式的宣告提前,函式作用域)(十五)JavaScript函式變數
- 函式定義、函式的引數、函式的預設引數函式
- JavaScript 非同步操作裡的巢狀回撥函式JavaScript非同步巢狀函式
- 函式的靜態變數 static函式變數
- 函式內部的變數提升函式變數
- 素數計數函式函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 字元函式、數字函式和日期函式字元函式
- 淺析一個函式呼叫另一個函式的變數函式變數
- 基於函式的索引狀態變化函式索引
- 【函式】Oracle函式系列(2)--數學函式及日期函式函式Oracle
- JavaScript匿名函式要外面巢狀小括號原因JavaScript函式巢狀
- Javascript 函式和變數提升JavaScript函式變數
- 【機器學習】SVM核函式的計算機器學習函式
- 倉頡程式語言技術指南:巢狀函式、Lambda 表示式、閉包巢狀函式
- 聚合函式與數字函式函式
- 關於C++引用做為函式引數和指標作為函式引數C++函式指標
- PHP匿名函式使用use關鍵詞引用外部空間變數PHP函式變數
- 隨機變數函式的分佈隨機變數函式
- C++ 函式的可變引數C++函式