teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

Update

2021/11/14 12:31

投稿

melian
melian

スコア21265

answer CHANGED
@@ -7,19 +7,25 @@
7
7
  import re
8
8
  import inspect
9
9
 
10
+ my_name = inspect.currentframe().f_code.co_name
10
- callers_name = inspect.stack()[-1].code_context[0].strip()
11
+ callers_name = inspect.stack()[-1].code_context[0]
11
- callers_name = re.sub(r'^.*?(?<=()\s*(.+?)\s*,.*', r'\1', callers_name)
12
+ callers_name = re.findall(rf'\s*{my_name}\s*(\s*(.+?)\s*,', callers_name)
13
+ if callers_name:
14
+ callers_name = callers_name[0]
15
+ else:
16
+ return
17
+
12
18
  if callers_name in globals():
13
19
  globals()[callers_name] += value
14
20
 
15
21
  if __name__ == '__main__':
16
- global_variable = 3
22
+ global_variable = 3
17
- print(f'before = {global_variable}')
23
+ print(f'before = {global_variable}')
18
24
 
19
- arbitrary_add(global_variable, 1)
25
+ arbitrary_add(global_variable, 1)
20
- print(f' after = {global_variable}')
26
+ print(f' after = {global_variable}')
21
-
27
+
22
- _ = '''
28
+ _ = '''
23
29
  before = 3
24
30
  after = 4
25
31
  '''

1

Update

2021/11/14 12:31

投稿

melian
melian

スコア21265

answer CHANGED
@@ -7,8 +7,6 @@
7
7
  import re
8
8
  import inspect
9
9
 
10
- f = inspect.currentframe()
11
- v = inspect.getargvalues(f)
12
10
  callers_name = inspect.stack()[-1].code_context[0].strip()
13
11
  callers_name = re.sub(r'^.*?(?<=()\s*(.+?)\s*,.*', r'\1', callers_name)
14
12
  if callers_name in globals():