国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

帶你了解python裝飾器

2020-02-16 01:43:38
字體:
來源:轉載
供稿:網友

1.作用域

 在python中,作用域分為兩種:全局作用域和局部作用域。

 全局作用域是定義在文件級別的變量,函數名。而局部作用域,則是定義函數內部。

 關于作用域,我要理解兩點:a.在全局不能訪問到局部定義的變量 b.在局部能夠訪問到全局定義的變量,但是不能修改全局定義的變量(當然有方法可以修改)

 下面我們來看看下面實例:

x = 1def funx():  x = 10  print(x) # 打印出10funx()print(x) # 打印出1

  如果局部沒有定義變量x,那么函數內部會從內往外開始查找x,如果沒有找到,就會報錯

x = 1def funx():  print(x) # 打印出1funx()print(x) # 打印出1x = 1def funx():  def func1():    print(x) # 打印出1  func1()funx()print(x) # 打印出1

  因此,關于作用域的問題,只需要記住兩點就行:全局變量能夠被文件任何地方引用,但修改只能在全局進行操作;如果局部沒有找到所需的變量,就會往外進行查找,沒有找到就會報錯。

2.高級函數

 我們知道,函數名其實就是指向一段內存空間的地址,既然是地址,那么我們可以利用這種特性來。

 a函數名可以作為一個值

def delete(ps):  import os  filename = ps[-1]  delelemetns = ps[1]  with open(filename, encoding='utf-8') as f_read,/    open('tmp.txt', 'w', encoding='utf-8') as f_write:    for line in iter(f_read.readline, ''):      if line != '/n': # 處理非空行        if delelemetns in line:          line = line.replace(delelemetns,'')        f_write.write(line)  os.remove(filename)  os.rename('tmp.txt',filename)def add(ps):  filename = ps[-1]  addelemetns = ps[1]  with open(filename, 'a', encoding='utf-8') as fp:    fp.write("/n", addelemetns)def modify(ps):  import os  filename = ps[-1]  modify_elemetns = ps[1]  with open(filename, encoding='utf-8') as f_read, /      open('tmp.txt', 'w', encoding='utf-8') as f_write:    for line in iter(f_read.readline, ''):      if line != '/n': # 處理非空行        if modify_elemetns in line:          line = line.replace(modify_elemetns, '')        f_write.write(line)  os.remove(filename)  os.rename('tmp.txt', filename)def search(cmd):  filename = cmd[-1]  pattern = cmd[1]  with open(filename, 'r', encoding="utf-8") as f:    for line in f:      if pattern in line:        print(line, end="")    else:      print("沒有找到")dic_func ={'delete': delete, 'add': add, 'modify': modify, 'search': search}while True:  inp = input("請輸入您要進行的操作:").strip()  if not inp:    continue  cmd_1 = inp.split()  cmd = cmd_1[0]  if cmd in dic_func:    dic_func[cmd](cmd_1)  else:    print("Error")

 b.函數名可以作為返回值

def outer():  def inner():    pass  return inners = outer()print(s)######輸出結果為#######<function outer.<locals>.inner at 0x000000D22D8AB8C8>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 葵青区| 黄大仙区| 上犹县| 芮城县| 澄迈县| 天柱县| 增城市| 横山县| 迁安市| 青河县| 壶关县| 普兰县| 景德镇市| 曲阜市| 德令哈市| 措美县| 福安市| 越西县| 西丰县| 屏南县| 天柱县| 修水县| 钦州市| 雅江县| 保山市| 黔江区| 白玉县| 慈利县| 含山县| 靖安县| 泸州市| 尤溪县| 林西县| 朝阳市| 十堰市| 航空| 乌拉特中旗| 岳阳市| 嵩明县| 宣武区| 保定市|