[問題] 請問 /, * 出現在 parameter 裡的意思

看板Python作者 (吹笛牧童)時間1年前 (2023/01/30 16:37), 1年前編輯推噓6(7114)
留言22則, 6人參與, 1年前最新討論串1/1
請教一下 def run(main, *, debug=False): 這個宣告我看不懂,要怎麼看? 我能理解這種宣告 def f1(a, *b): 這代表第一個參數是 a, 餘下是 b, 而且會被存成 tuple 型式 但我不能理解只有一個 * 號,那又是什麼? 謝謝

01/30 12:50, 1年前 , 1F
單*以後的argument只能是keyword argument
01/30 12:50, 1F
沒感覺耶。。。 只能再加一個 debug 參數而已,想加其他的都有問題

01/30 14:29, 1年前 , 2F
加*會限制debug只能用keyword傳入function .....
01/30 14:29, 2F
!! 真有這事,而且我也可以做這種定義 def __new__(cls, func, /, *args, **keywords): 還有除號也可以放在宣告裡 這要在哪裡找文件? 我 google 能力不行了 Orz

01/30 15:02, 1年前 , 3F
(*args, **kwargs),*是list,**是dict,上面人家寫keyword
01/30 15:02, 3F

01/30 15:03, 1年前 , 4F
查一下吧
01/30 15:03, 4F
你這兩行我是知道的,但是純一個星號的我卻不知道 原來是'限制一定要'加上變數名

01/30 15:19, 1年前 , 5F
應該是說*跟**都很像C pointer的寫法,所以我是這樣記
01/30 15:19, 5F

01/30 15:26, 1年前 , 6F
了不起,不看這個我根本找不到了!

01/30 15:54, 1年前 , 7F
不是限制,是*args已經包含了所有positional args,同理**k
01/30 15:54, 7F
是限制,你花點時間試吧! def f1(*, a, b): print(a + b) f1(5, 6) # 這行是錯的,因為 a, b 兩個參數,已被限制一定要加上變數名 f1(a=5, b=6) # 就像這樣

01/30 15:54, 1年前 , 8F
wargs也是包含了所有keyword args,那你後面就不能再寫
01/30 15:54, 8F

01/30 15:55, 1年前 , 9F
打開python cli輸入def f(*args, **kwargs, a, b, c):
01/30 15:55, 9F

01/30 15:55, 1年前 , 10F
enter會直接報錯
01/30 15:55, 10F

01/30 15:57, 1年前 , 11F
python在定義args的時候會需要注意順序性
01/30 15:57, 11F
你這段我也都知道,但這次真的不是說這個 有些事很像很像,但真的不一樣 你在講的是 def f1(*a): 我在講的是 def f1(*, a, b): 一個是星號後接一個變數名 一個是只有星號,沒有變數名 前者非常多網友寫網頁說明 後者我今天才見到。

01/30 16:00, 1年前 , 12F
官方文件現在大多也都有中文了
01/30 16:00, 12F

01/30 16:00, 1年前 , 13F
有了,在 4.8.3 節有說明 至於你那兩行,我在蠻多地方都有看到網友說明 不過還是官方文件好,有系統性說明,不會掛萬漏一

01/30 16:20, 1年前 , 14F
那叫spec,不是limitation.
01/30 16:20, 14F
我在查找的這段規格,它是在形容一種限制

01/31 03:04, 1年前 , 15F
怎一堆不懂裝懂
01/31 03:04, 15F
別這麼說,不管誰都是比上不足,以下有餘 只要可以互補就有收獲 能真心聽懂在講什麼,能給資訊,都是幫手 我在前公司被年輕人電,因為他會我不懂的東西 就算五年前不被電,五年後我還是要被電 因為我會老。。。 會體力不如年輕人 (我還是有比他強的部份,但他在他行的部份要電我,我無法拒絕 XD) 就互相體諒吧,這個修羅道場啊~

01/31 12:26, 1年前 , 16F
推心態,我也第一次看到,其實stackoverflow上也有問
01/31 12:26, 16F

01/31 12:27, 1年前 , 17F
過,也許下次用英文查很快就找得到答案?
01/31 12:27, 17F
我偶爾想到會試英文 這次關鍵字要用 'plain star' 用 python star parameter 查不到,一堆像 *abc 這種會被查出來 但只有 * 沒有變數名稱怎麼查?我又用 star only 也查不到 最後查到了,看到字眼寫 'plain star' 傻眼,我英文沒那麼好,不知道 plain 是這個意思

01/31 23:16, 1年前 , 18F
我是用python star/slash argument,有時候未知的的確
01/31 23:16, 18F

01/31 23:16, 1年前 , 19F
難翻英文
01/31 23:16, 19F
我是在知道有 *,不知道有 / 的情況下搜尋,所以不會加上 slash XD 資訊少一點就不好找了

02/01 01:34, 1年前 , 20F
買本書 精通python3 有中文
02/01 01:34, 20F
但紙本書沒有搜尋能力,如果在網路上的網友會掛萬漏一 就不知紙本書會不會掛萬漏一 ※ 編輯: HuangJC (49.217.70.24 臺灣), 02/01/2023 09:03:59

02/02 12:11, 1年前 , 21F
*arg或是*b ,*號後面的arg還有b都只是名稱而已,可加可不
02/02 12:11, 21F

02/02 12:11, 1年前 , 22F
02/02 12:11, 22F
文章代碼(AID): #1Zru7EX2 (Python)
文章代碼(AID): #1Zru7EX2 (Python)