看板 Python 關於我們 聯絡資訊
請教一下 def run(main, *, debug=False): 這個宣告我看不懂,要怎麼看? 我能理解這種宣告 def f1(a, *b): 這代表第一個參數是 a, 餘下是 b, 而且會被存成 tuple 型式 但我不能理解只有一個 * 號,那又是什麼? 謝謝
lycantrope: 單*以後的argument只能是keyword argument 01/30 12:50
沒感覺耶。。。 只能再加一個 debug 參數而已,想加其他的都有問題
lycantrope: 加*會限制debug只能用keyword傳入function ..... 01/30 14:29
!! 真有這事,而且我也可以做這種定義 def __new__(cls, func, /, *args, **keywords): 還有除號也可以放在宣告裡 這要在哪裡找文件? 我 google 能力不行了 Orz
timsheu: (*args, **kwargs),*是list,**是dict,上面人家寫keyword 01/30 15:02
timsheu: 查一下吧 01/30 15:03
你這兩行我是知道的,但是純一個星號的我卻不知道 原來是'限制一定要'加上變數名
timsheu: 應該是說*跟**都很像C pointer的寫法,所以我是這樣記 01/30 15:19
lycantrope: https://youtu.be/R8-oAqCgHag 01/30 15:26
了不起,不看這個我根本找不到了!
timsheu: 不是限制,是*args已經包含了所有positional args,同理**k 01/30 15:54
是限制,你花點時間試吧! def f1(*, a, b): print(a + b) f1(5, 6) # 這行是錯的,因為 a, b 兩個參數,已被限制一定要加上變數名 f1(a=5, b=6) # 就像這樣
timsheu: wargs也是包含了所有keyword args,那你後面就不能再寫 01/30 15:54
timsheu: 打開python cli輸入def f(*args, **kwargs, a, b, c): 01/30 15:55
timsheu: enter會直接報錯 01/30 15:55
timsheu: python在定義args的時候會需要注意順序性 01/30 15:57
你這段我也都知道,但這次真的不是說這個 有些事很像很像,但真的不一樣 你在講的是 def f1(*a): 我在講的是 def f1(*, a, b): 一個是星號後接一個變數名 一個是只有星號,沒有變數名 前者非常多網友寫網頁說明 後者我今天才見到。
timsheu: 官方文件現在大多也都有中文了 01/30 16:00
有了,在 4.8.3 節有說明 至於你那兩行,我在蠻多地方都有看到網友說明 不過還是官方文件好,有系統性說明,不會掛萬漏一
timsheu: 那叫spec,不是limitation. 01/30 16:20
我在查找的這段規格,它是在形容一種限制
andy19960407: 怎一堆不懂裝懂 01/31 03:04
別這麼說,不管誰都是比上不足,以下有餘 只要可以互補就有收獲 能真心聽懂在講什麼,能給資訊,都是幫手 我在前公司被年輕人電,因為他會我不懂的東西 就算五年前不被電,五年後我還是要被電 因為我會老。。。 會體力不如年輕人 (我還是有比他強的部份,但他在他行的部份要電我,我無法拒絕 XD) 就互相體諒吧,這個修羅道場啊~
Tylerastro: 推心態,我也第一次看到,其實stackoverflow上也有問 01/31 12:26
Tylerastro: 過,也許下次用英文查很快就找得到答案? 01/31 12:27
我偶爾想到會試英文 這次關鍵字要用 'plain star' 用 python star parameter 查不到,一堆像 *abc 這種會被查出來 但只有 * 沒有變數名稱怎麼查?我又用 star only 也查不到 最後查到了,看到字眼寫 'plain star' 傻眼,我英文沒那麼好,不知道 plain 是這個意思
Tylerastro: 我是用python star/slash argument,有時候未知的的確 01/31 23:16
Tylerastro: 難翻英文 01/31 23:16
我是在知道有 *,不知道有 / 的情況下搜尋,所以不會加上 slash XD 資訊少一點就不好找了
s860134: 買本書 精通python3 有中文 02/01 01:34
但紙本書沒有搜尋能力,如果在網路上的網友會掛萬漏一 就不知紙本書會不會掛萬漏一 ※ 編輯: HuangJC (49.217.70.24 臺灣), 02/01/2023 09:03:59
YR000: *arg或是*b ,*號後面的arg還有b都只是名稱而已,可加可不 02/02 12:11
YR000: 加 02/02 12:11