字串變為函式

2021-10-08 03:10:50 字數 1149 閱讀 4762

今天看到一段**,在一字典中有個字段為gt,gte,lt,lte,然後根據此欄位進行判斷,例子**如下:

dict_test1 = 

dict_test2 =

dict_test3 =

# 需要對最後的rule進行判斷,然後判斷前面a,b誰更大,然後進行其他流程操作

if dict_test1['rule'] == "gt":

if a > b :

control(1)

else:

control(2)

elif dict_test1['rule'] == "gte":

if a >= b :

control(1)

else:

control(2)

elif dict_test1['rule'] == "lte":

if a <= b :

control(1)

else:

control(1)

elif dict_test1['rule'] == "lt":

if a < b :

control(1)

else:

control(2)

看到這樣的**,感覺太麻煩了,特別是如果第二層判斷後,如果**重複,那完全就是消耗效能,以及冗餘的**。

優化後:

from operator import lt, gt, ge, le

dict_test1 =

dict_test2 =

dict_test3 =

dict_test4 =

if locals()[dict_test1["rule"]](a,b):

print("a", dict_test1["rule"], "b")

pass

else:

pass

主要優化:1 將rule中的gte,lte需要改為le(小於等於),ge(大於等於)

2 多個步驟優化成乙個,自動進行判斷。無需其他

注意點:

需要提前將相關函式import進來

轉化方式:locals()[func](**arg)

通過globals 也是可以的,看個人需求,方式和locals一樣

cell陣列變為字串 cell轉字串

如果s是乙個cell如下 s 3 1 cell 陣列 j 北jing nan 方法一 s返回字串 s 2 返回cell型別,s返回string型別 s 2 ans cell 北jing s ans 北jing 方法二 a char s char是將cell字串陣列轉化為字元陣列 前提 先把 nan ...

C 將字串變為數字

如果是 123 這種的,大概只要直接利用數字的asii碼來相減就可以了 string str 123 int num 0 for auto s str 但是 100 這種,怎麼直接換為數字?用atoi來將字元陣列轉換為數字,atoi這個函式可以pass掉那些空格 並且可以加號和負號一同變為數字。這樣...

字串和字串函式

字元輸入輸出 getchar putchar ch getchar putchar ch 字串函式 字串輸入 建立儲存空間 接受字串輸入首先需要建立乙個空間來存放輸入的字串。char name scanf s name 上述的用法可能會導致程式異常終止。使用字串陣列 可以避免上述問題 char na...