
我要初始化一个 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 用装饰器解决 |
2 mikefy OP @HelloAmadeus 学艺不精啊, 大佬能说细一点吗? |
3 huaerxiela 2018-09-04 10:45:26 +08:00 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 三楼不就是 arg 吗...(小声逼逼) 另外装饰器这里用不到,不过别的地方挺有用的,lz 可以看看 |
7 morefreeze 2018-09-04 11:11:07 +08:00 你如果参数都是经过同一个 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 写一个类方法, 在里面接受一群参数, 最后给一个实例出来 |
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) |