我要初始化一个 python 对象,但是有很多个参数.
1.可以按照顺序放进去,比如 person(a,b,c,d,e,f,g),而这些参数是需要我计算的, 所以我需要这样写 person(func(1),func(2),func(3)...).
2.所以有没有什么方法来简化这个代码, 比如可以在里面写个循环之类的几个语句把所有的参数都放进去了.
3.另,不用 args 或者 kwargs。说的有点乱,大家将就一下看吧...
1
HelloAmadeus 2018-09-04 10:32:51 +08:00 1
用装饰器解决
|
2
mikefy OP @HelloAmadeus 学艺不精啊, 大佬能说细一点吗?
|
3
huaerxiela 2018-09-04 10:45:26 +08:00 1
params = [func(i) for i in range(1, 7)]
person(*params) 是这个意思吗你 |
4
mikefy OP @huaerxiela 嗯嗯, 这确实是一个办法!赞一个, 楼上说的装饰器你了解吗?
|
5
huaerxiela 2018-09-04 10:55:15 +08:00
@mikefy 至于他说的装饰器,如果我没理解错你的需求的话,个人并不认为这个地方该装饰器发挥
|
6
alvin666 2018-09-04 11:07:27 +08:00 via Android 1
三楼不就是 arg 吗...(小声逼逼)
另外装饰器这里用不到,不过别的地方挺有用的,lz 可以看看 |
7
morefreeze 2018-09-04 11:11:07 +08:00 1
你如果参数都是经过同一个 func 函数,为什么直接把参数传进去,比如传个 person([1..3]) 这样,进去后再依次调用 map(func, arg)
如果每个参数的函数不同,那你必然要写个 a1=func1(1), a2=func2(2) 这是跑不掉的,你放哪也得这么写,没什么好省的 或者你先用笨办法写,哪里出现了重复再着手去简化,现在从题面上看都是 func,那只要传 func 的参数们就好了 |
8
huaerxiela 2018-09-04 11:11:07 +08:00
@alvin666 大声三五瓶呀
|
9
xiaket 2018-09-04 11:16:34 +08:00 1
写一个类方法, 在里面接受一群参数, 最后给一个实例出来
|
10
mikefy OP |
11
mikefy OP @morefreeze 原来方法有那么多! 请收下我的膝盖!
|
12
huaerxiela 2018-09-04 11:30:38 +08:00
@mikefy 这部分是基础你多多巩固才行,还有一些高阶函数,高效编程技巧都是需要了解的,哪怕去百度谷歌也要有个快捷切入点不是
|
13
mikefy OP @huaerxiela 是啊, 正在做小功能呢, 基础估计要重新巩固下
|
14
zhzer 2018-09-04 13:05:38 +08:00
闭包呗
|
15
d18 2018-09-04 14:13:59 +08:00
让 func 能接收多个参数,然后结果也返回多个,person(*func(1,2,3,4))。
不过好像都差不多......其实不用太纠结这些语法技巧,意义不大。 |
16
jiangbingo 2018-09-04 17:27:36 +08:00
1 形成可迭代参数表,传入解包
2 map(func, arg list) |