1. 程式人生 > >python學習第j十一天

python學習第j十一天

1. 第一類物件, 函式名的使用

函式名就是變數名, 函式名儲存的是函式的記憶體地址

變數的命名規範:
1. 由數字, 字母, 下劃線組成
2. 不能是數字開頭, 更不能是純數字
3. 不能用關鍵字
4. 不要太長
5. 要有意義
6. 不要用中文
7. 區分大小寫
8. 駝峰或者下滑線

代理模式:
# 裝飾器的雛形
# 把函式名當成變數來使用
# def chi(fn): # fn 代理了func1和func2
# print("開掛")
# fn()
# print(fn.__name__) # .__name__ 顯示呼叫的函式名
# print("洗包")
#
# def play_dnf():
# print("瘋狂的刷")
#
# def func1():
# print("我是func1")
#
# def func2():
# print("我是func2")
#
# def he():
# print("我要喝酒")
# chi(play_dnf)

2. 閉包
閉包: 在內層函式中引入外層函式的變數
作用:
1. 保護變數不受侵害(javascript)
2. 讓一個變數常駐記憶體

爬蟲 (low版本):
# from urllib.request import urlopen # 開啟一個連線用的模組
# # 外層函式
# def but():
# # 開啟連線. 讀取原始碼
# content = urlopen("http://www.cctv.com/").read() # 永久駐留在記憶體
# # 內層函式
# def get_content():
# # 返回content
# return content
# return get_content # 內層函式
#
# fn = but() # 這裡會很慢. 需要網路請求
# print(fn()) # 不會再進行網路請求了
# print(fn())

關於註釋:
# def func(a, b):

# '''
# 文件註釋
# 這個函式用來計算兩個數的和並返回
# :param a: 第一個數
# :param b: 第二個數
# :return: 第一個數和第二個數的和
# author:sylar
# date:2018-10-31
# '''
#
# print("我是func")
# return a + b
# print(func.__doc__) # document 用來檢視文件註釋
# print(func.__name__) # name 名字 獲取函式名

3. 迭代器
dir() 檢視變數能夠執行的方法(函式)
# print(dir(str)) # 檢視str能夠執行的操作. 內部的方法

Iterator: 迭代器, __iter__(), __next__()
Iterable: 可迭代的, __iter__()

for迴圈的流程:
it = lst.__iter__()
while 1:
try:
el = it.__next__()
for迴圈的迴圈體
except StopIteration:
break
從迭代器中獲取資料的唯一方法: __next__()

三個特徵:
1. 省記憶體
2. 惰性機制
3. 只能往前. 不能後退