顯示具有 Python 教學 標籤的文章。 顯示所有文章
顯示具有 Python 教學 標籤的文章。 顯示所有文章

2022年4月6日 星期三

Python 基礎:set 用法與範例

之前介紹了幾個函式相關的主題,

函式入門、函式的引數等,

更早以前也有提過關於 Python 的基本資料型態,

今天要來介紹的是

Python 基礎:set 用法與範例

set 屬於無序序列,

也就是排列順序不固定,

但是各元素並不重複出現在 set 中,

以大括號 {}包住各元素並以逗號隔開


set 新增刪除

set要新增刪除元素可透過

add 與 remove 來達成

例如:

b = set()
b.add(3)
b.remove(3)

特別要注意的是宣告空集合的時候,

使用的是 set() 而不是 set{}


交集 ( intersection )

兩個 set 的交集可使用 intersection ,

也能夠使用 & 做為交集


聯集 ( union )

兩個 set 的聯集可使用 union,

也能使用 | 做為聯集

差集 ( difference )

兩個 set 的差集可使用 difference,

也能夠使用 - 做為差集

這邊使用之前提到過的 Python tutor 作範例:


以上就是今天的主題,

Python 基礎:set 用法與範例

set 的用法不難,

只要多練習幾次,

熟悉了就是屬於自己的。





2022年3月18日 星期五

Python 內建函式 exec與 eval的差異

之前介紹過 Python 的函式入門,

那屬於使用者自訂的函式,

其實 Python 內建有許多函式可用,

這就是今天要來談的主題

Python 內建函式 exec與 eval的差異

exec 與 eval 兩者非常的相似,

用法上也很雷同,

其後可以帶兩個以字典表示的廣域變數與區域變數作為參數

範例程式碼如下:


    """eval 與 exec"""
    a = 1
    b = 2

    exec('print(int(a)+int(b))', {'a': '2', 'b': '3'})
    print(a, b)
    eval('print(int(a)+int(b))', {'a': '4', 'b': '5'})
    print(a, b)

    print(exec(input('please enter :')))
    print(eval(input('please enter :')))


使用 help() 分別查詢 exec與eval 兩者,

說明上大同小異


上面的範例程式執行的結果可以發現,

同樣執行 a+b 都不影響原本 a與b 的初始值

a = 1
b = 2

那為何要多此一舉,

不直接寫 Python 的程式碼呢?

這是因為 exec與eval 兩者,

能夠以動態方式執行使用者自訂的程式碼,

若將範例程式碼寫成文字檔丟給 Python 程式讀取,

不就能達到動態修改並執行程式碼了,

不過相對的也造成了部分的安全性問題。


不過在範例程式中讓使用者輸入執行的運算時,

可以看到 exec 的執行結果為 None ,

這是由於 exec 並不回傳執行的結果,

而 eval 能將運算結果傳回,

這就是兩者很顯著的差異,

以上就是今天要介紹的主題

Python 內建函式 exec與 eval的差異