如果你想通過(guò)函數(shù)的名稱來(lái)獲取函數(shù)的運(yùn)行地址,可以像下面這樣實(shí)現(xiàn):
目前成都創(chuàng)新互聯(lián)公司已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、潼南網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
[python]?view plain?copy
#?File:?builtin-import-example-2.py
def?getfunctionbyname(module_name,?function_name):
module?=?__import__(module_name)
return?getattr(module,?function_name)
print(?repr(getfunctionbyname("dbm",?"open"))?)
在這段代碼里,通過(guò)open字符串的名稱獲取數(shù)據(jù)庫(kù)管理模塊dbm的open函數(shù)地址。
運(yùn)行之后,輸出如下:
=== RESTART: D:\work\csdn\python_Game1\example\builtin-import-example-2.py ===
function open at 0x00000226467B2BF8
用正則匹配
import?re
html?=?'''h3contact?us/h3
pcontact:?manager?wang/p
ptelephone:12345666/p
div?id="nav"
ul
lia?class="nav-first"?href="/"homepage/a/li
lia?href="/lista.php"111/a/li?
lia?href="/lista.php"222/a/li
lia?href="/order/setorder.php"333/a/li
lia?href="/what/cool/ista.php"444/a/li
/ul
/div'''
urls?=?re.findall('href=.*?',?html)??#?正則出a鏈接?href
urlList?=?[]??#?定義urlList
for?url?in?urls:
url?=?url.replace("href=\"",?'')??#?替換href="
urlList.append(url[:-2])??#?獲取的0到-2長(zhǎng)度的字符串
print(urlList)
輸出:
['/',?'/lista.php',?'/lista.php',?'/order/setorder.php',?'/what/cool/ista.php']
selenium + phantomjs 模擬點(diǎn)擊按鈕,或者另寫(xiě)代碼實(shí)現(xiàn)js函數(shù)openVideo();
順著第一步再去解析新頁(yè)面,看看能否找到視頻的原始地址;
假設(shè)視頻的原始地址第二步找到了,在通過(guò)視頻的原始地址下載視頻就OK啦。
在 Python 中,可以使用 id() 函數(shù)來(lái)獲取對(duì)象的內(nèi)存地址,包括函數(shù)對(duì)象。因此,要表示一個(gè)函數(shù)的地址,可以使用以下代碼:
python
def my_func():
pass
# 獲取 my_func 函數(shù)的地址
func_address = id(my_func)
print(func_address) # 輸出一個(gè)整數(shù),代表 my_func 函數(shù)的地址
注意,每次程序執(zhí)行時(shí),函數(shù)對(duì)象所在的內(nèi)存地址可能不同,因此同一個(gè)函數(shù)的地址也可能不同。因此,如果需要在不同的程序運(yùn)行中比較函數(shù)地址,最好使用 functools.cmp_to_key() 函數(shù)來(lái)比較函數(shù)的 id 值。例如:
python
import functools
def my_func():
pass
# 獲取 my_func 函數(shù)的地址
func_address = id(my_func)
# 定義一個(gè)比較函數(shù),用于根據(jù)函數(shù)地址比較兩個(gè)函數(shù)的大小
cmp_func = functools.cmp_to_key(lambda x, y: id(x) - id(y))
# 比較 my_func 和另一個(gè)函數(shù)的地址大小
if cmp_func(my_func, other_func) 0:
print("my_func 的地址比 other_func 小")
else:
print("my_func 的地址比 other_func 大")