今天看到一段**,在一字典中有個字段為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...