作者HuangJC (吹笛牧童)
看板Python
标题[问题] 请问 /, * 出现在 parameter 里的意思
时间Mon Jan 30 16:37:31 2023
请教一下
def run(main, *, debug=False):
这个宣告我看不懂,要怎麽看?
我能理解这种宣告
def f1(a, *b):
这代表第一个参数是 a, 余下是 b, 而且会被存成 tuple 型式
但我不能理解只有一个 * 号,那又是什麽?
谢谢
1F:→ lycantrope: 单*以後的argument只能是keyword argument 01/30 12:50
没感觉耶。。。
只能再加一个 debug 参数而已,想加其他的都有问题
2F:→ lycantrope: 加*会限制debug只能用keyword传入function ..... 01/30 14:29
!! 真有这事,而且我也可以做这种定义
def __new__(cls, func, /, *args, **keywords):
还有除号也可以放在宣告里
这要在哪里找文件?
我 google 能力不行了 Orz
3F:推 timsheu: (*args, **kwargs),*是list,**是dict,上面人家写keyword 01/30 15:02
4F:→ timsheu: 查一下吧 01/30 15:03
你这两行我是知道的,但是纯一个星号的我却不知道
原来是'限制一定要'加上变数名
5F:推 timsheu: 应该是说*跟**都很像C pointer的写法,所以我是这样记 01/30 15:19
了不起,不看这个我根本找不到了!
7F:推 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) # 就像这样
8F:→ timsheu: wargs也是包含了所有keyword args,那你後面就不能再写 01/30 15:54
9F:→ timsheu: 打开python cli输入def f(*args, **kwargs, a, b, c): 01/30 15:55
10F:→ timsheu: enter会直接报错 01/30 15:55
11F:→ timsheu: python在定义args的时候会需要注意顺序性 01/30 15:57
你这段我也都知道,但这次真的不是说这个
有些事很像很像,但真的不一样
你在讲的是
def f1(*a):
我在讲的是
def f1(*, a, b):
一个是星号後接一个变数名
一个是只有星号,没有变数名
前者非常多网友写网页说明
後者我今天才见到。
12F:推 timsheu: 官方文件现在大多也都有中文了 01/30 16:00
有了,在 4.8.3 节有说明
至於你那两行,我在蛮多地方都有看到网友说明
不过还是官方文件好,有系统性说明,不会挂万漏一
14F:→ timsheu: 那叫spec,不是limitation. 01/30 16:20
我在查找的这段规格,它是在形容一种限制
15F:推 andy19960407: 怎一堆不懂装懂 01/31 03:04
别这麽说,不管谁都是比上不足,以下有余
只要可以互补就有收获
能真心听懂在讲什麽,能给资讯,都是帮手
我在前公司被年轻人电,因为他会我不懂的东西
就算五年前不被电,五年後我还是要被电
因为我会老。。。 会体力不如年轻人
(我还是有比他强的部份,但他在他行的部份要电我,我无法拒绝 XD)
就互相体谅吧,这个修罗道场啊~
16F:推 Tylerastro: 推心态,我也第一次看到,其实stackoverflow上也有问 01/31 12:26
17F:→ Tylerastro: 过,也许下次用英文查很快就找得到答案? 01/31 12:27
我偶尔想到会试英文
这次关键字要用 'plain star'
用 python star parameter 查不到,一堆像 *abc 这种会被查出来
但只有 * 没有变数名称怎麽查?我又用 star only 也查不到
最後查到了,看到字眼写 'plain star'
傻眼,我英文没那麽好,不知道 plain 是这个意思
18F:→ Tylerastro: 我是用python star/slash argument,有时候未知的的确 01/31 23:16
19F:→ Tylerastro: 难翻英文 01/31 23:16
我是在知道有 *,不知道有 / 的情况下搜寻,所以不会加上 slash XD
资讯少一点就不好找了
20F:嘘 s860134: 买本书 精通python3 有中文 02/01 01:34
但纸本书没有搜寻能力,如果在网路上的网友会挂万漏一
就不知纸本书会不会挂万漏一
※ 编辑: HuangJC (49.217.70.24 台湾), 02/01/2023 09:03:59
21F:推 YR000: *arg或是*b ,*号後面的arg还有b都只是名称而已,可加可不 02/02 12:11
22F:→ YR000: 加 02/02 12:11