簡體   English   中英

我必須定義一個 python 函數,它返回 python 問題數據集中存在的所有內置 python 方法和函數的列表

[英]I have to define a python function that returns a list of all the inbuilt python methods and functions present in a dataset of python questions

我正在為學生處理 Python 問題的數據集。 數據集包含如下問題。

以下 Python 代碼的輸出是什么?

 x = 50 def func(): global x print('x is', x) x = 2 print('Changed global x to', x) func() print('Value of x is', x)

注意:我在這里用這種方式格式化了問題,但在數據集中,整個問題是一個大字符串,代碼和文本部分不是分開的

我必須生成一個列表,其中包含數據集中給出的問題中存在的所有內置 python 函數和方法。 對於上面給出的這個問題,應該返回一個只有一個像["print()"]這樣的元素的列表。 我必須將所有問題的數據集中使用的所有獨特功能組合到一個列表中。
然后,我必須使用這個函數列表來計算列表中所有函數在數據集的一個問題中出現的頻率。 我將遍歷整個數據集以獲取數據集中每個問題的信息。

以下是我面臨的問題。

  1. 如果我使用正則表達式在文本中查找函數,我還將獲得問題中用戶定義的函數func() ,但在數據集中的每個問題中,首先使用def關鍵字定義自定義函數。 如何利用它來發揮我的優勢並從內置函數中過濾掉用戶定義的函數?

  2. 我是正則表達式的新手,因此我想不出如何編寫一個強大的正則表達式函數,它將從文本中返回所有內置函數和方法。 注意:雖然函數在新行中調用或前面有空格,但方法的調用方式如下: list.append('a') 。這里我需要正則表達式來僅將 append()標識為方法而不是列表.append()

  1. 正如評論中所建議的,您可以使用__builtins__ dir(__builtins__)將為您提供所有內置對象的名稱列表。 您將需要該列表的下部,即函數所在的位置。

  2. 至於正則表達式......您可以按照(1)中的建議構建一個內置列表,然后在這樣的正則表達式中使用它:

import re

rex = re.compile(f"({'|'.join(builtins)})\s*\(")

這使用了函數名后面必須跟一個左括號這一事實。 您可以稍后在構建結果列表時添加右括號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM